Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Advanced User Criteria

Community Alums
Not applicable

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

Swapna Abburi
Mega Sage
Mega Sage

Hi @Community Alums 

 

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();