Advanced User Criteria
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-18-2025 04:05 AM
Hi all,
I am writing a code to group users into a criteria if they are both not a user of groups with the words "Technical Team" in the group title, and their location type is not "X"
function eligableUser() {
var answer = '';
var user = GlideUser.getUserByID(user_id);
var userName = new GlideRecord('sys_user');
userName.addEncodedQuery('sys_id', user);
userName.query(); // Get logged in user record
while (userName.next()) {
var userLoc = userName.location.cmn_location_type; //Get user locaiton type
var grMem = new GlideRecord('sys_user_grmember');
grMem.addQuery('user', user);
grMem.query(); // Find users groups
while (grMem.next()) { //Iterate though associated users' groups
if (userLoc == 'X' && grMem.group.name.indexOf("Technical Team") > -1) { //See if any groups contain "Technical Team" and user is X user
answer = true;
break; //exit loop if condition found
} else {
answer = false;
}
}
}
}
eligableUser();
However, when putting this Criteria into "Not Available For" on a Catalog item, upon impersonating a matching user, the item still appears and is not hidden as expected.
Could I please ask for some help here, as I am not sure what I am getting wrong. Thank you
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-18-2025 07:28 AM
Hi @Wilwod
Please update your script as below.
function eligableUser() {
var answer = '';
var user = gs.getUserID();
var userName = new GlideRecord('sys_user');
userName.addEncodedQuery('sys_id='+user);
userName.query(); // Get logged in user record
while (userName.next()) {
var userLoc = userName.location.cmn_location_type; //Get user locaiton type
var grMem = new GlideRecord('sys_user_grmember');
grMem.addQuery('user', user);
grMem.query(); // Find users groups
while (grMem.next()) { //Iterate though associated users' groups
if (userLoc == 'X' && grMem.group.name.indexOf("Technical Team") > -1) { //See if any groups contain "Technical Team" and user is X user
answer = true;
return answer;
break; //exit loop if condition found
} else {
answer = false;
return answer;
}
}
}
}
eligableUser();