- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-07-2016 03:32 PM
Hello Community,
I have a question. I am trying to query a certain role and return a true statement when a user has that certain role. What am I doing wrong?
Here is the script I am trying to work with
function userHasRole(UserID, role){
var roles = new GlideRecord('sys_user_has_role');
roles.addQuery('user', userID);
roles.addQuery('role.name', change_manager);
roles.query();
if (roles == change_manager){
return 'true';
}
return 'false';
}
Also you can have a function within a function right? Here is the whole code I am working on:
answer = ifScript();
function ifScript() {
//answer = 'false';
var userID = gs.getUserID();
gs.log("work start check for " + userID + " assigned_to " + current.assigned_to);
if (userID == current.assigned_to) {
return 'true'; }
// query to see if userID has role change management, if so return true
function userHasRole(UserID, role){
var roles = new GlideRecord('sys_user_has_role');
roles.addQuery('user', userID);
roles.addQuery('role.name', change_manager);
roles.query();
if (roles == change_manager){
return 'true';
}
}
}
return 'false';
Thanks in advanced.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-08-2016 01:50 PM
Hello Everyone,
So I managed to hash it out. Here is the code:
answer = ifScript();
function ifScript() {
//answer = 'false';
var userID = gs.getUserID();
gs.log("work start check for " + userID + " assigned_to " + current.assigned_to);
if (userID == current.assigned_to) {
return 'true'; }
// query to see if userID has role change management, if so return true
var cm_role = new GlideRecord('sys_user_role');
cm_role.addQuery('name', "change_management");
cm_role.query();
while (cm_role.next()) {
var roles = new GlideRecord('sys_user_has_role');
roles.addQuery('user', userID);
roles.addQuery('role', cm_role.sys_id);
roles.query();
while (roles.next()){
gs.log("work start role check for " + userID + " has role " + cm_role.name);
return true;
}
}
gs.log("end of work start role check for " + userID + ", no writing allowed" );
return false;
}
The errors were as follows:
- I had to only use one "answer". In one variation of the code I had two answers, I could piggy back of the first answer argument.
- turns out that sys_user_has_role doesnt have a table named "name". This is why I had to query the name from the sys_user_role table while grabbing the sys_id of the name of the sys_user_role and populate that in line 20 of the code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2016 01:13 AM
feel free to add me on linkedIn if you want.
/Göran
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-11-2016 12:12 PM
Wow thanks Goran,
You truly went above and beyond. I will add you on linkedin as well.
Sincerely,
Orlando Galindo