Need a second set of eyes, isMemberOf not working

ServiceNowSteve
Giga Guru

All I am trying to do is see if I am a member of the Managers group (which I am) but this code keeps telling me it's false. Any idea why?

var currentUser = gs.getUser();

if(currentUser.isMemberOf('Managers'))

{

gs.log('true');

}

else

{

gs.log('false');

}

1 ACCEPTED SOLUTION

The first thing that comes to mind is that there may be duplicate groups with the same name. Hopefully that is not the case. If there is, perhaps that is why it is returning false. The query finds the first group with that name and unfortunately, you are not a member of **that** group.



See what happens if you remove yourself from a group, then add yourself back in and retry the script. Hopefully it is not an indexing problem, or you are running your script on the instance where you are not part of that group.



Here is a script you can use to get all of your memberships. I modified it so that it will return the names and the sys_id of the group:


      var u = gs.getUserID();


      var myGroups = getGroupMembership(u);


      gs.info(myGroups);



function getGroupMembership(usrID) {


              var retArray = [];


              var memObj = new GlideRecord('sys_user_grmember');


              memObj.addQuery('user', usrID);


              memObj.query();


              while (memObj.next()) {


                      var groupInfo = memObj.group.name + '[' + memObj.group + ']';


                      retArray.push(groupInfo);


              }


              return retArray;


}


View solution in original post

21 REPLIES 21

Surendra Raika1
Kilo Guru

Tried on Scripts- Background ?



Any space as a prefix can be a possible cause.


No I tried it as a fix script. I don't understand background scripts, everytime I try to use that application it always says there's something missing from the code. In this case it says:



Javascript compiler exception: missing } in compound statement (null.null.script; line 😎 in:


var currentUser = gs.getUser();


ServiceNowSteve
Giga Guru

I was able to get it working in Scripts - Background but it still reads false.


Surendra Raika1
Kilo Guru

Have you checked the for the spaces in the name of the group and if the group is an active one !!