- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-21-2023 03:03 AM
Hi All,
I am passing 2 id - test@gmail.com,test1@gmail.com
It is calling the rest message and adding only test@gmail.com.
Yes for each userid , restmessage should get looped, As of now it is adding for one user id test@gmail.com
Workflow Editor
var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
for (var i in arrUser) {
gs.info('arrUser' + arrUser[i]);
var body = {
var r = new sn_ws.RESTMessageV2('User Access Mangement', 'Dev Instance');
'user_id': arrUser[i]
'action_required': current.variables.action_required.getDisplayValue(),
};
}
Scripted rest API
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var reqbody = request.body;
var reqdata = reqbody.data;
var objt = JSON.stringify(reqdata);
var objt1 = objt.toString();
var incomingData = JSON.parse(objt1);
var roles = incomingData.roles;
var action_required = incomingData.action_required;
var user_id = incomingData.user_id;
var group_s = incomingData.group_s;
var action_required = incomingData.action_required;
if (action_required == "Add a role to user") {
var role = new GlideRecord("sys_user_has_role");
// role.addEncodedQuery('user=' + userSysId + '^role=' + roleSysId);
role.addQuery("role", roleSysId);
role.addQuery("user", userSysId);
role.query();
if (role.next()) {
gs.log('Role Exsists', 'shohaib');
var respbody = {
"message": "Role already exists"
};
response.setContentType('application/json');
response.setStatus(400);
response.setBody(respbody);
} else {
role.initialize();
role.setDisplayValue('user', userSysId);
role.setDisplayValue('role', NameofRole);
role.state = "Active";
role.setWorkflow(false);
role.insert();
var respbody1 = {
"message": "Role added successfully"
};
response.setContentType('application/json');
response.setStatus(200);
response.setBody(respbody1);
}
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-21-2023 04:05 AM
Hello @Saib1
Please try the scripts below, where I've made a few changes. Unfortunately, I didn't have time to test them, so let me know how they perform for you.
Workflow Editor:
var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
for (var i in arrUser) {
gs.info('arrUser' + arrUser[i]);
var body = {
'user_id': arrUser[i],
'action_required': current.variables.action_required.getDisplayValue(),
};
var r = new sn_ws.RESTMessageV2('User Access Management', 'Dev Instance');
r.setStringParameter('user_id', body.user_id);
r.setStringParameter('action_required', body.action_required);
// Make the REST call
var response = r.execute();
var responseBody = response.getBody();
gs.info('Response: ' + responseBody);
}
Scripted REST API:
(function process(/RESTAPIRequest/ request, /RESTAPIResponse/ response) {
var reqbody = request.body;
var reqdata = reqbody.data;
var objt = JSON.stringify(reqdata);
var objt1 = objt.toString();
var incomingData = JSON.parse(objt1);
var roles = incomingData.roles;
var action_required = incomingData.action_required;
var user_id = incomingData.user_id;
var group_s = incomingData.group_s;
if (action_required == "Add a role to user") {
var role = new GlideRecord("sys_user_has_role");
// Assuming roleSysId, userSysId, and NameofRole are properly defined
role.addQuery("role", roleSysId);
role.addQuery("user", userSysId);
role.query();
if (role.next()) {
gs.log('Role Exists', 'shohaib');
var respbody = {
"message": "Role already exists"
};
response.setContentType('application/json');
response.setStatus(400);
response.setBody(respbody);
} else {
role.initialize();
role.setDisplayValue('user', userSysId);
role.setDisplayValue('role', NameofRole);
role.state = "Active";
role.setWorkflow(false);
role.insert();
var respbody1 = {
"message": "Role added successfully"
};
response.setContentType('application/json');
response.setStatus(200);
response.setBody(respbody1);
}
}
})(request, response);
Let me know your views on this and Mark ✅Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.
Regards,
Aniket
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-21-2023 03:33 AM - edited 12-21-2023 03:34 AM
Hi @Saib1
Can you try below logic :
var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
for (var i=0; i < arrUser.length; i++) {
var body = {
var r = new sn_ws.RESTMessageV2('User Access Mangement', 'Dev Instance');
'user_id': arrUser[i]
'action_required': current.variables.action_required.getDisplayValue(),
};
}
Thanks & Regards
Amit Verma
Please mark this response as correct and helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-21-2023 03:48 AM - edited 12-21-2023 03:51 AM
Did not worked out , still it is adding for one user.
Do we need to add any change sin Scripted rest api?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-21-2023 04:39 AM
Hi @Saib1
Can you please let me know the type of the variable user_id which you are trying to access in var user_id = current.variables.user_id.getDisplayValue(); ?
Also, can you try removing .getDisplayValue() method once and declare the variable as var user_id = current.variables.user_id ?
Thanks & Regards
Amit Verma
Please mark this response as correct and helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-21-2023 04:05 AM
Hello @Saib1
Please try the scripts below, where I've made a few changes. Unfortunately, I didn't have time to test them, so let me know how they perform for you.
Workflow Editor:
var user_id = current.variables.user_id.getDisplayValue();
var arrUser = user_id.split(',');
for (var i in arrUser) {
gs.info('arrUser' + arrUser[i]);
var body = {
'user_id': arrUser[i],
'action_required': current.variables.action_required.getDisplayValue(),
};
var r = new sn_ws.RESTMessageV2('User Access Management', 'Dev Instance');
r.setStringParameter('user_id', body.user_id);
r.setStringParameter('action_required', body.action_required);
// Make the REST call
var response = r.execute();
var responseBody = response.getBody();
gs.info('Response: ' + responseBody);
}
Scripted REST API:
(function process(/RESTAPIRequest/ request, /RESTAPIResponse/ response) {
var reqbody = request.body;
var reqdata = reqbody.data;
var objt = JSON.stringify(reqdata);
var objt1 = objt.toString();
var incomingData = JSON.parse(objt1);
var roles = incomingData.roles;
var action_required = incomingData.action_required;
var user_id = incomingData.user_id;
var group_s = incomingData.group_s;
if (action_required == "Add a role to user") {
var role = new GlideRecord("sys_user_has_role");
// Assuming roleSysId, userSysId, and NameofRole are properly defined
role.addQuery("role", roleSysId);
role.addQuery("user", userSysId);
role.query();
if (role.next()) {
gs.log('Role Exists', 'shohaib');
var respbody = {
"message": "Role already exists"
};
response.setContentType('application/json');
response.setStatus(400);
response.setBody(respbody);
} else {
role.initialize();
role.setDisplayValue('user', userSysId);
role.setDisplayValue('role', NameofRole);
role.state = "Active";
role.setWorkflow(false);
role.insert();
var respbody1 = {
"message": "Role added successfully"
};
response.setContentType('application/json');
response.setStatus(200);
response.setBody(respbody1);
}
}
})(request, response);
Let me know your views on this and Mark ✅Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.
Regards,
Aniket