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

Yes, in fact I added every group I am in and they all read false. It has to be some kind of scripting problem.


Just in case you are running this in another scope, try this in your Scripts - Background:


var usrID = gs.getUserID();


var gName = 'Managers';



var chk = chkIsMember(usrID, gName);


gs.info(chk);



function chkIsMember(usrID, gName) {


      var memObj = new GlideRecord('sys_user_grmember');


      memObj.addQuery('user', usrID);


      memObj.addQuery('group.name', gName);


      memObj.query();


      return memObj.hasNext();


}


It's like i'm taking crazy pills...it still says it's false with your code but I am a member of that group.



find_real_file.png


Steve, could you please confirm that managers group is active



Please mark my response as correct and helpful if it helped solved your question.
-Thanks

it is



find_real_file.png