getavailableuserstoassign.js revision f8eb547a5996303c92e9482cf659642871c7252c
4169N/A/**
1178N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
1178N/A *
1178N/A * Copyright (c) 2012 ForgeRock AS. All Rights Reserved
1178N/A *
1178N/A * The contents of this file are subject to the terms
1178N/A * of the Common Development and Distribution License
1178N/A * (the License). You may not use this file except in
1178N/A * compliance with the License.
1178N/A *
1178N/A * You can obtain a copy of the License at
1178N/A * http://forgerock.org/license/CDDLv1.0.html
1178N/A * See the License for the specific language governing
1178N/A * permission and limitations under the License.
1178N/A *
1178N/A * When distributing Covered Code, include this CDDL
1178N/A * Header Notice in each file and include the License file
2362N/A * at http://forgerock.org/license/CDDLv1.0.html
2362N/A * If applicable, add the following below the CDDL Header,
2362N/A * with the fields enclosed by brackets [] replaced by
1178N/A * your own identifying information:
4935N/A * "Portions Copyrighted [year] [name of copyright owner]"
1178N/A */
1178N/A
4033N/Aif (request.method !== "query") {
4935N/A throw {
4033N/A "openidmCode" : 403,
4033N/A "message" : "Access denied"
1178N/A }
1178N/A}
4935N/AgetUserById = function(userId) {
1178N/A var user = openidm.read("managed/user/"+userId);
4033N/A if (!user) {
0N/A var user = openidm.read("repo/internal/user/"+userId);
0N/A }
0N/A return user;
0N/A}
0N/A
0N/AgetUserByName = function(userName) {
0N/A var params = {
4033N/A "_queryId": "for-userName",
0N/A "uid": userName
0N/A };
1178N/A result = openidm.query("managed/user", params);
0N/A if (result.result && result.result.length == 1) {
0N/A var user = result.result[0];
4935N/A }
0N/A if (!user) {
0N/A var user = openidm.read("repo/internal/user/"+userName);
0N/A }
0N/A return user;
0N/A}
4935N/A
0N/AgetDisplayableOf = function(user) {
0N/A if (user.givenName || user.familyName) {
0N/A return user.givenName + " " + user.familyName;
0N/A } else {
0N/A return user.userName ? user.userName : user._id;
4935N/A }
0N/A}
4033N/A
0N/A
0N/Aif (!request.params || !request.params.taskId) {
4935N/A throw "Required param: taskId";
0N/A}
0N/A
4935N/Avar task = openidm.read("workflow/taskinstance/" + request.params.taskId);
4033N/Aif (!task) {
0N/A throw "Task Not Found";
4935N/A}
0N/Avar taskDefinitionQueryParams = {
4033N/A "_queryId": "query-taskdefinition",
0N/A "processDefinitionId": task.processDefinitionId,
0N/A "taskDefinitionKey": task.taskDefinitionKey
0N/A};
0N/Avar taskDefinition = openidm.query("workflow/taskdefinition", taskDefinitionQueryParams);
0N/A
4935N/Avar usersToAdd = {};
0N/Avar candidateUsers = [];
0N/Avar candidateGroups = [];
0N/A
0N/Avar taskCandidateUserArray = taskDefinition.taskCandidateUser.toArray();
0N/Afor (var i = 0; i < taskCandidateUserArray.length; i++) {
4169N/A var candidateUserTaskDefinition = taskCandidateUserArray[i];
0N/A candidateUsers.push(candidateUserTaskDefinition.expressionText);
0N/A}
0N/A
0N/Avar taskCandidateGroupArray = taskDefinition.taskCandidateGroup.toArray();
0N/Afor (var i = 0; i < taskCandidateGroupArray.length; i++) {
4935N/A var candidateGroupTaskDefinition = taskCandidateGroupArray[i];
0N/A candidateGroups.push(candidateGroupTaskDefinition.expressionText);
0N/A}
0N/A
0N/A
0N/Afor (var i = 0; i < candidateGroups.length; i++) {
4935N/A var candidateGroup = candidateGroups[i];
0N/A var params = {
0N/A "_queryId": "get-users-of-role",
0N/A "role": candidateGroup
0N/A };
0N/A var result = openidm.query("managed/user", params);
4935N/A
0N/A if (result.result && result.result.length > 0) {
0N/A for (var j = 0; j < result.result.length; j++) {
0N/A var user = result.result[j];
0N/A usersToAdd[user.userName] = user;
0N/A }
4935N/A }
0N/A
0N/A result = openidm.query("repo/internal/user", params);
0N/A
0N/A if (result.result && result.result.length > 0) {
0N/A for (var j = 0; j < result.result.length; j++) {
4033N/A var user = result.result[j];
0N/A var username = user.userName ? user.userName : user._id;
0N/A usersToAdd[username] = user;
0N/A }
0N/A }
0N/A}
4935N/A
0N/Afor (var i = 0; i < candidateUsers.length; i++) {
0N/A var candidateUser = candidateUsers[i];
0N/A usersToAdd[candidateUser] = user;
0N/A}
0N/A
4935N/A
0N/Avar availableUsersToAssign = { users : []};
4033N/Afor (var userName in usersToAdd) {
0N/A var user = getUserByName(userName);
0N/A if (user) {
0N/A availableUsersToAssign.users.push({_id: user._id, username: userName, displayableName: getDisplayableOf(user)});
0N/A }
4033N/A}
4935N/A
0N/Avar assigneeUserName = task.assignee;
0N/Aif (assigneeUserName && assigneeUserName !== '') {
4033N/A var user = getUserByName(assigneeUserName);
4033N/A if (user) {
0N/A availableUsersToAssign.assignee = {_id: user._id, username: assigneeUserName, displayableName: getDisplayableOf(user)};
4033N/A }
4033N/A}
0N/A
0N/AavailableUsersToAssign
0N/A