From fbbe1dd3a3e234fdfd3c4de6d11eb4b18457962e Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:48:15 +0100 Subject: [PATCH 01/22] feat: update project.json From df4ac109b2c16f5a16f3a21942d0e025556e0e78 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:48:18 +0100 Subject: [PATCH 02/22] feat: update org.gluu.agama.pw.basic.json --- code/org.gluu.agama.pw.basic.json | 168 ++++++++++++++++-------------- 1 file changed, 88 insertions(+), 80 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.json b/code/org.gluu.agama.pw.basic.json index b56a447..5be35a7 100644 --- a/code/org.gluu.agama.pw.basic.json +++ b/code/org.gluu.agama.pw.basic.json @@ -5,8 +5,8 @@ "height": 124, "id": "finish-952209ff-d70c-46af-a52c-88e51a530bb9", "position": { - "x": 1690.6600763622844, - "y": 666.204415551658 + "x": 1837.326743028951, + "y": 648.8710822183248 }, "type": "finish", "data": { @@ -17,8 +17,8 @@ "inRepeatBlock": true, "handles": [], "position": { - "x": 1690.6600763622844, - "y": 666.204415551658 + "x": 1837.326743028951, + "y": 648.8710822183248 }, "agamaData": { "id": "finish-952209ff-d70c-46af-a52c-88e51a530bb9", @@ -39,8 +39,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 1690.6600763622844, - "y": 666.204415551658 + "x": 1837.326743028951, + "y": 648.8710822183248 } }, { @@ -48,8 +48,8 @@ "height": 124, "id": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", "position": { - "x": 1466.6600763622844, - "y": 666.204415551658 + "x": 1554.6600763622846, + "y": 651.5377488849914 }, "type": "log", "data": { @@ -59,8 +59,8 @@ "whenCondition": "WhenTrue", "inRepeatBlock": true, "position": { - "x": 1466.6600763622844, - "y": 666.204415551658 + "x": 1554.6600763622846, + "y": 651.5377488849914 }, "agamaData": { "id": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", @@ -79,8 +79,8 @@ }, "selected": false, "positionAbsolute": { - "x": 1466.6600763622844, - "y": 666.204415551658 + "x": 1554.6600763622846, + "y": 651.5377488849914 }, "dragging": false }, @@ -89,8 +89,8 @@ "height": 124, "id": "Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c", "position": { - "x": 1796.2653326959337, - "y": 382.2044155516581 + "x": 1904.2653326959337, + "y": 378.2044155516581 }, "type": "assignment", "data": { @@ -100,8 +100,8 @@ "whenCondition": "", "inRepeatBlock": true, "position": { - "x": 1796.2653326959337, - "y": 382.2044155516581 + "x": 1904.2653326959337, + "y": 378.2044155516581 }, "agamaData": { "id": "Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c", @@ -124,8 +124,8 @@ "skake": false }, "positionAbsolute": { - "x": 1796.2653326959337, - "y": 382.2044155516581 + "x": 1904.2653326959337, + "y": 378.2044155516581 }, "selected": false, "dragging": false @@ -135,8 +135,8 @@ "height": 124, "id": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", "position": { - "x": 1596.2653326959337, - "y": 382.2044155516581 + "x": 1676.2653326959337, + "y": 379.53774888499134 }, "type": "log", "data": { @@ -146,8 +146,8 @@ "whenCondition": "WhenFalse", "inRepeatBlock": true, "position": { - "x": 1596.2653326959337, - "y": 382.2044155516581 + "x": 1676.2653326959337, + "y": 379.53774888499134 }, "agamaData": { "id": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", @@ -165,8 +165,8 @@ "skake": false }, "positionAbsolute": { - "x": 1596.2653326959337, - "y": 382.2044155516581 + "x": 1676.2653326959337, + "y": 379.53774888499134 }, "selected": false, "dragging": false @@ -199,11 +199,11 @@ }, { "width": 270, - "height": 68, + "height": 55, "id": "Agama-note-9d4c0655-6461-4fff-acf7-a715914966e6", "position": { - "x": 1113.2199280202456, - "y": 300.8626499604078 + "x": 1318.5532613535788, + "y": 302.19598329374105 }, "type": "notes", "data": { @@ -211,15 +211,15 @@ "type": "Agama-note", "notes": "Here, we send the user credentials to the IDP for validation. The IDP will return true or false.", "position": { - "x": 1113.2199280202456, - "y": 300.8626499604078 + "x": 1318.5532613535788, + "y": 302.19598329374105 }, "skake": false }, "selected": false, "positionAbsolute": { - "x": 1113.2199280202456, - "y": 300.8626499604078 + "x": 1318.5532613535788, + "y": 302.19598329374105 }, "dragging": false }, @@ -228,8 +228,8 @@ "height": 55, "id": "Agama-note-a41d2d71-281a-43ac-bc3a-7f4111ead933", "position": { - "x": 661.238609584755, - "y": 315.7897466540162 + "x": 857.238609584755, + "y": 327.7897466540162 }, "type": "notes", "data": { @@ -237,15 +237,15 @@ "type": "Agama-note", "notes": "This show the login form so that the user can fill in the credentials.", "position": { - "x": 661.238609584755, - "y": 315.7897466540162 + "x": 857.238609584755, + "y": 327.7897466540162 }, "skake": false }, - "selected": false, + "selected": true, "positionAbsolute": { - "x": 661.238609584755, - "y": 315.7897466540162 + "x": 857.238609584755, + "y": 327.7897466540162 }, "dragging": false }, @@ -276,12 +276,12 @@ "dragging": false }, { - "width": 210, - "height": 140, + "width": 110, + "height": 60, "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", "position": { - "x": 1347.6600763622844, - "y": 436.2044155516581 + "x": 182.3267430289509, + "y": 57.53774888499174 }, "parentId": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", "type": "when", @@ -292,8 +292,8 @@ "whenCondition": "", "inRepeatBlock": true, "position": { - "x": 1347.6600763622844, - "y": 436.2044155516581 + "x": 182.3267430289509, + "y": 57.53774888499174 }, "agamaData": { "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", @@ -308,7 +308,15 @@ "hasSuccess": true, "hasFailure": "", "hasNoRepeat": false, - "hasRepeat": false + "hasRepeat": false, + "conditions": [ + { + "variable": "validationResult.status", + "operator": "is", + "dataValue": "true", + "combinator": "none" + } + ] }, "handles": [ "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.FAILURE", @@ -319,8 +327,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 1347.6600763622844, - "y": 436.2044155516581 + "x": 1556.736205342082, + "y": 441.2120708913553 } }, { @@ -328,8 +336,8 @@ "height": 124, "id": "finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee", "position": { - "x": 893, - "y": 32 + "x": 1239.6666666666667, + "y": 17.333333333333314 }, "type": "finish", "data": { @@ -343,8 +351,8 @@ "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InRepeatBlock" ], "position": { - "x": 893, - "y": 32 + "x": 1239.6666666666667, + "y": 17.333333333333314 }, "agamaData": { "id": "finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee", @@ -365,8 +373,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 893, - "y": 32 + "x": 1239.6666666666667, + "y": 17.333333333333314 } }, { @@ -374,8 +382,8 @@ "height": 124, "id": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", "position": { - "x": 729.0319864854259, - "y": 383.8427106910198 + "x": 923.6986531520927, + "y": 391.8427106910198 }, "type": "rrf", "data": { @@ -385,8 +393,8 @@ "whenCondition": "", "inRepeatBlock": true, "position": { - "x": 729.0319864854259, - "y": 383.8427106910198 + "x": 923.6986531520927, + "y": 391.8427106910198 }, "agamaData": { "id": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", @@ -414,8 +422,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 729.0319864854259, - "y": 383.8427106910198 + "x": 923.6986531520927, + "y": 391.8427106910198 } }, { @@ -557,8 +565,8 @@ "height": 124, "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", "position": { - "x": 630.9054113045619, - "y": 29.28302237599209 + "x": 454.90541130456177, + "y": -6.716977624007882 }, "type": "repeat", "data": { @@ -572,8 +580,8 @@ "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InRepeatBlock" ], "position": { - "x": 630.9054113045619, - "y": 29.28302237599209 + "x": 454.90541130456177, + "y": -6.716977624007882 }, "agamaData": { "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", @@ -595,8 +603,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 630.9054113045619, - "y": 29.28302237599209 + "x": 884.9054113045618, + "y": 23.283022375992118 }, "parentId": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", "whenCondition": "", @@ -607,8 +615,8 @@ "height": 124, "id": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", "position": { - "x": 931.8214738181268, - "y": 385.23745435737015 + "x": 1139.8214738181266, + "y": 382.5707876907034 }, "type": "log", "data": { @@ -618,8 +626,8 @@ "whenCondition": "", "inRepeatBlock": true, "position": { - "x": 931.8214738181268, - "y": 385.23745435737015 + "x": 1139.8214738181266, + "y": 382.5707876907034 }, "agamaData": { "id": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", @@ -639,8 +647,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 931.8214738181268, - "y": 385.23745435737015 + "x": 1139.8214738181266, + "y": 382.5707876907034 } }, { @@ -648,8 +656,8 @@ "height": 124, "id": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", "position": { - "x": 1130.5879884950043, - "y": 383.7702009823267 + "x": 234.58798849500454, + "y": 1.1035343156601698 }, "type": "call", "data": { @@ -659,8 +667,8 @@ "whenCondition": "", "inRepeatBlock": "", "position": { - "x": 1130.5879884950043, - "y": 383.7702009823267 + "x": 234.58798849500454, + "y": 1.1035343156601698 }, "agamaData": { "id": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", @@ -691,8 +699,8 @@ "selected": false, "dragging": false, "positionAbsolute": { - "x": 1130.5879884950043, - "y": 383.7702009823267 + "x": 1374.4094623131311, + "y": 383.6743220063636 }, "parentId": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", "whenCondition": "", @@ -963,8 +971,8 @@ } ], "viewport": { - "x": 64.52158794806428, - "y": 98.85036862104027, - "zoom": 0.7169776240079136 + "x": -22, + "y": 85, + "zoom": 0.75 } } \ No newline at end of file From e8bfe1dc87a9a7237b82886bce1ce58e90219df9 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:48:19 +0100 Subject: [PATCH 03/22] feat: update org.gluu.agama.pw.basic.flow --- code/org.gluu.agama.pw.basic.flow | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.flow b/code/org.gluu.agama.pw.basic.flow index edf9fcf..b340d70 100644 --- a/code/org.gluu.agama.pw.basic.flow +++ b/code/org.gluu.agama.pw.basic.flow @@ -7,7 +7,7 @@ validationResult = {} // Get an instance of PasswordService Class passwordValidationService = Call org.gluu.agama.pw.basic.PasswordService#getInstance // Iterate x times max -Repeat 3 times max +currentIteration = Repeat 3 times max // Retrieve user credentials from UI credentials = RRF "login-basic.ftlh" validationResult // Log the successfull used credentials retrieval. @@ -19,12 +19,12 @@ Repeat 3 times max // add entry in log file for successfull login attempt Log "@info Valid credentials provided." // Password validation completed successfuly! - it_ehffp = {success:true, data: { userId: credentials.username}} - Finish it_ehffp + it_zvuri = {success:true, data: { userId: credentials.username}} + Finish it_zvuri // Invalid credentials provided Log "@info Invalid credentials provided." // Provide feedback about the error message to user validationResult.errorMessage = "The provided credentials are not valid. Please try again!" // Maximum attempts reached. Password validation failed! -it_tsxgd = {success:false, error: "Password validation failed!"} -Finish it_tsxgd \ No newline at end of file +it_yophk = {success:false, error: "Password validation failed!"} +Finish it_yophk \ No newline at end of file From 4810b6e066253087383076d25ac356b1bfabb038 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:53:25 +0100 Subject: [PATCH 04/22] feat: update project.json From 08b26aac699cac655031248df5d0beead344dd1d Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:53:28 +0100 Subject: [PATCH 05/22] feat: update org.gluu.agama.pw.basic.json From 8aa488bccee7ce41a7759736ac44e489c24537d6 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:53:29 +0100 Subject: [PATCH 06/22] feat: update org.gluu.agama.pw.basic.flow --- code/org.gluu.agama.pw.basic.flow | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.flow b/code/org.gluu.agama.pw.basic.flow index b340d70..5d05b50 100644 --- a/code/org.gluu.agama.pw.basic.flow +++ b/code/org.gluu.agama.pw.basic.flow @@ -19,12 +19,12 @@ currentIteration = Repeat 3 times max // add entry in log file for successfull login attempt Log "@info Valid credentials provided." // Password validation completed successfuly! - it_zvuri = {success:true, data: { userId: credentials.username}} - Finish it_zvuri + it_mjusf = {success:true, data: { userId: credentials.username}} + Finish it_mjusf // Invalid credentials provided Log "@info Invalid credentials provided." // Provide feedback about the error message to user validationResult.errorMessage = "The provided credentials are not valid. Please try again!" // Maximum attempts reached. Password validation failed! -it_yophk = {success:false, error: "Password validation failed!"} -Finish it_yophk \ No newline at end of file +it_jzbaz = {success:false, error: "Password validation failed!"} +Finish it_jzbaz \ No newline at end of file From 4f3d468312745bb3e5796d210acd458d2ebd1a04 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:53:54 +0100 Subject: [PATCH 07/22] feat: update project.json From dfbf066ebdb7874e808ed9d92940ab71400c2bc9 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:53:56 +0100 Subject: [PATCH 08/22] feat: update org.gluu.agama.pw.basic.json --- code/org.gluu.agama.pw.basic.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.json b/code/org.gluu.agama.pw.basic.json index 5be35a7..cfba575 100644 --- a/code/org.gluu.agama.pw.basic.json +++ b/code/org.gluu.agama.pw.basic.json @@ -242,7 +242,7 @@ }, "skake": false }, - "selected": true, + "selected": false, "positionAbsolute": { "x": 857.238609584755, "y": 327.7897466540162 @@ -280,8 +280,8 @@ "height": 60, "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", "position": { - "x": 182.3267430289509, - "y": 57.53774888499174 + "x": 159.66007636228437, + "y": 54.871082218325114 }, "parentId": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", "type": "when", @@ -292,8 +292,8 @@ "whenCondition": "", "inRepeatBlock": true, "position": { - "x": 182.3267430289509, - "y": 57.53774888499174 + "x": 159.66007636228437, + "y": 54.871082218325114 }, "agamaData": { "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", @@ -324,11 +324,11 @@ ], "skake": false }, - "selected": false, + "selected": true, "dragging": false, "positionAbsolute": { - "x": 1556.736205342082, - "y": 441.2120708913553 + "x": 1534.0695386754155, + "y": 438.5454042246887 } }, { From d10255d033cd8565493a60d30f25d0e40c89c134 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Tue, 16 Jul 2024 10:53:58 +0100 Subject: [PATCH 09/22] feat: update org.gluu.agama.pw.basic.flow --- code/org.gluu.agama.pw.basic.flow | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.flow b/code/org.gluu.agama.pw.basic.flow index 5d05b50..06fe22c 100644 --- a/code/org.gluu.agama.pw.basic.flow +++ b/code/org.gluu.agama.pw.basic.flow @@ -19,12 +19,12 @@ currentIteration = Repeat 3 times max // add entry in log file for successfull login attempt Log "@info Valid credentials provided." // Password validation completed successfuly! - it_mjusf = {success:true, data: { userId: credentials.username}} - Finish it_mjusf + it_iedei = {success:true, data: { userId: credentials.username}} + Finish it_iedei // Invalid credentials provided Log "@info Invalid credentials provided." // Provide feedback about the error message to user validationResult.errorMessage = "The provided credentials are not valid. Please try again!" // Maximum attempts reached. Password validation failed! -it_jzbaz = {success:false, error: "Password validation failed!"} -Finish it_jzbaz \ No newline at end of file +it_uqrga = {success:false, error: "Password validation failed!"} +Finish it_uqrga \ No newline at end of file From 22292bba151eba8896190000852571a6cb3a5db0 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 22 Nov 2024 11:03:33 +0100 Subject: [PATCH 10/22] feat: update project.json From 8dbf8d0b807940e757d9ced6ba8716dd8b6d6cf0 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 22 Nov 2024 11:03:35 +0100 Subject: [PATCH 11/22] refactor: update org.gluu.agama.pw.basic.json --- code/org.gluu.agama.pw.basic.json | 1151 +++++++++++------------------ 1 file changed, 414 insertions(+), 737 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.json b/code/org.gluu.agama.pw.basic.json index cfba575..6fc41f8 100644 --- a/code/org.gluu.agama.pw.basic.json +++ b/code/org.gluu.agama.pw.basic.json @@ -1,314 +1,270 @@ { "nodes": [ { - "width": 170, - "height": 124, - "id": "finish-952209ff-d70c-46af-a52c-88e51a530bb9", - "position": { - "x": 1837.326743028951, - "y": 648.8710822183248 - }, - "type": "finish", "data": { - "id": "finish-952209ff-d70c-46af-a52c-88e51a530bb9", - "type": "Agama-finish-Flow", - "parentId": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "whenCondition": "", - "inRepeatBlock": true, - "handles": [], - "position": { - "x": 1837.326743028951, - "y": 648.8710822183248 - }, "agamaData": { - "id": "finish-952209ff-d70c-46af-a52c-88e51a530bb9", - "parentId": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "type": "Agama-finish-Flow", - "hasSuccess": false, - "hasFailure": false, + "isTopLevelFlow": true, + "basepath": "", + "configParams": "{}", + "creationDate": "22/11/2024", + "nodeIcon": "material-symbols:line-start-square", + "timeout": "500", + "inputs": "", + "configs": "", + "flowname": "org.gluu.agama.pw.basic", + "displayName": "Basic Login Flow", "hasComment": true, - "comment": "Password validation completed successfuly!", - "flowfilename": "", - "returnVariable": "{ userId: credentials.username}", - "finishMode": "withSuccess", - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Password validation completed" + "comment": "Basic password login flow" }, - "skake": false + "id": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3", + "type": "startNode", + "position": { + "x": 50, + "y": 200 + } }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1837.326743028951, - "y": 648.8710822183248 + "type": "startNode", + "id": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3", + "position": { + "x": 50, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 } }, { - "width": 170, - "height": 124, - "id": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "position": { - "x": 1554.6600763622846, - "y": 651.5377488849914 - }, - "type": "log", "data": { - "id": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "whenCondition": "WhenTrue", - "inRepeatBlock": true, - "position": { - "x": 1554.6600763622846, - "y": 651.5377488849914 - }, "agamaData": { - "id": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "parentId": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "type": "Agama-log-Node", - "displayName": "Log successful login attempt", + "nodeIcon": "material-symbols:equal", + "displayName": "Declare variables", "hasComment": true, - "comment": "add entry in log file for successfull login attempt", - "whenCondition": "WhenTrue", - "inRepeatBlock": true, - "logMessage": "\"Valid credentials provided.\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" + "comment": "Create variable to receive validation result", + "assignments": [ + { + "variableTypeCheck": false, + "assignmentExpression": "{}", + "assignedVariableName": "validationResult" + } + ] + }, + "id": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", + "type": "assignmentNode", + "position": { + "x": 300, + "y": 200 }, - "skake": false + "previousNodeId": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3" }, - "selected": false, - "positionAbsolute": { - "x": 1554.6600763622846, - "y": 651.5377488849914 + "type": "assignmentNode", + "id": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", + "position": { + "x": 300, + "y": 200 }, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c", - "position": { - "x": 1904.2653326959337, - "y": 378.2044155516581 - }, - "type": "assignment", "data": { - "id": "Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "whenCondition": "", - "inRepeatBlock": true, - "position": { - "x": 1904.2653326959337, - "y": 378.2044155516581 - }, "agamaData": { - "id": "Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c", - "parentId": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "type": "Agama-assignment-Node", - "displayName": "Provide feedback", + "nodeIcon": "material-symbols:code", + "displayName": "Initialize", "hasComment": true, - "comment": "Provide feedback about the error message to user", - "whenCondition": "", - "inRepeatBlock": true, - "assignments": [ - { - "variableTypeCheck": true, - "assignmentExpression": "The provided credentials are not valid. Please try again!", - "assignedVariableName": "validationResult.errorMessage" - } - ], - "nodeIcon": "material-symbols:equal" + "comment": "Get an instance of PasswordService Class", + "javaClassName": "org.gluu.agama.pw.basic.PasswordService", + "javaMethodName": "getInstance", + "javaVariableName": "", + "exceptionVariableField": "", + "callType": "Call static method", + "arguments": [], + "asssignedVariableName": "passwordValidationService" }, - "skake": false + "id": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", + "type": "callNode", + "position": { + "x": 550, + "y": 200 + }, + "previousNodeId": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13" }, - "positionAbsolute": { - "x": 1904.2653326959337, - "y": 378.2044155516581 + "type": "callNode", + "id": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", + "position": { + "x": 550, + "y": 200 }, - "selected": false, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 170, - "height": 124, - "id": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "position": { - "x": 1676.2653326959337, - "y": 379.53774888499134 - }, - "type": "log", "data": { - "id": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "whenCondition": "WhenFalse", - "inRepeatBlock": true, - "position": { - "x": 1676.2653326959337, - "y": 379.53774888499134 - }, "agamaData": { - "id": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "parentId": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "type": "Agama-log-Node", - "displayName": "Log failed attempt", + "nodeIcon": "material-symbols:event-repeat-outline-rounded", + "displayName": "Validation loop", "hasComment": true, - "comment": "Invalid credentials provided", - "whenCondition": "WhenFalse", - "inRepeatBlock": true, - "logMessage": "\"Invalid credentials provided.\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" + "comment": "Iterate x times max", + "maxIteration": "3", + "maxIterationVariableName": "currentIteration" }, - "skake": false + "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "type": "repeatNode", + "position": { + "x": 800, + "y": 200 + }, + "previousNodeId": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d" }, - "positionAbsolute": { - "x": 1676.2653326959337, - "y": 379.53774888499134 + "type": "repeatNode", + "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "position": { + "x": 800, + "y": 200 }, - "selected": false, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 270, - "height": 55, - "id": "Agama-note-6bd25a59-3d15-4414-87cb-194d3a09f0bd", - "position": { - "x": 1.9456500483905756, - "y": -51.60227494941 - }, - "type": "notes", "data": { - "id": "Agama-note-6bd25a59-3d15-4414-87cb-194d3a09f0bd", - "type": "Agama-note", - "notes": "The flow excecution start here, the timeout can be tuned as well.", + "agamaData": { + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Maximum attempt reached", + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "returnVariable": "Password validation failed!", + "finishMode": "withFailure" + }, + "id": "finishNode-110609c1-4876-400e-b08e-619688c0e48a", + "type": "finishNode", "position": { - "x": 1.9456500483905756, - "y": -51.60227494941 + "x": 1050, + "y": 200 }, - "skake": false + "previousNodeId": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "branching": "continue" }, - "selected": false, - "positionAbsolute": { - "x": 1.9456500483905756, - "y": -51.60227494941 + "type": "finishNode", + "id": "finishNode-110609c1-4876-400e-b08e-619688c0e48a", + "position": { + "x": 1050, + "y": 200 }, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 270, - "height": 55, - "id": "Agama-note-9d4c0655-6461-4fff-acf7-a715914966e6", - "position": { - "x": 1318.5532613535788, - "y": 302.19598329374105 - }, - "type": "notes", "data": { - "id": "Agama-note-9d4c0655-6461-4fff-acf7-a715914966e6", - "type": "Agama-note", - "notes": "Here, we send the user credentials to the IDP for validation. The IDP will return true or false.", + "agamaData": { + "nodeIcon": "ph:globe-simple", + "displayName": "Login Form", + "hasComment": true, + "comment": "Retrieve user credentials from UI", + "arguments": [ + "validationResult" + ], + "templatePath": "login-basic.ftlh", + "asssignedVariableName": "credentials" + }, + "id": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", + "type": "rrfNode", "position": { - "x": 1318.5532613535788, - "y": 302.19598329374105 + "x": 1050, + "y": 450 }, - "skake": false + "previousNodeId": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "branching": "repeat" }, - "selected": false, - "positionAbsolute": { - "x": 1318.5532613535788, - "y": 302.19598329374105 + "type": "rrfNode", + "id": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", + "position": { + "x": 1050, + "y": 450 }, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 270, - "height": 55, - "id": "Agama-note-a41d2d71-281a-43ac-bc3a-7f4111ead933", - "position": { - "x": 857.238609584755, - "y": 327.7897466540162 - }, - "type": "notes", "data": { - "id": "Agama-note-a41d2d71-281a-43ac-bc3a-7f4111ead933", - "type": "Agama-note", - "notes": "This show the login form so that the user can fill in the credentials.", + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log information", + "hasComment": true, + "comment": "Log the successfull used credentials retrieval.", + "logMessage": "\"User credentials collected successfully!\"", + "logLevel": "info" + }, + "id": "logNode-df194add-e498-4946-b146-70da7d18fa5a", + "type": "logNode", "position": { - "x": 857.238609584755, - "y": 327.7897466540162 + "x": 1300, + "y": 450 }, - "skake": false + "previousNodeId": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054" }, - "selected": false, - "positionAbsolute": { - "x": 857.238609584755, - "y": 327.7897466540162 + "type": "logNode", + "id": "logNode-df194add-e498-4946-b146-70da7d18fa5a", + "position": { + "x": 1300, + "y": 450 }, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 270, - "height": 68, - "id": "Agama-note-8e8798a6-61e7-4e93-a037-6f8717d9e652", - "position": { - "x": 846.4473070028464, - "y": -56.26333532511052 - }, - "type": "notes", "data": { - "id": "Agama-note-8e8798a6-61e7-4e93-a037-6f8717d9e652", - "type": "Agama-note", - "notes": "The maximum number of login attempts has been reached. The validation process end here with failure.", + "agamaData": { + "nodeIcon": "material-symbols:code", + "displayName": "Validate credentials", + "hasComment": true, + "comment": "Validate provided user credentials", + "javaClassName": "", + "javaMethodName": "validate", + "javaVariableName": "passwordValidationService", + "exceptionVariableField": "", + "callType": "Call method on instance", + "arguments": [ + "credentials.username", + "credentials.password" + ], + "asssignedVariableName": "validationResult.status" + }, + "id": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", + "type": "callNode", "position": { - "x": 846.4473070028464, - "y": -56.26333532511052 + "x": 1550, + "y": 450 }, - "skake": false + "previousNodeId": "logNode-df194add-e498-4946-b146-70da7d18fa5a" }, - "selected": false, - "positionAbsolute": { - "x": 846.4473070028464, - "y": -56.26333532511052 + "type": "callNode", + "id": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", + "position": { + "x": 1550, + "y": 450 }, - "dragging": false + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 110, - "height": 60, - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "position": { - "x": 159.66007636228437, - "y": 54.871082218325114 - }, - "parentId": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "type": "when", "data": { - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "type": "Agama-when-Node", - "parentId": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "whenCondition": "", - "inRepeatBlock": true, - "position": { - "x": 159.66007636228437, - "y": 54.871082218325114 - }, "agamaData": { - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "parentId": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "type": "Agama-when-Node", - "variableField": "validationResult.status", - "conditionInputField": "is", - "valueField": "true", - "comment": "If user credentials is valid", "hasComment": true, - "inRepeatBlock": true, - "hasSuccess": true, - "hasFailure": "", - "hasNoRepeat": false, - "hasRepeat": false, + "comment": "If user credentials is valid", "conditions": [ { "variable": "validationResult.status", @@ -318,661 +274,382 @@ } ] }, - "handles": [ - "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.FAILURE", - "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.SUCCESS" - ], - "skake": false - }, - "selected": true, - "dragging": false, - "positionAbsolute": { - "x": 1534.0695386754155, - "y": 438.5454042246887 - } - }, - { - "width": 170, - "height": 124, - "id": "finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee", - "position": { - "x": 1239.6666666666667, - "y": 17.333333333333314 - }, - "type": "finish", - "data": { - "id": "finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee", - "type": "Agama-finish-Flow", - "parentId": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "whenCondition": "", - "inRepeatBlock": false, - "handles": [ - "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InFlow", - "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InRepeatBlock" - ], + "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "type": "whenNode", "position": { - "x": 1239.6666666666667, - "y": 17.333333333333314 - }, - "agamaData": { - "id": "finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee", - "parentId": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "type": "Agama-finish-Flow", - "hasSuccess": false, - "hasFailure": false, - "hasComment": true, - "comment": "Maximum attempts reached. Password validation failed!", - "flowfilename": "", - "returnVariable": "Password validation failed!", - "finishMode": "withFailure", - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Maximum attempt reached" + "x": 1800, + "y": 450 }, - "skake": false + "previousNodeId": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051" }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1239.6666666666667, - "y": 17.333333333333314 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", + "type": "whenNode", + "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", "position": { - "x": 923.6986531520927, - "y": 391.8427106910198 + "x": 1800, + "y": 450 }, - "type": "rrf", - "data": { - "id": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", - "type": "Agama-rrf-Node", - "parentId": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "whenCondition": "", - "inRepeatBlock": true, - "position": { - "x": 923.6986531520927, - "y": 391.8427106910198 - }, - "agamaData": { - "id": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", - "parentId": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "type": "Agama-rrf-Node", - "displayName": "Login Form", - "hasComment": true, - "comment": "Retrieve user credentials from UI", - "whenCondition": "", - "inRepeatBlock": true, - "assignments": [], - "nodeIcon": "ph:globe-simple", - "templatePath": "login-basic.ftlh", - "asssignedVariableName": "credentials", - "arguments": [ - "validationResult" - ], - "hasSuccess": "", - "hasFailure": "", - "hasNoRepeat": false, - "hasRepeat": false - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 923.6986531520927, - "y": 391.8427106910198 + "measured": { + "width": 110, + "height": 60 } }, { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "position": { - "x": 230, - "y": 30 - }, - "type": "assignment", "data": { - "id": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "type": "Agama-assignment-Node", - "parentId": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666", - "whenCondition": "", - "inRepeatBlock": false, - "position": { - "x": 230, - "y": 30 - }, "agamaData": { - "id": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "parentId": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666", - "type": "Agama-assignment-Node", - "displayName": "Declare variables", + "nodeIcon": "octicon:log-16", + "displayName": "Log successful login attempt", "hasComment": true, - "comment": "Create variable to receive validation result", - "whenCondition": "", - "inRepeatBlock": false, - "assignments": [ - { - "variableTypeCheck": false, - "assignmentExpression": "{}", - "assignedVariableName": "validationResult" - } - ], - "nodeIcon": "material-symbols:equal" + "comment": "add entry in log file for successfull login attempt", + "logMessage": "\"Valid credentials provided.\"", + "logLevel": "info" }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 230, - "y": 30 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666", - "type": "start", - "sourcePosition": "right", - "data": { - "id": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666", - "type": "Agama-start-Flow", + "id": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", + "type": "logNode", "position": { - "x": 30, - "y": 30 + "x": 2050, + "y": 700 }, - "inRepeatBlock": false, - "agamaData": { - "id": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666", - "type": "Agama-start-Flow", - "displayName": "Basic Login Flow", - "hasComment": true, - "comment": "Basic password login flow", - "isTopLevelFlow": true, - "basepath": "", - "configParams": "{}", - "nodeIcon": "material-symbols:line-start-square", - "timeout": "500", - "inputs": "", - "configs": "", - "flowname": "org.gluu.agama.pw.basic" - }, - "skake": false + "previousNodeId": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "branching": "success" }, + "type": "logNode", + "id": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", "position": { - "x": 30, - "y": 30 - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 30, - "y": 30 + "x": 2050, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 } }, { - "width": 170, - "height": 124, - "id": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "position": { - "x": 430, - "y": 30 - }, - "type": "call", "data": { - "id": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "type": "Agama-call-Node", - "parentId": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "whenCondition": "", - "inRepeatBlock": false, - "position": { - "x": 430, - "y": 30 - }, "agamaData": { - "id": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "parentId": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "type": "Agama-call-Node", - "displayName": "Initialize", + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Password validation completed", "hasComment": true, - "comment": "Get an instance of PasswordService Class", - "javaClassName": "org.gluu.agama.pw.basic.PasswordService", - "javaMethodName": "getInstance", - "javaVariableName": "", - "exceptionVariableField": "", - "callType": "Call static method", - "whenCondition": "", - "inRepeatBlock": false, - "arguments": [], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "passwordValidationService" + "comment": "Password validation completed successfuly!", + "returnVariable": "{ userId: credentials.username}", + "finishMode": "withSuccess" }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 430, - "y": 30 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "position": { - "x": 454.90541130456177, - "y": -6.716977624007882 - }, - "type": "repeat", - "data": { - "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "type": "Agama-repeat-Node", - "parentId": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "whenCondition": "", - "inRepeatBlock": "", - "handles": [ - "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InFlow", - "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InRepeatBlock" - ], + "id": "finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", + "type": "finishNode", "position": { - "x": 454.90541130456177, - "y": -6.716977624007882 - }, - "agamaData": { - "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "parentId": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "type": "Agama-repeat-Node", - "nodeIcon": "material-symbols:event-repeat-outline-rounded", - "maxIteration": "3", - "displayName": "Validation loop", - "hasComment": true, - "hasNoRepeat": true, - "hasSuccess": "", - "hasFailure": "", - "hasRepeat": false, - "comment": "Iterate x times max", - "maxIterationVariableName": "currentIteration" + "x": 2300, + "y": 700 }, - "skake": false + "previousNodeId": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8" }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 884.9054113045618, - "y": 23.283022375992118 + "type": "finishNode", + "id": "finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", + "position": { + "x": 2300, + "y": 700 }, - "parentId": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "whenCondition": "", - "inRepeatBlock": "" + "measured": { + "width": 170, + "height": 124 + } }, { - "width": 170, - "height": 124, - "id": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "position": { - "x": 1139.8214738181266, - "y": 382.5707876907034 - }, - "type": "log", "data": { - "id": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "type": "Agama-log-Node", - "parentId": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", - "whenCondition": "", - "inRepeatBlock": true, - "position": { - "x": 1139.8214738181266, - "y": 382.5707876907034 - }, "agamaData": { - "id": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "parentId": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", - "type": "Agama-log-Node", - "displayName": "Log information", + "nodeIcon": "octicon:log-16", + "displayName": "Log failed attempt", "hasComment": true, - "comment": "Log the successfull used credentials retrieval.", - "whenCondition": "", - "inRepeatBlock": true, - "logMessage": "\"User credentials collected successfully!\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" + "comment": "Invalid credentials provided", + "logMessage": "\"Invalid credentials provided.\"", + "logLevel": "info" + }, + "id": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", + "type": "logNode", + "position": { + "x": 2050, + "y": 450 }, - "skake": false + "previousNodeId": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "branching": "continue" + }, + "type": "logNode", + "id": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", + "position": { + "x": 2050, + "y": 450 }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1139.8214738181266, - "y": 382.5707876907034 + "measured": { + "width": 170, + "height": 124 } }, { - "width": 170, - "height": 124, - "id": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "position": { - "x": 234.58798849500454, - "y": 1.1035343156601698 - }, - "type": "call", "data": { - "id": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "type": "Agama-call-Node", - "parentId": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "whenCondition": "", - "inRepeatBlock": "", - "position": { - "x": 234.58798849500454, - "y": 1.1035343156601698 - }, "agamaData": { - "id": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "parentId": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "type": "Agama-call-Node", - "displayName": "Validate credentials", + "nodeIcon": "material-symbols:equal", + "displayName": "Provide feedback", "hasComment": true, - "comment": "Validate provided user credentials", - "javaClassName": "", - "javaMethodName": "validate", - "javaVariableName": "passwordValidationService", - "exceptionVariableField": "", - "callType": "Call method on instance", - "whenCondition": "", - "inRepeatBlock": true, - "arguments": [ - "credentials.username", - "credentials.password" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "validationResult.status", - "position": { - "x": 1130.5879884950043 - } + "comment": "Provide feedback about the error message to user", + "assignments": [ + { + "variableTypeCheck": true, + "assignmentExpression": "The provided credentials are not valid. Please try again!", + "assignedVariableName": "validationResult.errorMessage" + } + ] + }, + "id": "assignmentNode-479e21a3-8602-4026-9255-e309951b650a", + "type": "assignmentNode", + "position": { + "x": 2300, + "y": 450 }, - "skake": false + "previousNodeId": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229" }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1374.4094623131311, - "y": 383.6743220063636 + "type": "assignmentNode", + "id": "assignmentNode-479e21a3-8602-4026-9255-e309951b650a", + "position": { + "x": 2300, + "y": 450 }, - "parentId": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "whenCondition": "", - "inRepeatBlock": "" + "measured": { + "width": 170, + "height": 124 + } } ], "edges": [ { - "id": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666-Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a-3aea7a7d-73b5-40eb-bdbf-0ed76ad8db18", - "type": "straight", - "source": "Agama-start-Flow-857536e5-f21b-4c1d-ab59-3f47a7772666", - "target": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34-Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d-370e77f4-d4fe-473c-a853-d7e8addd54bc", - "type": "straight", - "source": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "target": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", - "label": "In Block", + "id": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3-assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", + "type": "default", + "source": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3", + "target": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 }, - "sourceHandle": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InRepeatBlock" + "labelShowBg": true, + "sourceHandle": "source_startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3" }, { - "id": "Agama-call-Node-b1af4dda-d96f-462f-a6bb-8797e9debbbd-Agama-when-Node-f306ff62-81cc-4045-b7bb-2e6fdf19c71a-c8c3111f-4e9c-4216-be43-f60119b70c13", - "type": "straight", - "source": "Agama-call-Node-b1af4dda-d96f-462f-a6bb-8797e9debbbd", - "target": "Agama-when-Node-f306ff62-81cc-4045-b7bb-2e6fdf19c71a", - "label": "", + "id": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13-callNode-6534f22d-d529-4042-a8f8-220d0999c28d", + "type": "default", + "source": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", + "target": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 - } + }, + "labelShowBg": true, + "sourceHandle": "source_assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13" }, { - "id": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34-finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee-758de37d-c560-487b-ad9a-8d3f9da9421b", - "type": "straight", - "source": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", - "target": "finish-b75c3471-8b6a-4d23-bf59-0f0050de1aee", - "label": "Not In Block", + "id": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d-repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "type": "default", + "source": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", + "target": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 }, - "sourceHandle": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34.InFlow" + "labelShowBg": true, + "sourceHandle": "source_callNode-6534f22d-d529-4042-a8f8-220d0999c28d" }, { - "id": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e-Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c-7e2923b6-a1f3-44d1-8d43-6b9cf191e94c", - "type": "straight", - "source": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", - "target": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "label": "", + "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095-finishNode-110609c1-4876-400e-b08e-619688c0e48a", + "type": "default", + "source": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "target": "finishNode-110609c1-4876-400e-b08e-619688c0e48a", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "continue", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 - } + }, + "labelShowBg": true, + "sourceHandle": "source_repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095_continue" }, { - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c-Agama-assignment-Node-0840e2f5-512a-4e43-a346-66988f0e962e-1a12f7db-f642-4be8-9771-431718bf3bd0", - "type": "straight", - "source": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "target": "Agama-assignment-Node-0840e2f5-512a-4e43-a346-66988f0e962e", - "label": "", + "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095-rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", + "type": "default", + "source": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "target": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "repeat", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 }, - "sourceHandle": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.FAILURE" + "labelShowBg": true, + "sourceHandle": "source_repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095_repeat" }, { - "id": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a-Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a-523ae5c9-717e-4bdc-b8fd-a4f0198b4360", - "type": "straight", - "source": "Agama-assignment-Node-a28dfd15-dadf-483e-bcc9-f3959ca35b2a", - "target": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "label": "", + "id": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054-logNode-df194add-e498-4946-b146-70da7d18fa5a", + "type": "default", + "source": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", + "target": "logNode-df194add-e498-4946-b146-70da7d18fa5a", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a-Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34-a21e5744-47b3-46af-9a0c-fa0a13648473", - "type": "straight", - "source": "Agama-call-Node-c15001c5-af58-41a8-ac6d-457a27f0221a", - "target": "Agama-repeat-Node-78d1e804-9fd5-4272-b6fa-75f7cecd5f34", "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 - } + }, + "labelShowBg": true, + "sourceHandle": "source_rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054" }, { - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c-Agama-log-Node-8c3e3a77-43b2-4c4b-802e-d49e9089ec1b-3317e01a-2861-4a7c-9928-ccda94aa0d1c", - "type": "straight", - "source": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "target": "Agama-log-Node-8c3e3a77-43b2-4c4b-802e-d49e9089ec1b", - "label": "Condition met", + "id": "logNode-df194add-e498-4946-b146-70da7d18fa5a-callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", + "type": "default", + "source": "logNode-df194add-e498-4946-b146-70da7d18fa5a", + "target": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 }, - "sourceHandle": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.SUCCESS" + "labelShowBg": true, + "sourceHandle": "source_logNode-df194add-e498-4946-b146-70da7d18fa5a" }, { - "id": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d-Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f-31258ad3-798f-407e-a334-50c259331072", - "type": "straight", - "source": "Agama-rrf-Node-bbf285c6-59fa-48f7-899d-cef7bb532f4d", - "target": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "label": "", + "id": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051-whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "type": "default", + "source": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", + "target": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f-Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e-3e3fda3c-630c-42fb-b238-2a04152f3154", - "type": "straight", - "source": "Agama-log-Node-fd65df1e-5e28-4585-a01a-78da3e6b639f", - "target": "Agama-call-Node-8631816b-9ec6-474d-b4a0-cc881e722f2e", "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 - } + }, + "labelShowBg": true, + "sourceHandle": "source_callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051" }, { - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c-Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b-48fd1a94-fe6b-490d-90e4-bfe076950eb5", - "type": "straight", - "source": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "target": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "label": "", + "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51-logNode-182ee330-c12e-4a53-8859-d7f631429aa8", + "type": "default", + "source": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "target": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "Condition met", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 }, - "sourceHandle": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.FAILURE" + "labelShowBg": true, + "sourceHandle": "source_whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51_success" }, { - "id": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b-Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c-f0915099-f479-4118-bc75-7fe99fe51d1d", - "type": "straight", - "source": "Agama-log-Node-ef2c0092-f403-49ee-acdf-f44ec52d823b", - "target": "Agama-assignment-Node-4c515d57-67b6-40bc-8570-468559052c4c", - "label": "", + "id": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8-finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", + "type": "default", + "source": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", + "target": "finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 - } + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-182ee330-c12e-4a53-8859-d7f631429aa8" }, { - "id": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c-Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7-3f4bec25-872c-49e1-839f-156b1caab5c2", - "type": "straight", - "source": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c", - "target": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "label": "Condition met", + "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51-logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", + "type": "default", + "source": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "target": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "continue", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 }, - "sourceHandle": "Agama-when-Node-ad2b2e5b-f7d1-425f-91ff-b980cffe948c.SUCCESS" + "labelShowBg": true, + "sourceHandle": "source_whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51_continue" }, { - "id": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7-finish-952209ff-d70c-46af-a52c-88e51a530bb9-ba42aeee-093e-42de-9208-5dcb9e7f7def", - "type": "straight", - "source": "Agama-log-Node-120a2a08-4b5e-402c-91fb-f9084c472ab7", - "target": "finish-952209ff-d70c-46af-a52c-88e51a530bb9", - "label": "", + "id": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229-assignmentNode-479e21a3-8602-4026-9255-e309951b650a", + "type": "default", + "source": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", + "target": "assignmentNode-479e21a3-8602-4026-9255-e309951b650a", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "label": "", "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", + "fill": "#009688", + "color": "#ffffff", "fillOpacity": 0.7 - } + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229" } ], "viewport": { - "x": -22, - "y": 85, - "zoom": 0.75 + "x": 11.878767612114189, + "y": 19.930049100130475, + "zoom": 0.6070974421975234 } } \ No newline at end of file From d3c7ab959ff846272b3af0b9ffd3a3a14bd0b330 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 22 Nov 2024 11:03:37 +0100 Subject: [PATCH 12/22] refactor: update org.gluu.agama.pw.basic.flow --- code/org.gluu.agama.pw.basic.flow | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.flow b/code/org.gluu.agama.pw.basic.flow index 06fe22c..e26a642 100644 --- a/code/org.gluu.agama.pw.basic.flow +++ b/code/org.gluu.agama.pw.basic.flow @@ -19,12 +19,12 @@ currentIteration = Repeat 3 times max // add entry in log file for successfull login attempt Log "@info Valid credentials provided." // Password validation completed successfuly! - it_iedei = {success:true, data: { userId: credentials.username}} - Finish it_iedei + it_onnjz = {success:true, data: { userId: credentials.username}} + Finish it_onnjz // Invalid credentials provided Log "@info Invalid credentials provided." // Provide feedback about the error message to user validationResult.errorMessage = "The provided credentials are not valid. Please try again!" // Maximum attempts reached. Password validation failed! -it_uqrga = {success:false, error: "Password validation failed!"} -Finish it_uqrga \ No newline at end of file +it_amwkx = {success:false, error: "Password validation failed!"} +Finish it_amwkx \ No newline at end of file From de63294573a8941be2b4dc781976374f26aa4d1d Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:43:10 +0100 Subject: [PATCH 13/22] Update org.gluu.agama.pw.basic.json Signed-off-by: gasmyr --- code/org.gluu.agama.pw.basic.json | 1788 +++++++++++++++++++++++------ 1 file changed, 1406 insertions(+), 382 deletions(-) diff --git a/code/org.gluu.agama.pw.basic.json b/code/org.gluu.agama.pw.basic.json index 6fc41f8..18d9e13 100644 --- a/code/org.gluu.agama.pw.basic.json +++ b/code/org.gluu.agama.pw.basic.json @@ -1,655 +1,1679 @@ { "nodes": [ { + "width": 242, + "height": 30, + "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", + "position": { + "x": 1704, + "y": 478 + }, + "type": "notes", "data": { - "agamaData": { - "isTopLevelFlow": true, - "basepath": "", - "configParams": "{}", - "creationDate": "22/11/2024", - "nodeIcon": "material-symbols:line-start-square", - "timeout": "500", - "inputs": "", - "configs": "", - "flowname": "org.gluu.agama.pw.basic", - "displayName": "Basic Login Flow", - "hasComment": true, - "comment": "Basic password login flow" + "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", + "type": "Agama-note", + "notes": "If user credentials is valid.", + "position": { + "x": 1704, + "y": 478 + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": 1704, + "y": 478 + }, + "dragging": false + }, + { + "width": 270, + "height": 42, + "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", + "position": { + "x": 2125.35, + "y": 483 + }, + "type": "notes", + "data": { + "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", + "type": "Agama-note", + "notes": "If the ACCOUNT_LOCK feature is enable.", + "position": { + "x": 2125.35, + "y": 483 }, - "id": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3", - "type": "startNode", + "skake": false + }, + "selected": true, + "positionAbsolute": { + "x": 2125.35, + "y": 483 + }, + "dragging": false + }, + { + "width": 270, + "height": 55, + "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", + "position": { + "x": 2446.0625, + "y": 493 + }, + "type": "notes", + "data": { + "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", + "type": "Agama-note", + "notes": "Lock user account. The user account will be lock if the maximum login attempt is reach.", "position": { - "x": 50, - "y": 200 - } + "x": 2446.0625, + "y": 493 + }, + "skake": false }, - "type": "startNode", - "id": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3", + "selected": false, + "positionAbsolute": { + "x": 2446.0625, + "y": 493 + }, + "dragging": false + }, + { + "width": 270, + "height": 55, + "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", "position": { - "x": 50, - "y": 200 + "x": 1279, + "y": 226 }, - "measured": { - "width": 170, - "height": 124 - } + "type": "notes", + "data": { + "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", + "type": "Agama-note", + "notes": "IDP validate the user credentials and send back the result.", + "position": { + "x": 1279, + "y": 226 + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": 1279, + "y": 226 + }, + "dragging": false + }, + { + "width": 270, + "height": 55, + "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", + "position": { + "x": 846, + "y": 204 + }, + "type": "notes", + "data": { + "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", + "type": "Agama-note", + "notes": "Show login form to the UI to collect his username and password for validation.", + "position": { + "x": 846, + "y": 204 + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": 846, + "y": 204 + }, + "dragging": false + }, + { + "width": 270, + "height": 81, + "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", + "position": { + "x": 1242.0000000000002, + "y": -38 + }, + "type": "notes", + "data": { + "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", + "type": "Agama-note", + "notes": "The maximum number of attempts has been reached.\nIf account lock feature is enable, the user account will be lock for few minutes.", + "position": { + "x": 1242.0000000000002, + "y": -38 + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": 1242.0000000000002, + "y": -38 + }, + "dragging": false + }, + { + "width": 270, + "height": 68, + "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", + "position": { + "x": -10, + "y": -40 + }, + "type": "notes", + "data": { + "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", + "type": "Agama-note", + "notes": "The Password validation flow start here. The flow timeout can be tuned as well flow configurations.", + "position": { + "x": -10, + "y": -40 + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": -10, + "y": -40 + }, + "dragging": false }, { + "width": 170, + "height": 124, + "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "position": { + "x": 2628, + "y": 286 + }, + "type": "assignment", "data": { + "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "type": "Agama-assignment-Node", + "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2628, + "y": 286 + }, "agamaData": { - "nodeIcon": "material-symbols:equal", - "displayName": "Declare variables", + "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "type": "Agama-assignment-Node", + "displayName": "Provide UI feedback", "hasComment": true, - "comment": "Create variable to receive validation result", + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, "assignments": [ + { + "variableTypeCheck": true, + "assignmentExpression": "Invalid credentials. Please try again!", + "assignedVariableName": "uiFeedback.errorMessage" + }, { "variableTypeCheck": false, - "assignmentExpression": "{}", - "assignedVariableName": "validationResult" + "assignmentExpression": "credentials.username", + "assignedVariableName": "uiFeedback.uid" } - ] - }, - "id": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", - "type": "assignmentNode", - "position": { - "x": 300, - "y": 200 + ], + "nodeIcon": "material-symbols:equal" }, - "previousNodeId": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3" + "skake": false + }, + "positionAbsolute": { + "x": 2628, + "y": 286 }, - "type": "assignmentNode", - "id": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", + "selected": false, + "dragging": false + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", "position": { - "x": 300, - "y": 200 + "x": 2426, + "y": 286 }, - "measured": { - "width": 170, - "height": 124 + "type": "log", + "data": { + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2426, + "y": 286 + }, + "agamaData": { + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "type": "Agama-log-Node", + "displayName": "Failed login attempt", + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Maximum attempts reached. Password validation failed.\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2426, + "y": 286 } }, { + "width": 170, + "height": 124, + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "position": { + "x": 2510, + "y": 561 + }, + "type": "call", "data": { + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "type": "Agama-call-Node", + "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2510, + "y": 561 + }, "agamaData": { - "nodeIcon": "material-symbols:code", - "displayName": "Initialize", + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "type": "Agama-call-Node", + "displayName": "Lock user account", "hasComment": true, - "comment": "Get an instance of PasswordService Class", - "javaClassName": "org.gluu.agama.pw.basic.PasswordService", - "javaMethodName": "getInstance", - "javaVariableName": "", + "comment": "Lock user account if needed or unlock if the expiration time is over.", + "javaClassName": "", + "javaMethodName": "lockAccount", + "javaVariableName": "validationService", "exceptionVariableField": "", - "callType": "Call static method", - "arguments": [], - "asssignedVariableName": "passwordValidationService" - }, - "id": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", - "type": "callNode", - "position": { - "x": 550, - "y": 200 + "callType": "Call method on instance", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "arguments": [ + "credentials.username" + ], + "nodeIcon": "material-symbols:code", + "asssignedVariableName": "lockResult" }, - "previousNodeId": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13" - }, - "type": "callNode", - "id": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", - "position": { - "x": 550, - "y": 200 + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2510, + "y": 561 } }, { + "width": 170, + "height": 124, + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "position": { + "x": 2311, + "y": 561 + }, + "type": "log", "data": { + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2311, + "y": 561 + }, "agamaData": { - "nodeIcon": "material-symbols:event-repeat-outline-rounded", - "displayName": "Validation loop", + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "type": "Agama-log-Node", + "displayName": "Log account lock", "hasComment": true, - "comment": "Iterate x times max", - "maxIteration": "3", - "maxIterationVariableName": "currentIteration" - }, - "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "type": "repeatNode", - "position": { - "x": 800, - "y": 200 + "comment": "Account lock feature is active.", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Start account lock process\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16" }, - "previousNodeId": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d" + "skake": false }, - "type": "repeatNode", - "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "position": { - "x": 800, - "y": 200 + "selected": false, + "positionAbsolute": { + "x": 2311, + "y": 561 }, - "measured": { - "width": 170, - "height": 124 - } + "dragging": false }, { + "width": 210, + "height": 140, + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "position": { + "x": 2186, + "y": 343 + }, + "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "type": "when", "data": { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "type": "Agama-when-Node", + "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2186, + "y": 343 + }, "agamaData": { - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Maximum attempt reached", + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "type": "Agama-when-Node", + "conditions": [ + { + "variable": "conf.ENABLE_LOCK", + "operator": "is", + "dataValue": "\"true\"", + "combinator": "none" + } + ], "hasComment": true, - "comment": "Maximum attempts reached. Password validation failed!", - "returnVariable": "Password validation failed!", - "finishMode": "withFailure" + "inRepeatBlock": false }, - "id": "finishNode-110609c1-4876-400e-b08e-619688c0e48a", - "type": "finishNode", - "position": { - "x": 1050, - "y": 200 - }, - "previousNodeId": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "branching": "continue" - }, - "type": "finishNode", - "id": "finishNode-110609c1-4876-400e-b08e-619688c0e48a", - "position": { - "x": 1050, - "y": 200 + "handles": [ + "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE", + "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" + ], + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2186, + "y": 343 } }, { + "width": 170, + "height": 124, + "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "position": { + "x": 2037, + "y": 571 + }, + "type": "finish", "data": { + "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "type": "Agama-finish-Flow", + "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "handles": [], + "position": { + "x": 2037, + "y": 571 + }, "agamaData": { - "nodeIcon": "ph:globe-simple", - "displayName": "Login Form", + "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "type": "Agama-finish-Flow", + "hasSuccess": false, + "hasFailure": false, "hasComment": true, - "comment": "Retrieve user credentials from UI", - "arguments": [ - "validationResult" - ], - "templatePath": "login-basic.ftlh", - "asssignedVariableName": "credentials" - }, - "id": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", - "type": "rrfNode", - "position": { - "x": 1050, - "y": 450 + "comment": "Password validation completed successfuly!", + "flowfilename": "", + "returnVariable": "{ userId: credentials.username}", + "finishMode": "withSuccess", + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Flow completed" }, - "previousNodeId": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "branching": "repeat" + "skake": false }, - "type": "rrfNode", - "id": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2037, + "y": 571 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", "position": { - "x": 1050, - "y": 450 + "x": 1974, + "y": 287 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1974, + "y": 287 + }, + "agamaData": { + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "type": "Agama-log-Node", + "displayName": "Log failed login attempt", + "hasComment": true, + "comment": "Invalid credentials provided.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Invalid credentials provided\"", + "logLevel": "error", + "nodeIcon": "octicon:log-16" + }, + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1974, + "y": 287 } }, { + "width": 170, + "height": 124, + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "position": { + "x": 1837, + "y": 571 + }, + "type": "log", "data": { + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1837, + "y": 571 + }, "agamaData": { - "nodeIcon": "octicon:log-16", - "displayName": "Log information", + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "type": "Agama-log-Node", + "displayName": "Log successfully validation", "hasComment": true, - "comment": "Log the successfull used credentials retrieval.", - "logMessage": "\"User credentials collected successfully!\"", - "logLevel": "info" + "comment": "add entry in log file for successfull login attempt.", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Valid credentials provided\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16" }, - "id": "logNode-df194add-e498-4946-b146-70da7d18fa5a", - "type": "logNode", + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1837, + "y": 571 + } + }, + { + "width": 210, + "height": 140, + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "position": { + "x": 1724, + "y": 341 + }, + "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "type": "when", + "data": { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "type": "Agama-when-Node", + "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, "position": { - "x": 1300, - "y": 450 + "x": 1724, + "y": 341 + }, + "agamaData": { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "type": "Agama-when-Node", + "conditions": [ + { + "variable": "uiFeedback.succeed", + "operator": "is", + "dataValue": "true", + "combinator": "none" + } + ], + "hasComment": true, + "inRepeatBlock": false, + "comment": "If user credentials is valid, the flow end successfully." }, - "previousNodeId": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054" + "handles": [ + "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE", + "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" + ], + "skake": false }, - "type": "logNode", - "id": "logNode-df194add-e498-4946-b146-70da7d18fa5a", + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1724, + "y": 341 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", "position": { - "x": 1300, - "y": 450 + "x": 1524, + "y": 287 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "type": "Agama-log-Node", + "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1524, + "y": 287 + }, + "agamaData": { + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "type": "Agama-log-Node", + "displayName": "Log validation done", + "hasComment": true, + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Validation done\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16" + }, + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1524, + "y": 287 } }, { + "width": 170, + "height": 124, + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "position": { + "x": 1324, + "y": 287 + }, + "type": "call", "data": { + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "type": "Agama-call-Node", + "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1324, + "y": 287 + }, "agamaData": { - "nodeIcon": "material-symbols:code", + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "type": "Agama-call-Node", "displayName": "Validate credentials", "hasComment": true, - "comment": "Validate provided user credentials", + "comment": "Validate provided user credentials.", "javaClassName": "", "javaMethodName": "validate", - "javaVariableName": "passwordValidationService", + "javaVariableName": "validationService", "exceptionVariableField": "", "callType": "Call method on instance", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, "arguments": [ "credentials.username", "credentials.password" ], - "asssignedVariableName": "validationResult.status" + "nodeIcon": "material-symbols:code", + "asssignedVariableName": "uiFeedback.succeed" }, - "id": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", - "type": "callNode", + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1324, + "y": 287 + } + }, + { + "width": 170, + "height": 124, + "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "position": { + "x": 1276, + "y": 58 + }, + "type": "finish", + "data": { + "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "type": "Agama-finish-Flow", + "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "handles": [], "position": { - "x": 1550, - "y": 450 + "x": 1276, + "y": 58 + }, + "agamaData": { + "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "type": "Agama-finish-Flow", + "hasSuccess": false, + "hasFailure": false, + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "flowfilename": "", + "returnVariable": "Password validation failed!", + "finishMode": "withFailure", + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Password validation failed!" }, - "previousNodeId": "logNode-df194add-e498-4946-b146-70da7d18fa5a" + "skake": false }, - "type": "callNode", - "id": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1276, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", "position": { - "x": 1550, - "y": 450 + "x": 1076, + "y": 58 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "type": "Agama-log-Node", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1076, + "y": 58 + }, + "agamaData": { + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "type": "Agama-log-Node", + "displayName": "Log max attempt reached", + "hasComment": true, + "comment": "The login flow will end here with failure.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"The maximum login attempt has been reached!\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "hasSuccess": "", + "hasFailure": "", + "hasNoRepeat": false, + "hasRepeat": false + }, + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1076, + "y": 58 } }, { + "width": 170, + "height": 124, + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "position": { + "x": 1124, + "y": 287 + }, + "type": "log", "data": { + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "type": "Agama-log-Node", + "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1124, + "y": 287 + }, "agamaData": { + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "type": "Agama-log-Node", + "displayName": "Log credentials collected", "hasComment": true, - "comment": "If user credentials is valid", - "conditions": [ - { - "variable": "validationResult.status", - "operator": "is", - "dataValue": "true", - "combinator": "none" - } - ] + "comment": "Log the successfull used credentials retrieval.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"User credentials collected successfully!\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16" }, - "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", - "type": "whenNode", + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1124, + "y": 287 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "position": { + "x": 924, + "y": 287 + }, + "type": "rrf", + "data": { + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "type": "Agama-rrf-Node", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "whenCondition": "WhenFalse", + "inRepeatBlock": true, + "inIterateBlock": false, "position": { - "x": 1800, - "y": 450 + "x": 924, + "y": 287 + }, + "agamaData": { + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "type": "Agama-rrf-Node", + "displayName": "Retrieve user credentials", + "hasComment": true, + "comment": "Retrieve user credentials from UI.", + "whenCondition": "WhenFalse", + "inRepeatBlock": true, + "inIterateBlock": false, + "assignments": [], + "nodeIcon": "ph:globe-simple", + "templatePath": "login-basic.ftlh", + "asssignedVariableName": "credentials", + "arguments": [ + "uiFeedback" + ] }, - "previousNodeId": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051" + "skake": false }, - "type": "whenNode", - "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "selected": false, + "positionAbsolute": { + "x": 924, + "y": 287 + }, + "dragging": false + }, + { + "width": 170, + "height": 124, + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", "position": { - "x": 1800, - "y": 450 + "x": 826, + "y": 58 }, - "measured": { - "width": 110, - "height": 60 + "type": "repeat", + "data": { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "type": "Agama-repeat-Node", + "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "handles": [ + "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow", + "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" + ], + "position": { + "x": 826, + "y": 58 + }, + "agamaData": { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "type": "Agama-repeat-Node", + "nodeIcon": "material-symbols:event-repeat-outline-rounded", + "maxIteration": "6", + "maxIterationVariableName": "count", + "displayName": "Validation Loop", + "comment": "Iterate x times max", + "hasComment": true + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 826, + "y": 58 } }, { + "width": 170, + "height": 124, + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "position": { + "x": 626, + "y": 58 + }, + "type": "call", "data": { + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "type": "Agama-call-Node", + "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 626, + "y": 58 + }, "agamaData": { - "nodeIcon": "octicon:log-16", - "displayName": "Log successful login attempt", + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "type": "Agama-call-Node", + "displayName": "Service initialization", "hasComment": true, - "comment": "add entry in log file for successfull login attempt", - "logMessage": "\"Valid credentials provided.\"", - "logLevel": "info" - }, - "id": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", - "type": "logNode", - "position": { - "x": 2050, - "y": 700 + "comment": "Get an instance of PasswordService Class.", + "javaClassName": "org.gluu.agama.pw.PasswordService", + "javaMethodName": "getInstance", + "javaVariableName": "", + "exceptionVariableField": "", + "callType": "Call static method", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "arguments": [ + "conf" + ], + "nodeIcon": "material-symbols:code", + "asssignedVariableName": "validationService" }, - "previousNodeId": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", - "branching": "success" + "skake": false }, - "type": "logNode", - "id": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 626, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", "position": { - "x": 2050, - "y": 700 + "x": 426, + "y": 58 + }, + "type": "assignment", + "data": { + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "type": "Agama-assignment-Node", + "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 426, + "y": 58 + }, + "agamaData": { + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "type": "Agama-assignment-Node", + "displayName": "Declare variables", + "hasComment": true, + "comment": " Create json variable for UI feedback.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "assignments": [ + { + "variableTypeCheck": false, + "assignmentExpression": "{}", + "assignedVariableName": "uiFeedback" + } + ], + "nodeIcon": "material-symbols:equal" + }, + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 426, + "y": 58 } }, { + "width": 170, + "height": 124, + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "position": { + "x": 226, + "y": 58 + }, + "type": "log", "data": { + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "type": "Agama-log-Node", + "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 226, + "y": 58 + }, "agamaData": { - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Password validation completed", + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "Agama-log-Node", + "displayName": "Log flow start", "hasComment": true, - "comment": "Password validation completed successfuly!", - "returnVariable": "{ userId: credentials.username}", - "finishMode": "withSuccess" + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Start execution of the password validation flow.\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16" }, - "id": "finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", - "type": "finishNode", + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 226, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "start", + "sourcePosition": "right", + "data": { + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "Agama-start-Flow", "position": { - "x": 2300, - "y": 700 + "x": 26, + "y": 58 + }, + "inRepeatBlock": false, + "agamaData": { + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "Agama-start-Flow", + "displayName": "Password Validation Flow", + "hasComment": true, + "comment": "", + "isTopLevelFlow": true, + "basepath": "", + "configParams": "{}", + "nodeIcon": "material-symbols:line-start-square", + "timeout": "500", + "inputs": "", + "configs": "conf", + "flowname": "org.gluu.agama.pw.main" }, - "previousNodeId": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8" + "skake": false }, - "type": "finishNode", - "id": "finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", "position": { - "x": 2300, - "y": 700 + "x": 26, + "y": 58 }, - "measured": { - "width": 170, - "height": 124 - } + "selected": false, + "positionAbsolute": { + "x": 26, + "y": 58 + }, + "dragging": false }, { + "width": 170, + "height": 124, + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "position": { + "x": 2704, + "y": 561 + }, + "type": "log", "data": { + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "type": "Agama-log-Node", + "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2704, + "y": 561 + }, "agamaData": { - "nodeIcon": "octicon:log-16", - "displayName": "Log failed attempt", + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "type": "Agama-log-Node", + "displayName": "Log account lock result", "hasComment": true, - "comment": "Invalid credentials provided", - "logMessage": "\"Invalid credentials provided.\"", - "logLevel": "info" + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Account lock result\" lockResult", + "logLevel": "info", + "nodeIcon": "octicon:log-16" }, - "id": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", - "type": "logNode", - "position": { - "x": 2050, - "y": 450 - }, - "previousNodeId": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", - "branching": "continue" - }, - "type": "logNode", - "id": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", - "position": { - "x": 2050, - "y": 450 + "skake": false }, - "measured": { - "width": 170, - "height": 124 + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2704, + "y": 561 } }, { + "width": 170, + "height": 124, + "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "position": { + "x": 2903, + "y": 561 + }, + "type": "assignment", "data": { + "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "type": "Agama-assignment-Node", + "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "whenCondition": "", + "inRepeatBlock": "", + "inIterateBlock": "", + "position": { + "x": 2903, + "y": 561 + }, "agamaData": { - "nodeIcon": "material-symbols:equal", - "displayName": "Provide feedback", + "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "type": "Agama-assignment-Node", + "displayName": "Provide UI feedback", "hasComment": true, - "comment": "Provide feedback about the error message to user", + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, "assignments": [ { - "variableTypeCheck": true, - "assignmentExpression": "The provided credentials are not valid. Please try again!", - "assignedVariableName": "validationResult.errorMessage" + "variableTypeCheck": false, + "assignmentExpression": "lockResult", + "assignedVariableName": "uiFeedback.lockMessage" } - ] - }, - "id": "assignmentNode-479e21a3-8602-4026-9255-e309951b650a", - "type": "assignmentNode", - "position": { - "x": 2300, - "y": 450 + ], + "nodeIcon": "material-symbols:equal", + "position": { + "x": 2836 + } }, - "previousNodeId": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229" + "skake": false }, - "type": "assignmentNode", - "id": "assignmentNode-479e21a3-8602-4026-9255-e309951b650a", - "position": { - "x": 2300, - "y": 450 + "positionAbsolute": { + "x": 2903, + "y": 561 }, - "measured": { - "width": 170, - "height": 124 - } + "selected": false, + "dragging": false, + "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "whenCondition": "", + "inRepeatBlock": "", + "inIterateBlock": "" } ], "edges": [ { - "id": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3-assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", - "type": "default", - "source": "startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3", - "target": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4-Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-f17c8532-e168-4a92-849c-48121f4bf9dc", + "type": "straight", + "source": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "target": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-ebd8e416-520f-48c2-8630-fcf6a4dbf26e", + "type": "straight", + "source": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "target": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 - }, - "labelShowBg": true, - "sourceHandle": "source_startNode-69955e8a-f46e-4354-ba8c-b89ec4afb0b3" + } }, { - "id": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13-callNode-6534f22d-d529-4042-a8f8-220d0999c28d", - "type": "default", - "source": "assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13", - "target": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-cdc03327-22f7-4c3e-a227-2772c73df278", + "type": "straight", + "source": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "target": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-0be28bd6-1a54-4d5d-9b3d-4a92b9475dcb", + "type": "straight", + "source": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "target": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-488cb44f-2961-4541-b602-1dbce69cd61e", + "type": "straight", + "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "target": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "label": "Do Repeat", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_assignmentNode-2646744f-4052-4d6c-810d-c67aa0567d13" + "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" }, { - "id": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d-repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "type": "default", - "source": "callNode-6534f22d-d529-4042-a8f8-220d0999c28d", - "target": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-c6b2b2aa-a5e0-4f10-866f-6433a5eebf46", + "type": "straight", + "source": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "target": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-2eae45f1-a624-4904-b8cb-6d03020207b5", + "type": "straight", + "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "target": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_callNode-6534f22d-d529-4042-a8f8-220d0999c28d" + "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow" }, { - "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095-finishNode-110609c1-4876-400e-b08e-619688c0e48a", - "type": "default", - "source": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "target": "finishNode-110609c1-4876-400e-b08e-619688c0e48a", + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674-edd36a14-2ec2-4141-bec1-688d7e5ef37d", + "type": "straight", + "source": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "target": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "label": "continue", "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 - }, - "labelShowBg": true, - "sourceHandle": "source_repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095_continue" + } }, { - "id": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095-rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", - "type": "default", - "source": "repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095", - "target": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-25609b7e-aad2-4535-a7d4-cba7c1d683f5", + "type": "straight", + "source": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "target": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "label": "repeat", "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-2e2edc75-bbd3-471d-8eeb-cf999d57beff", + "type": "straight", + "source": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "target": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73-743297e4-b8db-4fb8-b9cb-cf97be69e5f9", + "type": "straight", + "source": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", + "target": "Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73", + "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_repeatNode-7fc76f75-6be8-4f2c-9733-ce6181e94095_repeat" + "sourceHandle": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c.SUCCESS" }, { - "id": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054-logNode-df194add-e498-4946-b146-70da7d18fa5a", - "type": "default", - "source": "rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054", - "target": "logNode-df194add-e498-4946-b146-70da7d18fa5a", + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-d2aaec27-b04e-4a14-9095-5139f25f764d", + "type": "straight", + "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "target": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-a3cfe9d4-40a3-4562-9050-b0ebceaf7033", + "type": "straight", + "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", + "target": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_rrfNode-d4f0c7cd-910d-42a4-a672-8baa7b11f054" + "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.FAILURE" }, { - "id": "logNode-df194add-e498-4946-b146-70da7d18fa5a-callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", - "type": "default", - "source": "logNode-df194add-e498-4946-b146-70da7d18fa5a", - "target": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", + "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-b528a7fc-3661-4616-93d6-dfcbc9c3e9b8", + "type": "straight", + "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", + "target": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", + "label": "Condition met", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "label": "", "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_logNode-df194add-e498-4946-b146-70da7d18fa5a" + "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.SUCCESS" }, { - "id": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051-whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", - "type": "default", - "source": "callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051", - "target": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", + "id": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-0c9c1905-4fee-4b66-956e-700c7ecf4d54", + "type": "straight", + "source": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", + "target": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861-a32fb2c9-9e33-4138-9bbe-7ed57fb9a34a", + "type": "straight", + "source": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", + "target": "Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861", "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 - }, - "labelShowBg": true, - "sourceHandle": "source_callNode-c59f4fb8-031d-48aa-8eb6-1186f8e68051" + } }, { - "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51-logNode-182ee330-c12e-4a53-8859-d7f631429aa8", - "type": "default", - "source": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", - "target": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-7b021957-3891-447d-8cb1-f951a9eaf78d", + "type": "straight", + "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "target": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-60c2a8e5-0bb7-4ff4-ae23-308157f97aa0", + "type": "straight", + "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "target": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51_success" + "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" }, { - "id": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8-finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", - "type": "default", - "source": "logNode-182ee330-c12e-4a53-8859-d7f631429aa8", - "target": "finishNode-4e71b5d8-70df-49cb-ad68-cf59aea1445d", + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-71e7a062-c5f5-4c47-8538-0ff8551e585b", + "type": "straight", + "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "target": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "label": "", "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_logNode-182ee330-c12e-4a53-8859-d7f631429aa8" + "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE" }, { - "id": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51-logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", - "type": "default", - "source": "whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51", - "target": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-finish-b239fc56-a697-4be0-b292-de282ffc1073-173566f3-b538-414d-88b9-5f2938d9cd4f", + "type": "straight", + "source": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "target": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, - "label": "continue", "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-0c8bbd06-2a17-4c7e-b92b-d20d23090659", + "type": "straight", + "source": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "target": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-643cb434-4fa3-40bd-8554-fd9b115c9d19", + "type": "straight", + "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "target": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_whenNode-65ea7b0a-3208-4adf-a260-4506ddbe4a51_continue" + "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" }, { - "id": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229-assignmentNode-479e21a3-8602-4026-9255-e309951b650a", - "type": "default", - "source": "logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229", - "target": "assignmentNode-479e21a3-8602-4026-9255-e309951b650a", + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-92e0be09-6c62-4813-a0d5-69f4e7a72d3d", + "type": "straight", + "source": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "target": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "label": "", "labelBgPadding": [ 8, 4 ], "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-95a603eb-068b-4c7b-8274-eb6d4a43842c", + "type": "straight", + "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "target": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, "labelBgStyle": { - "fill": "#009688", - "color": "#ffffff", + "fill": "#FFCC00", + "color": "#fff", "fillOpacity": 0.7 }, - "labelShowBg": true, - "sourceHandle": "source_logNode-1fef5c7b-7d9d-46d3-a930-598b63c19229" + "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE" + }, + { + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6-4f3eadc4-f975-43ad-9ac3-5956e3773c64", + "type": "straight", + "source": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "target": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-cfeb3ab3-58e0-4912-be4d-88968fd5049e", + "type": "straight", + "source": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "target": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714-10e44d4a-7f21-4baf-9eed-d69635eff634", + "type": "straight", + "source": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "target": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } } ], "viewport": { - "x": 11.878767612114189, - "y": 19.930049100130475, - "zoom": 0.6070974421975234 + "x": -1573, + "y": -241, + "zoom": 1 } -} \ No newline at end of file +} From de74acaa1b3c7b3e6e9c676f68633bc520f487c1 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:45:59 +0100 Subject: [PATCH 14/22] feat: add org.gluu.agama.pw.main.json --- code/org.gluu.agama.pw.main.json | 1721 ++++++++++++++++++++++++++++++ 1 file changed, 1721 insertions(+) create mode 100644 code/org.gluu.agama.pw.main.json diff --git a/code/org.gluu.agama.pw.main.json b/code/org.gluu.agama.pw.main.json new file mode 100644 index 0000000..215be3f --- /dev/null +++ b/code/org.gluu.agama.pw.main.json @@ -0,0 +1,1721 @@ +{ + "nodes": [ + { + "width": 242, + "height": 30, + "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", + "position": { + "x": 1704, + "y": 478 + }, + "type": "notes", + "data": { + "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", + "type": "Agama-note", + "notes": "If user credentials is valid.", + "position": { + "x": 1704, + "y": 478 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": false, + "positionAbsolute": { + "x": 1704, + "y": 478 + }, + "dragging": false + }, + { + "width": 270, + "height": 42, + "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", + "position": { + "x": 2125.35, + "y": 483 + }, + "type": "notes", + "data": { + "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", + "type": "Agama-note", + "notes": "If the ACCOUNT_LOCK feature is enable.", + "position": { + "x": 2125.35, + "y": 483 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": true, + "positionAbsolute": { + "x": 2125.35, + "y": 483 + }, + "dragging": false + }, + { + "width": 270, + "height": 55, + "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", + "position": { + "x": 2446.0625, + "y": 493 + }, + "type": "notes", + "data": { + "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", + "type": "Agama-note", + "notes": "Lock user account. The user account will be lock if the maximum login attempt is reach.", + "position": { + "x": 2446.0625, + "y": 493 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": false, + "positionAbsolute": { + "x": 2446.0625, + "y": 493 + }, + "dragging": false + }, + { + "width": 270, + "height": 55, + "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", + "position": { + "x": 1279, + "y": 226 + }, + "type": "notes", + "data": { + "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", + "type": "Agama-note", + "notes": "IDP validate the user credentials and send back the result.", + "position": { + "x": 1279, + "y": 226 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": false, + "positionAbsolute": { + "x": 1279, + "y": 226 + }, + "dragging": false + }, + { + "width": 270, + "height": 55, + "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", + "position": { + "x": 846, + "y": 204 + }, + "type": "notes", + "data": { + "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", + "type": "Agama-note", + "notes": "Show login form to the UI to collect his username and password for validation.", + "position": { + "x": 846, + "y": 204 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": false, + "positionAbsolute": { + "x": 846, + "y": 204 + }, + "dragging": false + }, + { + "width": 270, + "height": 81, + "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", + "position": { + "x": 1242.0000000000002, + "y": -38 + }, + "type": "notes", + "data": { + "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", + "type": "Agama-note", + "notes": "The maximum number of attempts has been reached.\nIf account lock feature is enable, the user account will be lock for few minutes.", + "position": { + "x": 1242.0000000000002, + "y": -38 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": false, + "positionAbsolute": { + "x": 1242.0000000000002, + "y": -38 + }, + "dragging": false + }, + { + "width": 270, + "height": 68, + "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", + "position": { + "x": -10, + "y": -40 + }, + "type": "notes", + "data": { + "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", + "type": "Agama-note", + "notes": "The Password validation flow start here. The flow timeout can be tuned as well flow configurations.", + "position": { + "x": -10, + "y": -40 + }, + "skake": false, + "agamaData": { + "flowname": "org.gluu.agama.pw.main" + } + }, + "selected": false, + "positionAbsolute": { + "x": -10, + "y": -40 + }, + "dragging": false + }, + { + "width": 170, + "height": 124, + "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "position": { + "x": 2628, + "y": 286 + }, + "type": "assignment", + "data": { + "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "type": "Agama-assignment-Node", + "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2628, + "y": 286 + }, + "agamaData": { + "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "type": "Agama-assignment-Node", + "displayName": "Provide UI feedback", + "hasComment": true, + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "assignments": [ + { + "variableTypeCheck": true, + "assignmentExpression": "Invalid credentials. Please try again!", + "assignedVariableName": "uiFeedback.errorMessage" + }, + { + "variableTypeCheck": false, + "assignmentExpression": "credentials.username", + "assignedVariableName": "uiFeedback.uid" + } + ], + "nodeIcon": "material-symbols:equal", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "positionAbsolute": { + "x": 2628, + "y": 286 + }, + "selected": false, + "dragging": false + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "position": { + "x": 2426, + "y": 286 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2426, + "y": 286 + }, + "agamaData": { + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "type": "Agama-log-Node", + "displayName": "Failed login attempt", + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Maximum attempts reached. Password validation failed.\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2426, + "y": 286 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "position": { + "x": 2510, + "y": 561 + }, + "type": "call", + "data": { + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "type": "Agama-call-Node", + "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2510, + "y": 561 + }, + "agamaData": { + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "type": "Agama-call-Node", + "displayName": "Lock user account", + "hasComment": true, + "comment": "Lock user account if needed or unlock if the expiration time is over.", + "javaClassName": "", + "javaMethodName": "lockAccount", + "javaVariableName": "validationService", + "exceptionVariableField": "", + "callType": "Call method on instance", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "arguments": [ + "credentials.username" + ], + "nodeIcon": "material-symbols:code", + "asssignedVariableName": "lockResult", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2510, + "y": 561 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "position": { + "x": 2311, + "y": 561 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2311, + "y": 561 + }, + "agamaData": { + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "type": "Agama-log-Node", + "displayName": "Log account lock", + "hasComment": true, + "comment": "Account lock feature is active.", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Start account lock process\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": 2311, + "y": 561 + }, + "dragging": false + }, + { + "width": 210, + "height": 140, + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "position": { + "x": 2186, + "y": 343 + }, + "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "type": "when", + "data": { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "type": "Agama-when-Node", + "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2186, + "y": 343 + }, + "agamaData": { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "type": "Agama-when-Node", + "conditions": [ + { + "variable": "conf.ENABLE_LOCK", + "operator": "is", + "dataValue": "\"true\"", + "combinator": "none" + } + ], + "hasComment": true, + "inRepeatBlock": false, + "flowname": "org.gluu.agama.pw.main" + }, + "handles": [ + "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE", + "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" + ], + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2186, + "y": 343 + } + }, + { + "width": 170, + "height": 124, + "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "position": { + "x": 2037, + "y": 571 + }, + "type": "finish", + "data": { + "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "type": "Agama-finish-Flow", + "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "handles": [], + "position": { + "x": 2037, + "y": 571 + }, + "agamaData": { + "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "type": "Agama-finish-Flow", + "hasSuccess": false, + "hasFailure": false, + "hasComment": true, + "comment": "Password validation completed successfuly!", + "flowfilename": "", + "returnVariable": "{ userId: credentials.username}", + "finishMode": "withSuccess", + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Flow completed", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2037, + "y": 571 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "position": { + "x": 1974, + "y": 287 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1974, + "y": 287 + }, + "agamaData": { + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "type": "Agama-log-Node", + "displayName": "Log failed login attempt", + "hasComment": true, + "comment": "Invalid credentials provided.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Invalid credentials provided\"", + "logLevel": "error", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1974, + "y": 287 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "position": { + "x": 1837, + "y": 571 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "type": "Agama-log-Node", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1837, + "y": 571 + }, + "agamaData": { + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "type": "Agama-log-Node", + "displayName": "Log successfully validation", + "hasComment": true, + "comment": "add entry in log file for successfull login attempt.", + "whenCondition": "WhenTrue", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Valid credentials provided\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1837, + "y": 571 + } + }, + { + "width": 210, + "height": 140, + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "position": { + "x": 1724, + "y": 341 + }, + "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "type": "when", + "data": { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "type": "Agama-when-Node", + "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1724, + "y": 341 + }, + "agamaData": { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "type": "Agama-when-Node", + "conditions": [ + { + "variable": "uiFeedback.succeed", + "operator": "is", + "dataValue": "true", + "combinator": "none" + } + ], + "hasComment": true, + "inRepeatBlock": false, + "comment": "If user credentials is valid, the flow end successfully.", + "flowname": "org.gluu.agama.pw.main" + }, + "handles": [ + "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE", + "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" + ], + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1724, + "y": 341 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "position": { + "x": 1524, + "y": 287 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "type": "Agama-log-Node", + "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1524, + "y": 287 + }, + "agamaData": { + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "type": "Agama-log-Node", + "displayName": "Log validation done", + "hasComment": true, + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Validation done\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1524, + "y": 287 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "position": { + "x": 1324, + "y": 287 + }, + "type": "call", + "data": { + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "type": "Agama-call-Node", + "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1324, + "y": 287 + }, + "agamaData": { + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "type": "Agama-call-Node", + "displayName": "Validate credentials", + "hasComment": true, + "comment": "Validate provided user credentials.", + "javaClassName": "", + "javaMethodName": "validate", + "javaVariableName": "validationService", + "exceptionVariableField": "", + "callType": "Call method on instance", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "arguments": [ + "credentials.username", + "credentials.password" + ], + "nodeIcon": "material-symbols:code", + "asssignedVariableName": "uiFeedback.succeed", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1324, + "y": 287 + } + }, + { + "width": 170, + "height": 124, + "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "position": { + "x": 1276, + "y": 58 + }, + "type": "finish", + "data": { + "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "type": "Agama-finish-Flow", + "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "handles": [], + "position": { + "x": 1276, + "y": 58 + }, + "agamaData": { + "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "type": "Agama-finish-Flow", + "hasSuccess": false, + "hasFailure": false, + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "flowfilename": "", + "returnVariable": "Password validation failed!", + "finishMode": "withFailure", + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Password validation failed!", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1276, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "position": { + "x": 1076, + "y": 58 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "type": "Agama-log-Node", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1076, + "y": 58 + }, + "agamaData": { + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "type": "Agama-log-Node", + "displayName": "Log max attempt reached", + "hasComment": true, + "comment": "The login flow will end here with failure.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"The maximum login attempt has been reached!\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "hasSuccess": "", + "hasFailure": "", + "hasNoRepeat": false, + "hasRepeat": false, + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1076, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "position": { + "x": 1124, + "y": 287 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "type": "Agama-log-Node", + "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 1124, + "y": 287 + }, + "agamaData": { + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "type": "Agama-log-Node", + "displayName": "Log credentials collected", + "hasComment": true, + "comment": "Log the successfull used credentials retrieval.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"User credentials collected successfully!\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 1124, + "y": 287 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "position": { + "x": 924, + "y": 287 + }, + "type": "rrf", + "data": { + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "type": "Agama-rrf-Node", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "whenCondition": "WhenFalse", + "inRepeatBlock": true, + "inIterateBlock": false, + "position": { + "x": 924, + "y": 287 + }, + "agamaData": { + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "type": "Agama-rrf-Node", + "displayName": "Retrieve user credentials", + "hasComment": true, + "comment": "Retrieve user credentials from UI.", + "whenCondition": "WhenFalse", + "inRepeatBlock": true, + "inIterateBlock": false, + "assignments": [], + "nodeIcon": "ph:globe-simple", + "templatePath": "login-basic.ftlh", + "asssignedVariableName": "credentials", + "arguments": [ + "uiFeedback" + ], + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "positionAbsolute": { + "x": 924, + "y": 287 + }, + "dragging": false + }, + { + "width": 170, + "height": 124, + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "position": { + "x": 826, + "y": 58 + }, + "type": "repeat", + "data": { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "type": "Agama-repeat-Node", + "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "handles": [ + "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow", + "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" + ], + "position": { + "x": 826, + "y": 58 + }, + "agamaData": { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "type": "Agama-repeat-Node", + "nodeIcon": "material-symbols:event-repeat-outline-rounded", + "maxIteration": "6", + "maxIterationVariableName": "count", + "displayName": "Validation Loop", + "comment": "Iterate x times max", + "hasComment": true, + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 826, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "position": { + "x": 626, + "y": 58 + }, + "type": "call", + "data": { + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "type": "Agama-call-Node", + "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 626, + "y": 58 + }, + "agamaData": { + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "type": "Agama-call-Node", + "displayName": "Service initialization", + "hasComment": true, + "comment": "Get an instance of PasswordService Class.", + "javaClassName": "org.gluu.agama.pw.PasswordService", + "javaMethodName": "getInstance", + "javaVariableName": "", + "exceptionVariableField": "", + "callType": "Call static method", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "arguments": [ + "conf" + ], + "nodeIcon": "material-symbols:code", + "asssignedVariableName": "validationService", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 626, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "position": { + "x": 426, + "y": 58 + }, + "type": "assignment", + "data": { + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "type": "Agama-assignment-Node", + "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 426, + "y": 58 + }, + "agamaData": { + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "type": "Agama-assignment-Node", + "displayName": "Declare variables", + "hasComment": true, + "comment": " Create json variable for UI feedback.", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "assignments": [ + { + "variableTypeCheck": false, + "assignmentExpression": "{}", + "assignedVariableName": "uiFeedback" + } + ], + "nodeIcon": "material-symbols:equal", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 426, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "position": { + "x": 226, + "y": 58 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "type": "Agama-log-Node", + "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 226, + "y": 58 + }, + "agamaData": { + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "Agama-log-Node", + "displayName": "Log flow start", + "hasComment": true, + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Start execution of the password validation flow.\"", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 226, + "y": 58 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "start", + "sourcePosition": "right", + "data": { + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "Agama-start-Flow", + "position": { + "x": 26, + "y": 58 + }, + "inRepeatBlock": false, + "agamaData": { + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "type": "Agama-start-Flow", + "displayName": "Password Validation Flow", + "hasComment": true, + "comment": "", + "isTopLevelFlow": true, + "basepath": "", + "configParams": "{}", + "nodeIcon": "material-symbols:line-start-square", + "timeout": "500", + "inputs": "", + "configs": "conf", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "position": { + "x": 26, + "y": 58 + }, + "selected": false, + "positionAbsolute": { + "x": 26, + "y": 58 + }, + "dragging": false + }, + { + "width": 170, + "height": 124, + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "position": { + "x": 2704, + "y": 561 + }, + "type": "log", + "data": { + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "type": "Agama-log-Node", + "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "position": { + "x": 2704, + "y": 561 + }, + "agamaData": { + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "type": "Agama-log-Node", + "displayName": "Log account lock result", + "hasComment": true, + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "logMessage": "\"Account lock result\" lockResult", + "logLevel": "info", + "nodeIcon": "octicon:log-16", + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "selected": false, + "dragging": false, + "positionAbsolute": { + "x": 2704, + "y": 561 + } + }, + { + "width": 170, + "height": 124, + "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "position": { + "x": 2903, + "y": 561 + }, + "type": "assignment", + "data": { + "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "type": "Agama-assignment-Node", + "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "whenCondition": "", + "inRepeatBlock": "", + "inIterateBlock": "", + "position": { + "x": 2903, + "y": 561 + }, + "agamaData": { + "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "type": "Agama-assignment-Node", + "displayName": "Provide UI feedback", + "hasComment": true, + "comment": "", + "whenCondition": "WhenFalse", + "inRepeatBlock": false, + "inIterateBlock": false, + "assignments": [ + { + "variableTypeCheck": false, + "assignmentExpression": "lockResult", + "assignedVariableName": "uiFeedback.lockMessage" + } + ], + "nodeIcon": "material-symbols:equal", + "position": { + "x": 2836 + }, + "flowname": "org.gluu.agama.pw.main" + }, + "skake": false + }, + "positionAbsolute": { + "x": 2903, + "y": 561 + }, + "selected": false, + "dragging": false, + "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "whenCondition": "", + "inRepeatBlock": "", + "inIterateBlock": "" + } + ], + "edges": [ + { + "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4-Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-f17c8532-e168-4a92-849c-48121f4bf9dc", + "type": "straight", + "source": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", + "target": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-ebd8e416-520f-48c2-8630-fcf6a4dbf26e", + "type": "straight", + "source": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", + "target": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-cdc03327-22f7-4c3e-a227-2772c73df278", + "type": "straight", + "source": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", + "target": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-0be28bd6-1a54-4d5d-9b3d-4a92b9475dcb", + "type": "straight", + "source": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", + "target": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-488cb44f-2961-4541-b602-1dbce69cd61e", + "type": "straight", + "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "target": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "label": "Do Repeat", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" + }, + { + "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-c6b2b2aa-a5e0-4f10-866f-6433a5eebf46", + "type": "straight", + "source": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", + "target": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-2eae45f1-a624-4904-b8cb-6d03020207b5", + "type": "straight", + "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", + "target": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow" + }, + { + "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674-edd36a14-2ec2-4141-bec1-688d7e5ef37d", + "type": "straight", + "source": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", + "target": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-25609b7e-aad2-4535-a7d4-cba7c1d683f5", + "type": "straight", + "source": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", + "target": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-2e2edc75-bbd3-471d-8eeb-cf999d57beff", + "type": "straight", + "source": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", + "target": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73-743297e4-b8db-4fb8-b9cb-cf97be69e5f9", + "type": "straight", + "source": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", + "target": "Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73", + "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c.SUCCESS" + }, + { + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-d2aaec27-b04e-4a14-9095-5139f25f764d", + "type": "straight", + "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "target": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-a3cfe9d4-40a3-4562-9050-b0ebceaf7033", + "type": "straight", + "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", + "target": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.FAILURE" + }, + { + "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-b528a7fc-3661-4616-93d6-dfcbc9c3e9b8", + "type": "straight", + "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", + "target": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", + "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.SUCCESS" + }, + { + "id": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-0c9c1905-4fee-4b66-956e-700c7ecf4d54", + "type": "straight", + "source": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", + "target": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861-a32fb2c9-9e33-4138-9bbe-7ed57fb9a34a", + "type": "straight", + "source": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", + "target": "Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-7b021957-3891-447d-8cb1-f951a9eaf78d", + "type": "straight", + "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", + "target": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-60c2a8e5-0bb7-4ff4-ae23-308157f97aa0", + "type": "straight", + "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "target": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" + }, + { + "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-71e7a062-c5f5-4c47-8538-0ff8551e585b", + "type": "straight", + "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", + "target": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE" + }, + { + "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-finish-b239fc56-a697-4be0-b292-de282ffc1073-173566f3-b538-414d-88b9-5f2938d9cd4f", + "type": "straight", + "source": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", + "target": "finish-b239fc56-a697-4be0-b292-de282ffc1073", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-0c8bbd06-2a17-4c7e-b92b-d20d23090659", + "type": "straight", + "source": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", + "target": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-643cb434-4fa3-40bd-8554-fd9b115c9d19", + "type": "straight", + "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "target": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "label": "Condition met", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" + }, + { + "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-92e0be09-6c62-4813-a0d5-69f4e7a72d3d", + "type": "straight", + "source": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", + "target": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-95a603eb-068b-4c7b-8274-eb6d4a43842c", + "type": "straight", + "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", + "target": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + }, + "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE" + }, + { + "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6-4f3eadc4-f975-43ad-9ac3-5956e3773c64", + "type": "straight", + "source": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", + "target": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-cfeb3ab3-58e0-4912-be4d-88968fd5049e", + "type": "straight", + "source": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", + "target": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + }, + { + "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714-10e44d4a-7f21-4baf-9eed-d69635eff634", + "type": "straight", + "source": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", + "target": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", + "label": "", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "labelBgStyle": { + "fill": "#FFCC00", + "color": "#fff", + "fillOpacity": 0.7 + } + } + ], + "viewport": { + "x": -1573, + "y": -241, + "zoom": 1 + } +} \ No newline at end of file From 2ee0777806401ff82def4e31cb4ce8e0615d7037 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:00 +0100 Subject: [PATCH 15/22] feat: add org.gluu.agama.pw.main.flow --- code/org.gluu.agama.pw.main.flow | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 code/org.gluu.agama.pw.main.flow diff --git a/code/org.gluu.agama.pw.main.flow b/code/org.gluu.agama.pw.main.flow new file mode 100644 index 0000000..f6ce402 --- /dev/null +++ b/code/org.gluu.agama.pw.main.flow @@ -0,0 +1,43 @@ +Flow org.gluu.agama.pw.main + Basepath "" + Timeout 500 seconds + Configs conf +Log "@info Start execution of the password validation flow." +// Create json variable for UI feedback. +uiFeedback = {} +// Get an instance of PasswordService Class. +validationService = Call org.gluu.agama.pw.PasswordService#getInstance conf +// Iterate x times max +count = Repeat 6 times max + // Retrieve user credentials from UI. + credentials = RRF "login-basic.ftlh" uiFeedback + // Log the successfull used credentials retrieval. + Log "@info User credentials collected successfully!" + // Validate provided user credentials. + uiFeedback.succeed = Call validationService validate credentials.username credentials.password + Log "@info Validation done" + // If user credentials is valid, the flow end successfully. + When uiFeedback.succeed is true + // add entry in log file for successfull login attempt. + Log "@info Valid credentials provided" + // Password validation completed successfuly! + it_ouwmw = {success:true, data: { userId: credentials.username}} + Finish it_ouwmw + // Invalid credentials provided. + Log "@error Invalid credentials provided" + When conf.ENABLE_LOCK is "true" + // Account lock feature is active. + Log "@info Start account lock process" + // Lock user account if needed or unlock if the expiration time is over. + lockResult = Call validationService lockAccount credentials.username + Log "@info Account lock result" lockResult + uiFeedback.lockMessage = lockResult + // Maximum attempts reached. Password validation failed! + Log "@info Maximum attempts reached. Password validation failed." + uiFeedback.errorMessage = "Invalid credentials. Please try again!" + uiFeedback.uid = credentials.username +// The login flow will end here with failure. +Log "@info The maximum login attempt has been reached!" +// Maximum attempts reached. Password validation failed! +it_zgoew = {success:false, error: "Password validation failed!"} +Finish it_zgoew \ No newline at end of file From c15132636e58b85ed0400797d5231d59c17a748c Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:03 +0100 Subject: [PATCH 16/22] feat: update project.json --- project.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/project.json b/project.json index 08572ef..bc831bc 100644 --- a/project.json +++ b/project.json @@ -16,7 +16,8 @@ "noDirectLaunch": [], "configs": { "org.gluu.agama.pw.basic": {}, - "": {} + "": {}, + "org.gluu.agama.pw.main": {} }, "name": "agama-pw" } \ No newline at end of file From f55721677f2636a2b3afd584fa01f82f715da674 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:05 +0100 Subject: [PATCH 17/22] refactor: delete org.gluu.agama.pw.basic.flow --- code/org.gluu.agama.pw.basic.flow | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 code/org.gluu.agama.pw.basic.flow diff --git a/code/org.gluu.agama.pw.basic.flow b/code/org.gluu.agama.pw.basic.flow deleted file mode 100644 index e26a642..0000000 --- a/code/org.gluu.agama.pw.basic.flow +++ /dev/null @@ -1,30 +0,0 @@ -// Basic password login flow -Flow org.gluu.agama.pw.basic - Basepath "" - Timeout 500 seconds -// Create variable to receive validation result -validationResult = {} -// Get an instance of PasswordService Class -passwordValidationService = Call org.gluu.agama.pw.basic.PasswordService#getInstance -// Iterate x times max -currentIteration = Repeat 3 times max - // Retrieve user credentials from UI - credentials = RRF "login-basic.ftlh" validationResult - // Log the successfull used credentials retrieval. - Log "@info User credentials collected successfully!" - // Validate provided user credentials - validationResult.status = Call passwordValidationService validate credentials.username credentials.password - // If user credentials is valid - When validationResult.status is true - // add entry in log file for successfull login attempt - Log "@info Valid credentials provided." - // Password validation completed successfuly! - it_onnjz = {success:true, data: { userId: credentials.username}} - Finish it_onnjz - // Invalid credentials provided - Log "@info Invalid credentials provided." - // Provide feedback about the error message to user - validationResult.errorMessage = "The provided credentials are not valid. Please try again!" -// Maximum attempts reached. Password validation failed! -it_amwkx = {success:false, error: "Password validation failed!"} -Finish it_amwkx \ No newline at end of file From 7c20920641e42bcb5d9fee7b234c152b270386d9 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:06 +0100 Subject: [PATCH 18/22] refactor: delete org.gluu.agama.pw.basic.json --- code/org.gluu.agama.pw.basic.json | 1679 ----------------------------- 1 file changed, 1679 deletions(-) delete mode 100644 code/org.gluu.agama.pw.basic.json diff --git a/code/org.gluu.agama.pw.basic.json b/code/org.gluu.agama.pw.basic.json deleted file mode 100644 index 18d9e13..0000000 --- a/code/org.gluu.agama.pw.basic.json +++ /dev/null @@ -1,1679 +0,0 @@ -{ - "nodes": [ - { - "width": 242, - "height": 30, - "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", - "position": { - "x": 1704, - "y": 478 - }, - "type": "notes", - "data": { - "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", - "type": "Agama-note", - "notes": "If user credentials is valid.", - "position": { - "x": 1704, - "y": 478 - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 1704, - "y": 478 - }, - "dragging": false - }, - { - "width": 270, - "height": 42, - "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", - "position": { - "x": 2125.35, - "y": 483 - }, - "type": "notes", - "data": { - "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", - "type": "Agama-note", - "notes": "If the ACCOUNT_LOCK feature is enable.", - "position": { - "x": 2125.35, - "y": 483 - }, - "skake": false - }, - "selected": true, - "positionAbsolute": { - "x": 2125.35, - "y": 483 - }, - "dragging": false - }, - { - "width": 270, - "height": 55, - "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", - "position": { - "x": 2446.0625, - "y": 493 - }, - "type": "notes", - "data": { - "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", - "type": "Agama-note", - "notes": "Lock user account. The user account will be lock if the maximum login attempt is reach.", - "position": { - "x": 2446.0625, - "y": 493 - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 2446.0625, - "y": 493 - }, - "dragging": false - }, - { - "width": 270, - "height": 55, - "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", - "position": { - "x": 1279, - "y": 226 - }, - "type": "notes", - "data": { - "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", - "type": "Agama-note", - "notes": "IDP validate the user credentials and send back the result.", - "position": { - "x": 1279, - "y": 226 - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 1279, - "y": 226 - }, - "dragging": false - }, - { - "width": 270, - "height": 55, - "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", - "position": { - "x": 846, - "y": 204 - }, - "type": "notes", - "data": { - "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", - "type": "Agama-note", - "notes": "Show login form to the UI to collect his username and password for validation.", - "position": { - "x": 846, - "y": 204 - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 846, - "y": 204 - }, - "dragging": false - }, - { - "width": 270, - "height": 81, - "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", - "position": { - "x": 1242.0000000000002, - "y": -38 - }, - "type": "notes", - "data": { - "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", - "type": "Agama-note", - "notes": "The maximum number of attempts has been reached.\nIf account lock feature is enable, the user account will be lock for few minutes.", - "position": { - "x": 1242.0000000000002, - "y": -38 - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 1242.0000000000002, - "y": -38 - }, - "dragging": false - }, - { - "width": 270, - "height": 68, - "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", - "position": { - "x": -10, - "y": -40 - }, - "type": "notes", - "data": { - "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", - "type": "Agama-note", - "notes": "The Password validation flow start here. The flow timeout can be tuned as well flow configurations.", - "position": { - "x": -10, - "y": -40 - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": -10, - "y": -40 - }, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "position": { - "x": 2628, - "y": 286 - }, - "type": "assignment", - "data": { - "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2628, - "y": 286 - }, - "agamaData": { - "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "type": "Agama-assignment-Node", - "displayName": "Provide UI feedback", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "assignments": [ - { - "variableTypeCheck": true, - "assignmentExpression": "Invalid credentials. Please try again!", - "assignedVariableName": "uiFeedback.errorMessage" - }, - { - "variableTypeCheck": false, - "assignmentExpression": "credentials.username", - "assignedVariableName": "uiFeedback.uid" - } - ], - "nodeIcon": "material-symbols:equal" - }, - "skake": false - }, - "positionAbsolute": { - "x": 2628, - "y": 286 - }, - "selected": false, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "position": { - "x": 2426, - "y": 286 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2426, - "y": 286 - }, - "agamaData": { - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "type": "Agama-log-Node", - "displayName": "Failed login attempt", - "hasComment": true, - "comment": "Maximum attempts reached. Password validation failed!", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Maximum attempts reached. Password validation failed.\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2426, - "y": 286 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "position": { - "x": 2510, - "y": 561 - }, - "type": "call", - "data": { - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "type": "Agama-call-Node", - "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2510, - "y": 561 - }, - "agamaData": { - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "type": "Agama-call-Node", - "displayName": "Lock user account", - "hasComment": true, - "comment": "Lock user account if needed or unlock if the expiration time is over.", - "javaClassName": "", - "javaMethodName": "lockAccount", - "javaVariableName": "validationService", - "exceptionVariableField": "", - "callType": "Call method on instance", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "arguments": [ - "credentials.username" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "lockResult" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2510, - "y": 561 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "position": { - "x": 2311, - "y": 561 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2311, - "y": 561 - }, - "agamaData": { - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "type": "Agama-log-Node", - "displayName": "Log account lock", - "hasComment": true, - "comment": "Account lock feature is active.", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Start account lock process\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 2311, - "y": 561 - }, - "dragging": false - }, - { - "width": 210, - "height": 140, - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "position": { - "x": 2186, - "y": 343 - }, - "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "type": "when", - "data": { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "type": "Agama-when-Node", - "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2186, - "y": 343 - }, - "agamaData": { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "type": "Agama-when-Node", - "conditions": [ - { - "variable": "conf.ENABLE_LOCK", - "operator": "is", - "dataValue": "\"true\"", - "combinator": "none" - } - ], - "hasComment": true, - "inRepeatBlock": false - }, - "handles": [ - "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE", - "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" - ], - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2186, - "y": 343 - } - }, - { - "width": 170, - "height": 124, - "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "position": { - "x": 2037, - "y": 571 - }, - "type": "finish", - "data": { - "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "type": "Agama-finish-Flow", - "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "handles": [], - "position": { - "x": 2037, - "y": 571 - }, - "agamaData": { - "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "type": "Agama-finish-Flow", - "hasSuccess": false, - "hasFailure": false, - "hasComment": true, - "comment": "Password validation completed successfuly!", - "flowfilename": "", - "returnVariable": "{ userId: credentials.username}", - "finishMode": "withSuccess", - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Flow completed" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2037, - "y": 571 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "position": { - "x": 1974, - "y": 287 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1974, - "y": 287 - }, - "agamaData": { - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "type": "Agama-log-Node", - "displayName": "Log failed login attempt", - "hasComment": true, - "comment": "Invalid credentials provided.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Invalid credentials provided\"", - "logLevel": "error", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1974, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "position": { - "x": 1837, - "y": 571 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1837, - "y": 571 - }, - "agamaData": { - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "type": "Agama-log-Node", - "displayName": "Log successfully validation", - "hasComment": true, - "comment": "add entry in log file for successfull login attempt.", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Valid credentials provided\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1837, - "y": 571 - } - }, - { - "width": 210, - "height": 140, - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "position": { - "x": 1724, - "y": 341 - }, - "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "type": "when", - "data": { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "type": "Agama-when-Node", - "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1724, - "y": 341 - }, - "agamaData": { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "type": "Agama-when-Node", - "conditions": [ - { - "variable": "uiFeedback.succeed", - "operator": "is", - "dataValue": "true", - "combinator": "none" - } - ], - "hasComment": true, - "inRepeatBlock": false, - "comment": "If user credentials is valid, the flow end successfully." - }, - "handles": [ - "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE", - "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" - ], - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1724, - "y": 341 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "position": { - "x": 1524, - "y": 287 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "type": "Agama-log-Node", - "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1524, - "y": 287 - }, - "agamaData": { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "type": "Agama-log-Node", - "displayName": "Log validation done", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Validation done\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1524, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "position": { - "x": 1324, - "y": 287 - }, - "type": "call", - "data": { - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "type": "Agama-call-Node", - "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1324, - "y": 287 - }, - "agamaData": { - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "type": "Agama-call-Node", - "displayName": "Validate credentials", - "hasComment": true, - "comment": "Validate provided user credentials.", - "javaClassName": "", - "javaMethodName": "validate", - "javaVariableName": "validationService", - "exceptionVariableField": "", - "callType": "Call method on instance", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "arguments": [ - "credentials.username", - "credentials.password" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "uiFeedback.succeed" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1324, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "position": { - "x": 1276, - "y": 58 - }, - "type": "finish", - "data": { - "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "type": "Agama-finish-Flow", - "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "handles": [], - "position": { - "x": 1276, - "y": 58 - }, - "agamaData": { - "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "type": "Agama-finish-Flow", - "hasSuccess": false, - "hasFailure": false, - "hasComment": true, - "comment": "Maximum attempts reached. Password validation failed!", - "flowfilename": "", - "returnVariable": "Password validation failed!", - "finishMode": "withFailure", - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Password validation failed!" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1276, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "position": { - "x": 1076, - "y": 58 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "type": "Agama-log-Node", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1076, - "y": 58 - }, - "agamaData": { - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "type": "Agama-log-Node", - "displayName": "Log max attempt reached", - "hasComment": true, - "comment": "The login flow will end here with failure.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"The maximum login attempt has been reached!\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "hasSuccess": "", - "hasFailure": "", - "hasNoRepeat": false, - "hasRepeat": false - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1076, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "position": { - "x": 1124, - "y": 287 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "type": "Agama-log-Node", - "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1124, - "y": 287 - }, - "agamaData": { - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "type": "Agama-log-Node", - "displayName": "Log credentials collected", - "hasComment": true, - "comment": "Log the successfull used credentials retrieval.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"User credentials collected successfully!\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1124, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "position": { - "x": 924, - "y": 287 - }, - "type": "rrf", - "data": { - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "type": "Agama-rrf-Node", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "whenCondition": "WhenFalse", - "inRepeatBlock": true, - "inIterateBlock": false, - "position": { - "x": 924, - "y": 287 - }, - "agamaData": { - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "type": "Agama-rrf-Node", - "displayName": "Retrieve user credentials", - "hasComment": true, - "comment": "Retrieve user credentials from UI.", - "whenCondition": "WhenFalse", - "inRepeatBlock": true, - "inIterateBlock": false, - "assignments": [], - "nodeIcon": "ph:globe-simple", - "templatePath": "login-basic.ftlh", - "asssignedVariableName": "credentials", - "arguments": [ - "uiFeedback" - ] - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 924, - "y": 287 - }, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "position": { - "x": 826, - "y": 58 - }, - "type": "repeat", - "data": { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "type": "Agama-repeat-Node", - "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "handles": [ - "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow", - "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" - ], - "position": { - "x": 826, - "y": 58 - }, - "agamaData": { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "type": "Agama-repeat-Node", - "nodeIcon": "material-symbols:event-repeat-outline-rounded", - "maxIteration": "6", - "maxIterationVariableName": "count", - "displayName": "Validation Loop", - "comment": "Iterate x times max", - "hasComment": true - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 826, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "position": { - "x": 626, - "y": 58 - }, - "type": "call", - "data": { - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "type": "Agama-call-Node", - "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 626, - "y": 58 - }, - "agamaData": { - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "type": "Agama-call-Node", - "displayName": "Service initialization", - "hasComment": true, - "comment": "Get an instance of PasswordService Class.", - "javaClassName": "org.gluu.agama.pw.PasswordService", - "javaMethodName": "getInstance", - "javaVariableName": "", - "exceptionVariableField": "", - "callType": "Call static method", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "arguments": [ - "conf" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "validationService" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 626, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "position": { - "x": 426, - "y": 58 - }, - "type": "assignment", - "data": { - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 426, - "y": 58 - }, - "agamaData": { - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "type": "Agama-assignment-Node", - "displayName": "Declare variables", - "hasComment": true, - "comment": " Create json variable for UI feedback.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "assignments": [ - { - "variableTypeCheck": false, - "assignmentExpression": "{}", - "assignedVariableName": "uiFeedback" - } - ], - "nodeIcon": "material-symbols:equal" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 426, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "position": { - "x": 226, - "y": 58 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "type": "Agama-log-Node", - "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 226, - "y": 58 - }, - "agamaData": { - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "Agama-log-Node", - "displayName": "Log flow start", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Start execution of the password validation flow.\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 226, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "start", - "sourcePosition": "right", - "data": { - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "Agama-start-Flow", - "position": { - "x": 26, - "y": 58 - }, - "inRepeatBlock": false, - "agamaData": { - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "Agama-start-Flow", - "displayName": "Password Validation Flow", - "hasComment": true, - "comment": "", - "isTopLevelFlow": true, - "basepath": "", - "configParams": "{}", - "nodeIcon": "material-symbols:line-start-square", - "timeout": "500", - "inputs": "", - "configs": "conf", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "position": { - "x": 26, - "y": 58 - }, - "selected": false, - "positionAbsolute": { - "x": 26, - "y": 58 - }, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "position": { - "x": 2704, - "y": 561 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "type": "Agama-log-Node", - "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2704, - "y": 561 - }, - "agamaData": { - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "type": "Agama-log-Node", - "displayName": "Log account lock result", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Account lock result\" lockResult", - "logLevel": "info", - "nodeIcon": "octicon:log-16" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2704, - "y": 561 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "position": { - "x": 2903, - "y": 561 - }, - "type": "assignment", - "data": { - "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "whenCondition": "", - "inRepeatBlock": "", - "inIterateBlock": "", - "position": { - "x": 2903, - "y": 561 - }, - "agamaData": { - "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "type": "Agama-assignment-Node", - "displayName": "Provide UI feedback", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "assignments": [ - { - "variableTypeCheck": false, - "assignmentExpression": "lockResult", - "assignedVariableName": "uiFeedback.lockMessage" - } - ], - "nodeIcon": "material-symbols:equal", - "position": { - "x": 2836 - } - }, - "skake": false - }, - "positionAbsolute": { - "x": 2903, - "y": 561 - }, - "selected": false, - "dragging": false, - "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "whenCondition": "", - "inRepeatBlock": "", - "inIterateBlock": "" - } - ], - "edges": [ - { - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4-Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-f17c8532-e168-4a92-849c-48121f4bf9dc", - "type": "straight", - "source": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "target": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-ebd8e416-520f-48c2-8630-fcf6a4dbf26e", - "type": "straight", - "source": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "target": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-cdc03327-22f7-4c3e-a227-2772c73df278", - "type": "straight", - "source": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "target": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-0be28bd6-1a54-4d5d-9b3d-4a92b9475dcb", - "type": "straight", - "source": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "target": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-488cb44f-2961-4541-b602-1dbce69cd61e", - "type": "straight", - "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "target": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "label": "Do Repeat", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" - }, - { - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-c6b2b2aa-a5e0-4f10-866f-6433a5eebf46", - "type": "straight", - "source": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "target": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-2eae45f1-a624-4904-b8cb-6d03020207b5", - "type": "straight", - "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "target": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow" - }, - { - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674-edd36a14-2ec2-4141-bec1-688d7e5ef37d", - "type": "straight", - "source": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "target": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-25609b7e-aad2-4535-a7d4-cba7c1d683f5", - "type": "straight", - "source": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "target": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-2e2edc75-bbd3-471d-8eeb-cf999d57beff", - "type": "straight", - "source": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "target": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73-743297e4-b8db-4fb8-b9cb-cf97be69e5f9", - "type": "straight", - "source": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", - "target": "Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c.SUCCESS" - }, - { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-d2aaec27-b04e-4a14-9095-5139f25f764d", - "type": "straight", - "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "target": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-a3cfe9d4-40a3-4562-9050-b0ebceaf7033", - "type": "straight", - "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", - "target": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.FAILURE" - }, - { - "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-b528a7fc-3661-4616-93d6-dfcbc9c3e9b8", - "type": "straight", - "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", - "target": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.SUCCESS" - }, - { - "id": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-0c9c1905-4fee-4b66-956e-700c7ecf4d54", - "type": "straight", - "source": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", - "target": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861-a32fb2c9-9e33-4138-9bbe-7ed57fb9a34a", - "type": "straight", - "source": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", - "target": "Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-7b021957-3891-447d-8cb1-f951a9eaf78d", - "type": "straight", - "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "target": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-60c2a8e5-0bb7-4ff4-ae23-308157f97aa0", - "type": "straight", - "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "target": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" - }, - { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-71e7a062-c5f5-4c47-8538-0ff8551e585b", - "type": "straight", - "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "target": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE" - }, - { - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-finish-b239fc56-a697-4be0-b292-de282ffc1073-173566f3-b538-414d-88b9-5f2938d9cd4f", - "type": "straight", - "source": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "target": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-0c8bbd06-2a17-4c7e-b92b-d20d23090659", - "type": "straight", - "source": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "target": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-643cb434-4fa3-40bd-8554-fd9b115c9d19", - "type": "straight", - "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "target": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" - }, - { - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-92e0be09-6c62-4813-a0d5-69f4e7a72d3d", - "type": "straight", - "source": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "target": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-95a603eb-068b-4c7b-8274-eb6d4a43842c", - "type": "straight", - "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "target": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE" - }, - { - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6-4f3eadc4-f975-43ad-9ac3-5956e3773c64", - "type": "straight", - "source": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "target": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-cfeb3ab3-58e0-4912-be4d-88968fd5049e", - "type": "straight", - "source": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "target": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714-10e44d4a-7f21-4baf-9eed-d69635eff634", - "type": "straight", - "source": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "target": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - } - ], - "viewport": { - "x": -1573, - "y": -241, - "zoom": 1 - } -} From 85f9a68f3c0be0b217f74187c967460c9f15f386 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:08 +0100 Subject: [PATCH 19/22] feat: update project.json --- project.json | 1 - 1 file changed, 1 deletion(-) diff --git a/project.json b/project.json index bc831bc..0528638 100644 --- a/project.json +++ b/project.json @@ -15,7 +15,6 @@ ], "noDirectLaunch": [], "configs": { - "org.gluu.agama.pw.basic": {}, "": {}, "org.gluu.agama.pw.main": {} }, From e893fc2dc0d31c5d7588975c01e7a5d577326478 Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:39 +0100 Subject: [PATCH 20/22] feat: update project.json From 8d7f586cd4cfa4bd2e00b66c83565a22f92f70ff Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:42 +0100 Subject: [PATCH 21/22] refactor: update org.gluu.agama.pw.main.json --- code/org.gluu.agama.pw.main.json | 2828 ++++++++++++------------------ 1 file changed, 1109 insertions(+), 1719 deletions(-) diff --git a/code/org.gluu.agama.pw.main.json b/code/org.gluu.agama.pw.main.json index 215be3f..3cc6c87 100644 --- a/code/org.gluu.agama.pw.main.json +++ b/code/org.gluu.agama.pw.main.json @@ -1,1721 +1,1111 @@ { - "nodes": [ - { - "width": 242, - "height": 30, - "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", - "position": { - "x": 1704, - "y": 478 - }, - "type": "notes", - "data": { - "id": "Agama-note-52cb694f-ea6a-4a6d-97ce-21aad3989f19", - "type": "Agama-note", - "notes": "If user credentials is valid.", - "position": { - "x": 1704, - "y": 478 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": false, - "positionAbsolute": { - "x": 1704, - "y": 478 - }, - "dragging": false - }, - { - "width": 270, - "height": 42, - "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", - "position": { - "x": 2125.35, - "y": 483 - }, - "type": "notes", - "data": { - "id": "Agama-note-59f03bb4-17eb-4c85-9db9-ddbe205ea831", - "type": "Agama-note", - "notes": "If the ACCOUNT_LOCK feature is enable.", - "position": { - "x": 2125.35, - "y": 483 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": true, - "positionAbsolute": { - "x": 2125.35, - "y": 483 - }, - "dragging": false - }, - { - "width": 270, - "height": 55, - "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", - "position": { - "x": 2446.0625, - "y": 493 - }, - "type": "notes", - "data": { - "id": "Agama-note-c2063b09-73ce-47c8-a8b0-fefa6b462ba5", - "type": "Agama-note", - "notes": "Lock user account. The user account will be lock if the maximum login attempt is reach.", - "position": { - "x": 2446.0625, - "y": 493 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": false, - "positionAbsolute": { - "x": 2446.0625, - "y": 493 - }, - "dragging": false - }, - { - "width": 270, - "height": 55, - "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", - "position": { - "x": 1279, - "y": 226 - }, - "type": "notes", - "data": { - "id": "Agama-note-16024c83-78d0-48e4-a242-8bb00f45bbde", - "type": "Agama-note", - "notes": "IDP validate the user credentials and send back the result.", - "position": { - "x": 1279, - "y": 226 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": false, - "positionAbsolute": { - "x": 1279, - "y": 226 - }, - "dragging": false - }, - { - "width": 270, - "height": 55, - "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", - "position": { - "x": 846, - "y": 204 - }, - "type": "notes", - "data": { - "id": "Agama-note-aed97be1-3b9a-45eb-b2ce-a1407cd929f7", - "type": "Agama-note", - "notes": "Show login form to the UI to collect his username and password for validation.", - "position": { - "x": 846, - "y": 204 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": false, - "positionAbsolute": { - "x": 846, - "y": 204 - }, - "dragging": false - }, - { - "width": 270, - "height": 81, - "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", - "position": { - "x": 1242.0000000000002, - "y": -38 - }, - "type": "notes", - "data": { - "id": "Agama-note-33568e0d-0894-4f99-b404-e204102ce936", - "type": "Agama-note", - "notes": "The maximum number of attempts has been reached.\nIf account lock feature is enable, the user account will be lock for few minutes.", - "position": { - "x": 1242.0000000000002, - "y": -38 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": false, - "positionAbsolute": { - "x": 1242.0000000000002, - "y": -38 - }, - "dragging": false - }, - { - "width": 270, - "height": 68, - "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", - "position": { - "x": -10, - "y": -40 - }, - "type": "notes", - "data": { - "id": "Agama-note-84d98dbd-7f8e-4b09-9fe0-3ae284f603ed", - "type": "Agama-note", - "notes": "The Password validation flow start here. The flow timeout can be tuned as well flow configurations.", - "position": { - "x": -10, - "y": -40 - }, - "skake": false, - "agamaData": { - "flowname": "org.gluu.agama.pw.main" - } - }, - "selected": false, - "positionAbsolute": { - "x": -10, - "y": -40 - }, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "position": { - "x": 2628, - "y": 286 - }, - "type": "assignment", - "data": { - "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2628, - "y": 286 - }, - "agamaData": { - "id": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "parentId": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "type": "Agama-assignment-Node", - "displayName": "Provide UI feedback", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "assignments": [ - { - "variableTypeCheck": true, - "assignmentExpression": "Invalid credentials. Please try again!", - "assignedVariableName": "uiFeedback.errorMessage" - }, - { - "variableTypeCheck": false, - "assignmentExpression": "credentials.username", - "assignedVariableName": "uiFeedback.uid" - } - ], - "nodeIcon": "material-symbols:equal", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "positionAbsolute": { - "x": 2628, - "y": 286 - }, - "selected": false, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "position": { - "x": 2426, - "y": 286 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2426, - "y": 286 - }, - "agamaData": { - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "type": "Agama-log-Node", - "displayName": "Failed login attempt", - "hasComment": true, - "comment": "Maximum attempts reached. Password validation failed!", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Maximum attempts reached. Password validation failed.\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2426, - "y": 286 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "position": { - "x": 2510, - "y": 561 - }, - "type": "call", - "data": { - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "type": "Agama-call-Node", - "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2510, - "y": 561 - }, - "agamaData": { - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "parentId": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "type": "Agama-call-Node", - "displayName": "Lock user account", - "hasComment": true, - "comment": "Lock user account if needed or unlock if the expiration time is over.", - "javaClassName": "", - "javaMethodName": "lockAccount", - "javaVariableName": "validationService", - "exceptionVariableField": "", - "callType": "Call method on instance", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "arguments": [ - "credentials.username" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "lockResult", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2510, - "y": 561 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "position": { - "x": 2311, - "y": 561 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2311, - "y": 561 - }, - "agamaData": { - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "parentId": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "type": "Agama-log-Node", - "displayName": "Log account lock", - "hasComment": true, - "comment": "Account lock feature is active.", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Start account lock process\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 2311, - "y": 561 - }, - "dragging": false - }, - { - "width": 210, - "height": 140, - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "position": { - "x": 2186, - "y": 343 - }, - "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "type": "when", - "data": { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "type": "Agama-when-Node", - "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2186, - "y": 343 - }, - "agamaData": { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "parentId": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "type": "Agama-when-Node", - "conditions": [ - { - "variable": "conf.ENABLE_LOCK", - "operator": "is", - "dataValue": "\"true\"", - "combinator": "none" - } - ], - "hasComment": true, - "inRepeatBlock": false, - "flowname": "org.gluu.agama.pw.main" - }, - "handles": [ - "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE", - "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" - ], - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2186, - "y": 343 - } - }, - { - "width": 170, - "height": 124, - "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "position": { - "x": 2037, - "y": 571 - }, - "type": "finish", - "data": { - "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "type": "Agama-finish-Flow", - "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "handles": [], - "position": { - "x": 2037, - "y": 571 - }, - "agamaData": { - "id": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "parentId": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "type": "Agama-finish-Flow", - "hasSuccess": false, - "hasFailure": false, - "hasComment": true, - "comment": "Password validation completed successfuly!", - "flowfilename": "", - "returnVariable": "{ userId: credentials.username}", - "finishMode": "withSuccess", - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Flow completed", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2037, - "y": 571 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "position": { - "x": 1974, - "y": 287 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1974, - "y": 287 - }, - "agamaData": { - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "type": "Agama-log-Node", - "displayName": "Log failed login attempt", - "hasComment": true, - "comment": "Invalid credentials provided.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Invalid credentials provided\"", - "logLevel": "error", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1974, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "position": { - "x": 1837, - "y": 571 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "type": "Agama-log-Node", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1837, - "y": 571 - }, - "agamaData": { - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "parentId": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "type": "Agama-log-Node", - "displayName": "Log successfully validation", - "hasComment": true, - "comment": "add entry in log file for successfull login attempt.", - "whenCondition": "WhenTrue", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Valid credentials provided\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1837, - "y": 571 - } - }, - { - "width": 210, - "height": 140, - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "position": { - "x": 1724, - "y": 341 - }, - "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "type": "when", - "data": { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "type": "Agama-when-Node", - "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1724, - "y": 341 - }, - "agamaData": { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "parentId": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "type": "Agama-when-Node", - "conditions": [ - { - "variable": "uiFeedback.succeed", - "operator": "is", - "dataValue": "true", - "combinator": "none" - } - ], - "hasComment": true, - "inRepeatBlock": false, - "comment": "If user credentials is valid, the flow end successfully.", - "flowname": "org.gluu.agama.pw.main" - }, - "handles": [ - "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE", - "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" - ], - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1724, - "y": 341 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "position": { - "x": 1524, - "y": 287 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "type": "Agama-log-Node", - "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1524, - "y": 287 - }, - "agamaData": { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "parentId": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "type": "Agama-log-Node", - "displayName": "Log validation done", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Validation done\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1524, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "position": { - "x": 1324, - "y": 287 - }, - "type": "call", - "data": { - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "type": "Agama-call-Node", - "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1324, - "y": 287 - }, - "agamaData": { - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "parentId": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "type": "Agama-call-Node", - "displayName": "Validate credentials", - "hasComment": true, - "comment": "Validate provided user credentials.", - "javaClassName": "", - "javaMethodName": "validate", - "javaVariableName": "validationService", - "exceptionVariableField": "", - "callType": "Call method on instance", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "arguments": [ - "credentials.username", - "credentials.password" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "uiFeedback.succeed", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1324, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "position": { - "x": 1276, - "y": 58 - }, - "type": "finish", - "data": { - "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "type": "Agama-finish-Flow", - "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "handles": [], - "position": { - "x": 1276, - "y": 58 - }, - "agamaData": { - "id": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "parentId": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "type": "Agama-finish-Flow", - "hasSuccess": false, - "hasFailure": false, - "hasComment": true, - "comment": "Maximum attempts reached. Password validation failed!", - "flowfilename": "", - "returnVariable": "Password validation failed!", - "finishMode": "withFailure", - "nodeIcon": "material-symbols:line-end-square-rounded", - "displayName": "Password validation failed!", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1276, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "position": { - "x": 1076, - "y": 58 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "type": "Agama-log-Node", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1076, - "y": 58 - }, - "agamaData": { - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "type": "Agama-log-Node", - "displayName": "Log max attempt reached", - "hasComment": true, - "comment": "The login flow will end here with failure.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"The maximum login attempt has been reached!\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "hasSuccess": "", - "hasFailure": "", - "hasNoRepeat": false, - "hasRepeat": false, - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1076, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "position": { - "x": 1124, - "y": 287 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "type": "Agama-log-Node", - "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 1124, - "y": 287 - }, - "agamaData": { - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "parentId": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "type": "Agama-log-Node", - "displayName": "Log credentials collected", - "hasComment": true, - "comment": "Log the successfull used credentials retrieval.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"User credentials collected successfully!\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 1124, - "y": 287 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "position": { - "x": 924, - "y": 287 - }, - "type": "rrf", - "data": { - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "type": "Agama-rrf-Node", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "whenCondition": "WhenFalse", - "inRepeatBlock": true, - "inIterateBlock": false, - "position": { - "x": 924, - "y": 287 - }, - "agamaData": { - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "parentId": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "type": "Agama-rrf-Node", - "displayName": "Retrieve user credentials", - "hasComment": true, - "comment": "Retrieve user credentials from UI.", - "whenCondition": "WhenFalse", - "inRepeatBlock": true, - "inIterateBlock": false, - "assignments": [], - "nodeIcon": "ph:globe-simple", - "templatePath": "login-basic.ftlh", - "asssignedVariableName": "credentials", - "arguments": [ - "uiFeedback" - ], - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "positionAbsolute": { - "x": 924, - "y": 287 - }, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "position": { - "x": 826, - "y": 58 - }, - "type": "repeat", - "data": { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "type": "Agama-repeat-Node", - "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "handles": [ - "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow", - "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" - ], - "position": { - "x": 826, - "y": 58 - }, - "agamaData": { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "parentId": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "type": "Agama-repeat-Node", - "nodeIcon": "material-symbols:event-repeat-outline-rounded", - "maxIteration": "6", - "maxIterationVariableName": "count", - "displayName": "Validation Loop", - "comment": "Iterate x times max", - "hasComment": true, - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 826, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "position": { - "x": 626, - "y": 58 - }, - "type": "call", - "data": { - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "type": "Agama-call-Node", - "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 626, - "y": 58 - }, - "agamaData": { - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "parentId": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "type": "Agama-call-Node", - "displayName": "Service initialization", - "hasComment": true, - "comment": "Get an instance of PasswordService Class.", - "javaClassName": "org.gluu.agama.pw.PasswordService", - "javaMethodName": "getInstance", - "javaVariableName": "", - "exceptionVariableField": "", - "callType": "Call static method", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "arguments": [ - "conf" - ], - "nodeIcon": "material-symbols:code", - "asssignedVariableName": "validationService", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 626, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "position": { - "x": 426, - "y": 58 - }, - "type": "assignment", - "data": { - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 426, - "y": 58 - }, - "agamaData": { - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "parentId": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "type": "Agama-assignment-Node", - "displayName": "Declare variables", - "hasComment": true, - "comment": " Create json variable for UI feedback.", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "assignments": [ - { - "variableTypeCheck": false, - "assignmentExpression": "{}", - "assignedVariableName": "uiFeedback" - } - ], - "nodeIcon": "material-symbols:equal", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 426, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "position": { - "x": 226, - "y": 58 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "type": "Agama-log-Node", - "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 226, - "y": 58 - }, - "agamaData": { - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "parentId": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "Agama-log-Node", - "displayName": "Log flow start", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Start execution of the password validation flow.\"", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 226, - "y": 58 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "start", - "sourcePosition": "right", - "data": { - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "Agama-start-Flow", - "position": { - "x": 26, - "y": 58 - }, - "inRepeatBlock": false, - "agamaData": { - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "type": "Agama-start-Flow", - "displayName": "Password Validation Flow", - "hasComment": true, - "comment": "", - "isTopLevelFlow": true, - "basepath": "", - "configParams": "{}", - "nodeIcon": "material-symbols:line-start-square", - "timeout": "500", - "inputs": "", - "configs": "conf", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "position": { - "x": 26, - "y": 58 - }, - "selected": false, - "positionAbsolute": { - "x": 26, - "y": 58 - }, - "dragging": false - }, - { - "width": 170, - "height": 124, - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "position": { - "x": 2704, - "y": 561 - }, - "type": "log", - "data": { - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "type": "Agama-log-Node", - "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "position": { - "x": 2704, - "y": 561 - }, - "agamaData": { - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "parentId": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "type": "Agama-log-Node", - "displayName": "Log account lock result", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "logMessage": "\"Account lock result\" lockResult", - "logLevel": "info", - "nodeIcon": "octicon:log-16", - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "selected": false, - "dragging": false, - "positionAbsolute": { - "x": 2704, - "y": 561 - } - }, - { - "width": 170, - "height": 124, - "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "position": { - "x": 2903, - "y": 561 - }, - "type": "assignment", - "data": { - "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "type": "Agama-assignment-Node", - "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "whenCondition": "", - "inRepeatBlock": "", - "inIterateBlock": "", - "position": { - "x": 2903, - "y": 561 - }, - "agamaData": { - "id": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "type": "Agama-assignment-Node", - "displayName": "Provide UI feedback", - "hasComment": true, - "comment": "", - "whenCondition": "WhenFalse", - "inRepeatBlock": false, - "inIterateBlock": false, - "assignments": [ - { - "variableTypeCheck": false, - "assignmentExpression": "lockResult", - "assignedVariableName": "uiFeedback.lockMessage" - } - ], - "nodeIcon": "material-symbols:equal", - "position": { - "x": 2836 - }, - "flowname": "org.gluu.agama.pw.main" - }, - "skake": false - }, - "positionAbsolute": { - "x": 2903, - "y": 561 - }, - "selected": false, - "dragging": false, - "parentId": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "whenCondition": "", - "inRepeatBlock": "", - "inIterateBlock": "" - } - ], - "edges": [ - { - "id": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4-Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-f17c8532-e168-4a92-849c-48121f4bf9dc", - "type": "straight", - "source": "Agama-start-Flow-4d4e99be-60ff-474e-abd8-f058c1da7af4", - "target": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34-Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-ebd8e416-520f-48c2-8630-fcf6a4dbf26e", - "type": "straight", - "source": "Agama-log-Node-d60b1625-cf8f-4d4e-bea4-53cb97c8ed34", - "target": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d-Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-cdc03327-22f7-4c3e-a227-2772c73df278", - "type": "straight", - "source": "Agama-assignment-Node-8238ebff-772a-4150-9141-72a4b1177f1d", - "target": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f-Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-0be28bd6-1a54-4d5d-9b3d-4a92b9475dcb", - "type": "straight", - "source": "Agama-call-Node-a270a0a1-fe26-483e-9c63-d6d429df714f", - "target": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-488cb44f-2961-4541-b602-1dbce69cd61e", - "type": "straight", - "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "target": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "label": "Do Repeat", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InRepeatBlock" - }, - { - "id": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea-Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-c6b2b2aa-a5e0-4f10-866f-6433a5eebf46", - "type": "straight", - "source": "Agama-rrf-Node-bc03a65d-dc2f-4498-969a-2843055f12ea", - "target": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75-Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-2eae45f1-a624-4904-b8cb-6d03020207b5", - "type": "straight", - "source": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75", - "target": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-repeat-Node-82384b16-bb00-4c18-91dd-8cafd02e0d75.InFlow" - }, - { - "id": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db-finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674-edd36a14-2ec2-4141-bec1-688d7e5ef37d", - "type": "straight", - "source": "Agama-log-Node-844f14ea-7a7a-4766-90e2-f20ffae820db", - "target": "finish-cdbff5dc-ceca-4c85-a425-cda9f01fb674", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b-Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-25609b7e-aad2-4535-a7d4-cba7c1d683f5", - "type": "straight", - "source": "Agama-log-Node-3e8e30dc-3587-4bcb-9cde-e4c6ffaf962b", - "target": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db-Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-2e2edc75-bbd3-471d-8eeb-cf999d57beff", - "type": "straight", - "source": "Agama-call-Node-f2e99385-be5f-43cf-833e-61b6f7e1d9db", - "target": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73-743297e4-b8db-4fb8-b9cb-cf97be69e5f9", - "type": "straight", - "source": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", - "target": "Agama-log-Node-c62639a1-c500-4cdd-aa56-587ba13e4d73", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c.SUCCESS" - }, - { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-d2aaec27-b04e-4a14-9095-5139f25f764d", - "type": "straight", - "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "target": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c-a3cfe9d4-40a3-4562-9050-b0ebceaf7033", - "type": "straight", - "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", - "target": "Agama-when-Node-01da2b1f-01b6-4e63-8cdb-ef29cf153b7c", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.FAILURE" - }, - { - "id": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221-Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-b528a7fc-3661-4616-93d6-dfcbc9c3e9b8", - "type": "straight", - "source": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221", - "target": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-a75d7895-8bbb-40f5-b897-9e132a094221.SUCCESS" - }, - { - "id": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b-Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-0c9c1905-4fee-4b66-956e-700c7ecf4d54", - "type": "straight", - "source": "Agama-log-Node-8837eb0b-72b8-439a-aa39-0c535e54989b", - "target": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28-Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861-a32fb2c9-9e33-4138-9bbe-7ed57fb9a34a", - "type": "straight", - "source": "Agama-call-Node-e2dac1c8-adaf-4b95-b7d1-4b063d06bb28", - "target": "Agama-log-Node-a866a4f7-f7a4-49f2-8f0c-66375935c861", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce-Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-7b021957-3891-447d-8cb1-f951a9eaf78d", - "type": "straight", - "source": "Agama-log-Node-eb8d49d7-8822-4deb-bc79-c69e087742ce", - "target": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-60c2a8e5-0bb7-4ff4-ae23-308157f97aa0", - "type": "straight", - "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "target": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.SUCCESS" - }, - { - "id": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb-Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-71e7a062-c5f5-4c47-8538-0ff8551e585b", - "type": "straight", - "source": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb", - "target": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-9f6b107a-8409-4137-8b1f-4841925df7fb.FAILURE" - }, - { - "id": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4-finish-b239fc56-a697-4be0-b292-de282ffc1073-173566f3-b538-414d-88b9-5f2938d9cd4f", - "type": "straight", - "source": "Agama-log-Node-d6b0c4f6-39f5-4bf1-9ca5-1d24c927f5f4", - "target": "finish-b239fc56-a697-4be0-b292-de282ffc1073", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06-Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-0c8bbd06-2a17-4c7e-b92b-d20d23090659", - "type": "straight", - "source": "Agama-log-Node-dd07a185-af0c-433d-9eaa-cd4ac9992d06", - "target": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-643cb434-4fa3-40bd-8554-fd9b115c9d19", - "type": "straight", - "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "target": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "label": "Condition met", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.SUCCESS" - }, - { - "id": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95-Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-92e0be09-6c62-4813-a0d5-69f4e7a72d3d", - "type": "straight", - "source": "Agama-log-Node-eecdd688-377e-412b-b6ec-efae1672bd95", - "target": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a-Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-95a603eb-068b-4c7b-8274-eb6d4a43842c", - "type": "straight", - "source": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a", - "target": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - }, - "sourceHandle": "Agama-when-Node-fb35d7ac-1510-4e5d-a1b4-84039a42d36a.FAILURE" - }, - { - "id": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f-Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6-4f3eadc4-f975-43ad-9ac3-5956e3773c64", - "type": "straight", - "source": "Agama-log-Node-4cf3eaa3-0d0c-479d-8d52-9496a507065f", - "target": "Agama-assignment-Node-c9e69f4f-25d7-4a0f-a772-baaf866e04b6", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e-Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-cfeb3ab3-58e0-4912-be4d-88968fd5049e", - "type": "straight", - "source": "Agama-call-Node-9fbe0582-6251-45bb-9514-9a58d6bf485e", - "target": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - }, - { - "id": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf-Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714-10e44d4a-7f21-4baf-9eed-d69635eff634", - "type": "straight", - "source": "Agama-log-Node-24e6a8f2-6a6d-4b57-917c-9497dafebcdf", - "target": "Agama-assignment-Node-2e9154a0-3848-4aba-923f-813c2de10714", - "label": "", - "labelBgPadding": [ - 8, - 4 - ], - "labelBgBorderRadius": 4, - "labelBgStyle": { - "fill": "#FFCC00", - "color": "#fff", - "fillOpacity": 0.7 - } - } - ], - "viewport": { - "x": -1573, - "y": -241, - "zoom": 1 - } + "nodes": [ + { + "data": { + "agamaData": { + "isTopLevelFlow": true, + "basepath": "", + "configParams": "{}", + "creationDate": "29/11/2024", + "nodeIcon": "material-symbols:line-start-square", + "timeout": "500", + "inputs": "", + "configs": "conf", + "flowname": "org.gluu.agama.pw.main", + "displayName": "Password Validation Flow", + "hasComment": true, + "comment": "" + }, + "id": "startNode-5bd68e7f-8d08-4a99-9d73-c1f8d12dfa36", + "type": "startNode", + "position": { + "x": 50, + "y": 200 + } + }, + "type": "startNode", + "id": "startNode-5bd68e7f-8d08-4a99-9d73-c1f8d12dfa36", + "position": { + "x": 50, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log flow start", + "hasComment": true, + "comment": "", + "logMessage": "\"Start execution of the password validation flow.\"", + "logLevel": "info" + }, + "id": "logNode-ca2177f4-09a0-4243-9999-3fa5025e7550", + "type": "logNode", + "position": { + "x": 300, + "y": 200 + }, + "previousNodeId": "startNode-5bd68e7f-8d08-4a99-9d73-c1f8d12dfa36" + }, + "type": "logNode", + "id": "logNode-ca2177f4-09a0-4243-9999-3fa5025e7550", + "position": { + "x": 300, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:equal", + "displayName": "Declare variables", + "hasComment": true, + "comment": " Create json variable for UI feedback.", + "assignments": [ + { + "variableTypeCheck": false, + "assignmentExpression": "{}", + "assignedVariableName": "uiFeedback" + } + ] + }, + "id": "assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6", + "type": "assignmentNode", + "position": { + "x": 550, + "y": 200 + }, + "previousNodeId": "logNode-ca2177f4-09a0-4243-9999-3fa5025e7550" + }, + "type": "assignmentNode", + "id": "assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6", + "position": { + "x": 550, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:code", + "displayName": "Service initialization", + "hasComment": true, + "comment": "Get an instance of PasswordService Class.", + "javaClassName": "org.gluu.agama.pw.PasswordService", + "javaMethodName": "getInstance", + "javaVariableName": "", + "exceptionVariableField": "", + "callType": "Call static method", + "arguments": [ + "conf" + ], + "asssignedVariableName": "validationService" + }, + "id": "callNode-cab61f52-ed13-4e39-be57-789182a0a046", + "type": "callNode", + "position": { + "x": 800, + "y": 200 + }, + "previousNodeId": "assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6" + }, + "type": "callNode", + "id": "callNode-cab61f52-ed13-4e39-be57-789182a0a046", + "position": { + "x": 800, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:event-repeat-outline-rounded", + "displayName": "Validation Loop", + "hasComment": true, + "comment": "Iterate x times max", + "maxIteration": "6", + "maxIterationVariableName": "count" + }, + "id": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "type": "repeatNode", + "position": { + "x": 1050, + "y": 200 + }, + "previousNodeId": "callNode-cab61f52-ed13-4e39-be57-789182a0a046" + }, + "type": "repeatNode", + "id": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "position": { + "x": 1050, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log max attempt reached", + "hasComment": true, + "comment": "The login flow will end here with failure.", + "logMessage": "\"The maximum login attempt has been reached!\"", + "logLevel": "info" + }, + "id": "logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371", + "type": "logNode", + "position": { + "x": 1300, + "y": 200 + }, + "previousNodeId": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "branching": "continue" + }, + "type": "logNode", + "id": "logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371", + "position": { + "x": 1300, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Password validation failed!", + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "returnVariable": "Password validation failed!", + "finishMode": "withFailure" + }, + "id": "finishNode-f8198003-02a9-4361-9493-e29b4f1bbf13", + "type": "finishNode", + "position": { + "x": 1550, + "y": 200 + }, + "previousNodeId": "logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371" + }, + "type": "finishNode", + "id": "finishNode-f8198003-02a9-4361-9493-e29b4f1bbf13", + "position": { + "x": 1550, + "y": 200 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "ph:globe-simple", + "displayName": "Retrieve user credentials", + "hasComment": true, + "comment": "Retrieve user credentials from UI.", + "arguments": [ + "uiFeedback" + ], + "templatePath": "login-basic.ftlh", + "asssignedVariableName": "credentials" + }, + "id": "rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe", + "type": "rrfNode", + "position": { + "x": 1300, + "y": 450 + }, + "previousNodeId": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "branching": "repeat" + }, + "type": "rrfNode", + "id": "rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe", + "position": { + "x": 1300, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log credentials collected", + "hasComment": true, + "comment": "Log the successfull used credentials retrieval.", + "logMessage": "\"User credentials collected successfully!\"", + "logLevel": "info" + }, + "id": "logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e", + "type": "logNode", + "position": { + "x": 1550, + "y": 450 + }, + "previousNodeId": "rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe" + }, + "type": "logNode", + "id": "logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e", + "position": { + "x": 1550, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:code", + "displayName": "Validate credentials", + "hasComment": true, + "comment": "Validate provided user credentials.", + "javaClassName": "", + "javaMethodName": "validate", + "javaVariableName": "validationService", + "exceptionVariableField": "", + "callType": "Call method on instance", + "arguments": [ + "credentials.username", + "credentials.password" + ], + "asssignedVariableName": "uiFeedback.succeed" + }, + "id": "callNode-570c4949-af38-4c18-a383-a5b860a319f8", + "type": "callNode", + "position": { + "x": 1800, + "y": 450 + }, + "previousNodeId": "logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e" + }, + "type": "callNode", + "id": "callNode-570c4949-af38-4c18-a383-a5b860a319f8", + "position": { + "x": 1800, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log validation done", + "hasComment": true, + "comment": "", + "logMessage": "\"Validation done\"", + "logLevel": "info" + }, + "id": "logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa", + "type": "logNode", + "position": { + "x": 2050, + "y": 450 + }, + "previousNodeId": "callNode-570c4949-af38-4c18-a383-a5b860a319f8" + }, + "type": "logNode", + "id": "logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa", + "position": { + "x": 2050, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "hasComment": true, + "comment": "If user credentials is valid, the flow end successfully.", + "conditions": [ + { + "variable": "uiFeedback.succeed", + "operator": "is", + "dataValue": "true", + "combinator": "none" + } + ] + }, + "id": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "type": "whenNode", + "position": { + "x": 2300, + "y": 450 + }, + "previousNodeId": "logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa" + }, + "type": "whenNode", + "id": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "position": { + "x": 2300, + "y": 450 + }, + "measured": { + "width": 110, + "height": 60 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log failed login attempt", + "hasComment": true, + "comment": "Invalid credentials provided.", + "logMessage": "\"Invalid credentials provided\"", + "logLevel": "error" + }, + "id": "logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23", + "type": "logNode", + "position": { + "x": 2550, + "y": 450 + }, + "previousNodeId": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "branching": "continue" + }, + "type": "logNode", + "id": "logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23", + "position": { + "x": 2550, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "hasComment": true, + "conditions": [ + { + "variable": "conf.ENABLE_LOCK", + "operator": "is", + "dataValue": "\"true\"", + "combinator": "none" + } + ] + }, + "id": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "type": "whenNode", + "position": { + "x": 2800, + "y": 450 + }, + "previousNodeId": "logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23" + }, + "type": "whenNode", + "id": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "position": { + "x": 2800, + "y": 450 + }, + "measured": { + "width": 110, + "height": 60 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Failed login attempt", + "hasComment": true, + "comment": "Maximum attempts reached. Password validation failed!", + "logMessage": "\"Maximum attempts reached. Password validation failed.\"", + "logLevel": "info" + }, + "id": "logNode-0642d411-b13a-4bff-a71d-93395593f99d", + "type": "logNode", + "position": { + "x": 3050, + "y": 450 + }, + "previousNodeId": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "branching": "continue" + }, + "type": "logNode", + "id": "logNode-0642d411-b13a-4bff-a71d-93395593f99d", + "position": { + "x": 3050, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:equal", + "displayName": "Provide UI feedback", + "hasComment": true, + "comment": "", + "assignments": [ + { + "variableTypeCheck": true, + "assignmentExpression": "Invalid credentials. Please try again!", + "assignedVariableName": "uiFeedback.errorMessage" + }, + { + "variableTypeCheck": false, + "assignmentExpression": "credentials.username", + "assignedVariableName": "uiFeedback.uid" + } + ] + }, + "id": "assignmentNode-ebb5ff1b-ebad-45e3-9a73-51a2eecdad62", + "type": "assignmentNode", + "position": { + "x": 3300, + "y": 450 + }, + "previousNodeId": "logNode-0642d411-b13a-4bff-a71d-93395593f99d" + }, + "type": "assignmentNode", + "id": "assignmentNode-ebb5ff1b-ebad-45e3-9a73-51a2eecdad62", + "position": { + "x": 3300, + "y": 450 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log account lock", + "hasComment": true, + "comment": "Account lock feature is active.", + "logMessage": "\"Start account lock process\"", + "logLevel": "info" + }, + "id": "logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661", + "type": "logNode", + "position": { + "x": 3050, + "y": 700 + }, + "previousNodeId": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "branching": "success" + }, + "type": "logNode", + "id": "logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661", + "position": { + "x": 3050, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:code", + "displayName": "Lock user account", + "hasComment": true, + "comment": "Lock user account if needed or unlock if the expiration time is over.", + "javaClassName": "", + "javaMethodName": "lockAccount", + "javaVariableName": "validationService", + "exceptionVariableField": "", + "callType": "Call method on instance", + "arguments": [ + "credentials.username" + ], + "asssignedVariableName": "lockResult" + }, + "id": "callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9", + "type": "callNode", + "position": { + "x": 3300, + "y": 700 + }, + "previousNodeId": "logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661" + }, + "type": "callNode", + "id": "callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9", + "position": { + "x": 3300, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log account lock result", + "hasComment": true, + "comment": "", + "logMessage": "\"Account lock result\" lockResult", + "logLevel": "info" + }, + "id": "logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad", + "type": "logNode", + "position": { + "x": 3550, + "y": 700 + }, + "previousNodeId": "callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9" + }, + "type": "logNode", + "id": "logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad", + "position": { + "x": 3550, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:equal", + "displayName": "Provide UI feedback", + "hasComment": true, + "comment": "", + "assignments": [ + { + "variableTypeCheck": false, + "assignmentExpression": "lockResult", + "assignedVariableName": "uiFeedback.lockMessage" + } + ] + }, + "id": "assignmentNode-6f2b13e8-cadc-4004-87a4-c1636d060c27", + "type": "assignmentNode", + "position": { + "x": 3800, + "y": 700 + }, + "previousNodeId": "logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad" + }, + "type": "assignmentNode", + "id": "assignmentNode-6f2b13e8-cadc-4004-87a4-c1636d060c27", + "position": { + "x": 3800, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "octicon:log-16", + "displayName": "Log successfully validation", + "hasComment": true, + "comment": "add entry in log file for successfull login attempt.", + "logMessage": "\"Valid credentials provided\"", + "logLevel": "info" + }, + "id": "logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131", + "type": "logNode", + "position": { + "x": 2550, + "y": 700 + }, + "previousNodeId": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "branching": "success" + }, + "type": "logNode", + "id": "logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131", + "position": { + "x": 2550, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 + } + }, + { + "data": { + "agamaData": { + "nodeIcon": "material-symbols:line-end-square-rounded", + "displayName": "Flow completed", + "hasComment": true, + "comment": "Password validation completed successfuly!", + "returnVariable": "{ userId: credentials.username}", + "finishMode": "withSuccess" + }, + "id": "finishNode-91a948c1-0158-49cd-9051-fac022e1f04b", + "type": "finishNode", + "position": { + "x": 2800, + "y": 700 + }, + "previousNodeId": "logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131" + }, + "type": "finishNode", + "id": "finishNode-91a948c1-0158-49cd-9051-fac022e1f04b", + "position": { + "x": 2800, + "y": 700 + }, + "measured": { + "width": 170, + "height": 124 + } + } + ], + "edges": [ + { + "id": "startNode-5bd68e7f-8d08-4a99-9d73-c1f8d12dfa36-logNode-ca2177f4-09a0-4243-9999-3fa5025e7550", + "type": "default", + "source": "startNode-5bd68e7f-8d08-4a99-9d73-c1f8d12dfa36", + "target": "logNode-ca2177f4-09a0-4243-9999-3fa5025e7550", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_startNode-5bd68e7f-8d08-4a99-9d73-c1f8d12dfa36" + }, + { + "id": "logNode-ca2177f4-09a0-4243-9999-3fa5025e7550-assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6", + "type": "default", + "source": "logNode-ca2177f4-09a0-4243-9999-3fa5025e7550", + "target": "assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-ca2177f4-09a0-4243-9999-3fa5025e7550" + }, + { + "id": "assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6-callNode-cab61f52-ed13-4e39-be57-789182a0a046", + "type": "default", + "source": "assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6", + "target": "callNode-cab61f52-ed13-4e39-be57-789182a0a046", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_assignmentNode-4b931452-41b4-4a9d-b82e-c4eb20ce3bc6" + }, + { + "id": "callNode-cab61f52-ed13-4e39-be57-789182a0a046-repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "type": "default", + "source": "callNode-cab61f52-ed13-4e39-be57-789182a0a046", + "target": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_callNode-cab61f52-ed13-4e39-be57-789182a0a046" + }, + { + "id": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab-logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371", + "type": "default", + "source": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "target": "logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "continue", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab_continue" + }, + { + "id": "logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371-finishNode-f8198003-02a9-4361-9493-e29b4f1bbf13", + "type": "default", + "source": "logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371", + "target": "finishNode-f8198003-02a9-4361-9493-e29b4f1bbf13", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-7ef94e1b-435c-43cb-b28f-c0e1a9e9c371" + }, + { + "id": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab-rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe", + "type": "default", + "source": "repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab", + "target": "rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "repeat", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_repeatNode-fd826784-1f9b-42d3-bde2-1f4d84ae4dab_repeat" + }, + { + "id": "rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe-logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e", + "type": "default", + "source": "rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe", + "target": "logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_rrfNode-dbddd8f9-7be7-4de3-8539-9275a9f4fcbe" + }, + { + "id": "logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e-callNode-570c4949-af38-4c18-a383-a5b860a319f8", + "type": "default", + "source": "logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e", + "target": "callNode-570c4949-af38-4c18-a383-a5b860a319f8", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-1cd114bd-b65c-441d-80a1-b8d4bb4a916e" + }, + { + "id": "callNode-570c4949-af38-4c18-a383-a5b860a319f8-logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa", + "type": "default", + "source": "callNode-570c4949-af38-4c18-a383-a5b860a319f8", + "target": "logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_callNode-570c4949-af38-4c18-a383-a5b860a319f8" + }, + { + "id": "logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa-whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "type": "default", + "source": "logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa", + "target": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-bc7de86c-3d56-4381-8de9-950dd8cb8baa" + }, + { + "id": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e-logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23", + "type": "default", + "source": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "target": "logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "continue", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e_continue" + }, + { + "id": "logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23-whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "type": "default", + "source": "logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23", + "target": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-dc442886-09ac-4f06-8cae-b4fccbdc1f23" + }, + { + "id": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476-logNode-0642d411-b13a-4bff-a71d-93395593f99d", + "type": "default", + "source": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "target": "logNode-0642d411-b13a-4bff-a71d-93395593f99d", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "continue", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476_continue" + }, + { + "id": "logNode-0642d411-b13a-4bff-a71d-93395593f99d-assignmentNode-ebb5ff1b-ebad-45e3-9a73-51a2eecdad62", + "type": "default", + "source": "logNode-0642d411-b13a-4bff-a71d-93395593f99d", + "target": "assignmentNode-ebb5ff1b-ebad-45e3-9a73-51a2eecdad62", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-0642d411-b13a-4bff-a71d-93395593f99d" + }, + { + "id": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476-logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661", + "type": "default", + "source": "whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476", + "target": "logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "Condition met", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_whenNode-84730b3c-0e8b-4859-ac01-99fd3fc7f476_success" + }, + { + "id": "logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661-callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9", + "type": "default", + "source": "logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661", + "target": "callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-13dca133-d9f5-4d7f-b52b-89cfc3151661" + }, + { + "id": "callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9-logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad", + "type": "default", + "source": "callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9", + "target": "logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_callNode-0ae7b2de-3a3c-41f8-b09b-7a3dde4e12a9" + }, + { + "id": "logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad-assignmentNode-6f2b13e8-cadc-4004-87a4-c1636d060c27", + "type": "default", + "source": "logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad", + "target": "assignmentNode-6f2b13e8-cadc-4004-87a4-c1636d060c27", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-9d9ceeb2-aec3-4e6c-bb73-787508ac8bad" + }, + { + "id": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e-logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131", + "type": "default", + "source": "whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e", + "target": "logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "Condition met", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_whenNode-6bb9b4c5-92d3-4257-8f41-1557fb24648e_success" + }, + { + "id": "logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131-finishNode-91a948c1-0158-49cd-9051-fac022e1f04b", + "type": "default", + "source": "logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131", + "target": "finishNode-91a948c1-0158-49cd-9051-fac022e1f04b", + "labelBgPadding": [ + 8, + 4 + ], + "labelBgBorderRadius": 4, + "label": "", + "labelBgStyle": { + "fill": "#009688", + "color": "#ffffff", + "fillOpacity": 0.7 + }, + "labelShowBg": true, + "sourceHandle": "source_logNode-94145dd6-3a9c-4075-a5ad-fb54e52fc131" + } + ], + "viewport": { + "x": 0, + "y": 0, + "zoom": 1 + } } \ No newline at end of file From e249f259fc4f463c93c01f4ff98159d6b3d248da Mon Sep 17 00:00:00 2001 From: gasmyr Date: Fri, 29 Nov 2024 09:46:43 +0100 Subject: [PATCH 22/22] refactor: update org.gluu.agama.pw.main.flow --- code/org.gluu.agama.pw.main.flow | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/org.gluu.agama.pw.main.flow b/code/org.gluu.agama.pw.main.flow index f6ce402..0db69ec 100644 --- a/code/org.gluu.agama.pw.main.flow +++ b/code/org.gluu.agama.pw.main.flow @@ -21,8 +21,8 @@ count = Repeat 6 times max // add entry in log file for successfull login attempt. Log "@info Valid credentials provided" // Password validation completed successfuly! - it_ouwmw = {success:true, data: { userId: credentials.username}} - Finish it_ouwmw + it_jhojb = {success:true, data: { userId: credentials.username}} + Finish it_jhojb // Invalid credentials provided. Log "@error Invalid credentials provided" When conf.ENABLE_LOCK is "true" @@ -39,5 +39,5 @@ count = Repeat 6 times max // The login flow will end here with failure. Log "@info The maximum login attempt has been reached!" // Maximum attempts reached. Password validation failed! -it_zgoew = {success:false, error: "Password validation failed!"} -Finish it_zgoew \ No newline at end of file +it_ihlsv = {success:false, error: "Password validation failed!"} +Finish it_ihlsv \ No newline at end of file