Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Script to Check if User is in one of the Admin Groups or Has Admin role

saggi
Tera Contributor

Hi All,

I am trying to write a code in a script include to check whether user has a admin role or isMember of one of the admin Group.

This is not working

Below is the script I have written so far.

/////////////////////////// to check if user has admin role or not

var userID = this.getParameter('sysparm_userID');
var gaAdmin = new GlideRecord('sys_user_has_role');
gaAdmin.addEncodedQuery('role.name=security_admin^ORrole.name=admin^user.sys_id='+userID);
gaAdmin.query();
if (gaAdmin.next()) {
return true;
}
else {
return false;
}

///////////////////////////// to check if user is in Admin group

var grpsArray = [];
var gr = new GlideRecord('sys_group_has_role');
gr.addEncodedQuery('role.name=admin^ORrole.name=security_admin');

gr.query();
while (gr.next()) {
grpsArray.push(gr.group.toString());
}
// return grpsArray;

for(var y=0; y < grpsArray.length; y++){


var isMember = gs.getUser().getUserByID('userID').isMemberOf(grpsArray[y]);

if (isMember)
{ return true;
break;
}

 

14 REPLIES 14

Lunatic Zorro
Tera Guru

Hi,

Can you check if the grpsArray returns any value.

Yes It can  Return Values and even group name

 

saggi
Tera Contributor

I want the below code to return true at the end as soon as true value is generation while going through the for loop .

for(var y=0; y < grpsArray.length; y++){


var isMember = gs.getUser().getUserByID('userID').isMemberOf(grpsArray[y]);

if (isMember)
{ return true;
break;
}

You do not need these many complex functions.

Eventually if the user is a part of a group which contains admin role then user will also have admin role.

Use this simple script to return true or false if the user has admin role or not:

var userID = this.getParameter('sysparm_userID');
var now_GR = new GlideRecord("sys_user");
now_GR.addQuery('sys_id', userID);
now_GR.query();
if (now_GR.next()) {
    if (now_GR.accumulated_roles.toString().indexOf(",admin,") != -1) {
        return true;
    }
}
return false;