Script to check if user is part of existing group

Revathi12
Tera Contributor

Hi Team,

 

I have a requirement where I have 2 fields existing groups and add new group. In existing group I'm populating the groups which are already mapped to user. Whereas in the field Add New I need to populate the groups which are not mapped for the user and he should select only those groups.

 

Note both are of list collector variable types. Below is the script

 

 

Script Include :-

getNewGroups: function() {
        var groups1 = [];
        var groupName = this.getParameter('sysparm_group_name');
        var gr1 = new GlideRecord('sys_user_grmember');
        gr1.addQuery('group.name', groupName);

        gr1.addQuery('user',gs.getUserID());
        gr1.query();
       while (gr1.next()) {
            
             groups1.push(gr1.getDisplayValue('group.name'));
        }
      
        return groups1.toString();

    },
 
Client Script :-
 
alert ("tst1"+newValue);
var ga = new GlideAjax('POC_RN');
ga.addParam('sysparm_name', 'getNewGroups');
ga.addParam('sysparm_group_name',newValue);
ga.getXML(getResults);

function getResults(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    if(answer!=''){
    g_form.addInfoMessage("group already exists");
   g_form.clearValue('add_new');
   }
   else {
    g_form.setValue('add_new', newValue);
   }
   
}
   
20 REPLIES 20

Hi @Revathi12 

 

Okh..got your point...so you have "Requested for" variable on catalog form.

 

 

You can adjust your code like below :

 

/*Get Groups which user is member of*/
 isMemeberOfGroups: function(userId) {  //updated
        //var userId = gs.getUserID();
        var groups = [];
        var grMem = new GlideRecord('sys_user_grmember');
        grMem.addQuery('user=' + userId);
        grMem.query();
        while (grMem.next()) {
            groups.push(grMem.getValue('group'));
        }

        return 'sys_idIN' + groups.toString();    
    },

/*Get Groups which user is not member of*/
isNotMemeberOfGroups: function(userId) {  //updated
       // var userId = gs.getUserID();  //this is for current logged in user
        var groups = [];
        var notPartOfGroups = [];
        var grMem = new GlideRecord('sys_user_grmember');
        grMem.addQuery('user=' + userId);
        grMem.query();
        while (grMem.next()) {
            groups.push(grMem.getValue('group'));
        }

        var grGroup = new GlideRecord('sys_user_group');
        grGroup.addQuery('sys_idNOT IN' + groups.toString());
        grGroup.query();

        while (grGroup.next()) {
            notPartOfGroups.push(grGroup.getUniqueValue());
        }

		return 'sys_idIN' + notPartOfGroups.toString();

    },

 

And in reference qualifier do like this ...

 

javascript: new CheckGroupMembership().isMemeberOfGroups(current.variables.requested_for);

//pass the requested for variable backend name

 

 

javascript: new CheckGroupMembership().isNotMemeberOfGroups(current.variables.requested_for);

//pass requested for variable backend name

 

 

This should work for "Requested for"

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates