Interested in a ServiceNow event built for developers? Registration for now[dev]26 is officially open!

User criteria match all on location and group

Daniela18
Tera Contributor

Hi

I want a user criteria to both match user group and a location that is on the user.

But this doesn't work. Do I have to script? I am novice at scripting, How would such a script look?

find_real_file.png

1 ACCEPTED SOLUTION

Hi,

I would encourage to have step by step debug

1) check if member of Hardware is able to access the catalog

Keep Script as: Test with user

answer = gs.getUser().isMemberOf('Hardware');

Next

2) check if user's location condition is satisfied

Keep Script as: Test with user having that location

answer = ifScript();

function ifScript(){

var user = new GlideRecord('sys_user');
user.addQuery('sys_id', gs.getUserID());
user.addQuery('location', '25ab9d720a0a0bb300793d3a6b891f82');
user.query();

var locationValid = user.hasNext();

return locationValid;

}

3) Now combine both the codes and check by adding logs

If my answer solved your issue, please mark my answer as ✅ Correct & 👍Helpful based on the Impact.

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 10x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

19 REPLIES 19

I tried to go from this.

Still not working

Ankur Bawiskar
Tera Patron

Hi,

since you have checkbox of Match ALL

it would check all conditions for satisfying

Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 10x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Match all doesnt seem to work for these 2 combination. I can impersonate someone with Hardware but with another location and incorrect fully still access it 

Hi,

please update script as below

answer = isValid();

function isValid(){

var isMember = gs.getUser().isMemberOf('Hardware');

var arr = ['locationSysId1','locationSysId2','locationSysId3'];

var user = new GlideRecord('sys_user');
user.addQuery('sys_id', gs.getUserID());
user.addQuery('location','IN', arr);
user.query();

var locationValid = user.hasNext();

if(isMember == true && locationValid == true)
return true;
else
return false;

}

Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 10x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

It is only for one single location. I tried it but it did not work.