You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
167 lines
5.3 KiB
167 lines
5.3 KiB
{ |
|
"ownerApp" : "Orchestrator", |
|
"name" : "create-user-add-to-vre", |
|
"createBy" : "Marco Lettere", |
|
"description": "Batch create a user with a membership in a specific group", |
|
"version" : 1, |
|
"ownerEmail" : "m.lettere@gmail.com", |
|
"inputParameters" : ["user", "first-name", "last-name", "email", "password", "group"], |
|
"tasks" : [ |
|
{ |
|
"name": "LAMBDA_TASK", |
|
"taskReferenceName": "init", |
|
"type": "LAMBDA", |
|
"inputParameters": { |
|
"keycloak": "{{ keycloak }}", |
|
"keycloak_admin" : "{{ keycloak_admin }}", |
|
"group" : "${workflow.input.group}", |
|
"scriptExpression": "var path = $.group.split('%2F').slice(1); return { 'tree' : Java.to(path, 'java.lang.Object[]'), 'name' : path.slice(path.length-1)[0]}" |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "authorize", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak}/protocol/openid-connect/token", |
|
"method" : "POST", |
|
"headers" : { |
|
"Accept" : "application/json" |
|
}, |
|
"body" : { |
|
"client_id" : "orchestrator", |
|
"client_secret" : "{{ keycloak_auth }}", |
|
"grant_type" : "client_credentials" |
|
} |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "create_user", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak_admin}/users", |
|
"expect" : 201, |
|
"method" : "POST", |
|
"body" : { |
|
"username": "${workflow.input.user}", |
|
"firstName": "${workflow.input.first-name}", |
|
"lastName": "${workflow.input.last-name}", |
|
"email": "${workflow.input.email}", |
|
"credentials": [ |
|
{ |
|
"temporary": true, |
|
"type": "password", |
|
"value": "${workflow.input.password}" |
|
} |
|
], |
|
"requiredActions": ["UPDATE_PASSWORD"], |
|
"emailVerified": true, |
|
"enabled": true |
|
}, |
|
"headers" : { |
|
"Authorization" : "Bearer ${authorize.output.body.access_token}", |
|
"Content-Type" : "application/json" |
|
} |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "lookup_user", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak_admin}/users?username=${workflow.input.user}", |
|
"method" : "GET", |
|
"headers" : { |
|
"Authorization" : "Bearer ${authorize.output.body.access_token}", |
|
"Accept" : "application/json" |
|
} |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "lookup_client", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak_admin}/clients", |
|
"params" : { "clientId" : "${workflow.input.group}"}, |
|
"method" : "GET", |
|
"headers" : { |
|
"Authorization" : "Bearer ${authorize.output.body.access_token}", |
|
"Accept" : "application/json" |
|
} |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "get_client_roles", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak_admin}/clients/${lookup_client.output.body[0].id}/roles", |
|
"expect" : [200, 404], |
|
"method" : "GET", |
|
"headers" : { |
|
"Authorization" : "Bearer ${authorize.output.body.access_token}", |
|
"Accept" : "application/json" |
|
} |
|
} |
|
}, |
|
{ |
|
"name" : "check_role_existance", |
|
"taskReferenceName" : "check_role_existance", |
|
"type" : "DECISION", |
|
"inputParameters" :{ |
|
"previous_outcome" : "${get_client_roles.output.status}" |
|
}, |
|
"caseValueParam" : "previous_outcome", |
|
"decisionCases" : { |
|
"200" : [ |
|
{ |
|
"name": "LAMBDA_TASK", |
|
"taskReferenceName": "select_role", |
|
"type": "LAMBDA", |
|
"inputParameters": { |
|
"role": "${workflow.input.role}", |
|
"roles" : "${get_client_roles.output.body}", |
|
"scriptExpression": "for(var i=0; i < $.roles.length;i++){if($.roles[i]['name'] == 'Member') return Java.to([$.roles[i]], 'java.lang.Object[]')}" |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "look_up_groups", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak_admin}/groups?search=${init.output.result.name}", |
|
"headers" : { |
|
"Authorization" : "Bearer ${authorize.output.body.access_token}", |
|
"Accept" : "application/json" |
|
} |
|
} |
|
}, |
|
{ |
|
"name": "LAMBDA_TASK", |
|
"taskReferenceName": "extract_group", |
|
"type": "LAMBDA", |
|
"inputParameters": { |
|
"tree" : "${init.output.result.tree}", |
|
"groups" : "${look_up_groups.output.body}", |
|
"scriptExpression": "function selectByPath(groups, path, level) { for (var i=0; i < groups.length; i++) {if (groups[i].name === path[level]) {if (level === path.length - 1) return groups[i];return selectByPath(groups[i].subGroups, path, level+1)}} return null; } return { 'group' : selectByPath($.groups, $.tree, 0)}" |
|
} |
|
}, |
|
{ |
|
"name" : "pyrest", |
|
"taskReferenceName" : "assign_user_to_group", |
|
"type" : "SIMPLE", |
|
"inputParameters" : { |
|
"url" : "${init.input.keycloak_admin}/users/${lookup_user.output.body[0].id}/groups/${extract_group.output.result.group.id}", |
|
"method" : "PUT", |
|
"headers" : { |
|
"Authorization" : "Bearer ${authorize.output.body.access_token}" |
|
} |
|
} |
|
} |
|
] |
|
} |
|
} |
|
] |
|
}
|
|
|