Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

To check if user belongs to two different groups

IVB2020
Kilo Contributor

Hi all,

I need to check if requested_for belongs to specific groups or not. If he belongs, then an error message must be shown.

I have written this script but it is not working

It is always giving answer as 'false'. Is there any other way?

function onSubmit() {
	
	var user=g_form.getValue('requested_for');
	var request=g_form.getValue('select_type_of_request');
	
	if(request=='license request'){
	
		alert('entered');
   var cat = new GlideAjax('BIIsMemberOfGroup');
    cat.addParam('sysparm_name', 'ifUserisMember');
	cat.addParam('sysparm_user',user);
    cat.getXML(isMemofGrp);

    function isMemofGrp(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        alert(answer);
        if (answer == 'true') {
			//alert('in if');
            g_form.addErrorMessage('License is already assigned.');
        }
    }
	}
   
}
ifUserisMember: function(){
		var user=this.getParameter('sysparm_user');
		if(user.isMemberOf("BI-dautodesk_vault_subscr")||(user.isMemberOf("BI-dautodesk_vault_flex")))
			{
		return true;
			}
		else{
			return false;
		}
	},
1 ACCEPTED SOLUTION

Harshad Wagh
Tera Guru

In your script make following changes.

ifUserisMember: function(){
		var user=this.getParameter('sysparm_user');
		if((gs.getUser().getUserByID(user).isMemberOf("BI-dautodesk_vault_subscr")||(gs.getUser().getUserByID(user).isMemberOf("BI-dautodesk_vault_flex")))
			{
		return true;
			}
		else{
			return false;
		}
	},

View solution in original post

4 REPLIES 4

Harshad Wagh
Tera Guru

In your script make following changes.

ifUserisMember: function(){
		var user=this.getParameter('sysparm_user');
		if((gs.getUser().getUserByID(user).isMemberOf("BI-dautodesk_vault_subscr")||(gs.getUser().getUserByID(user).isMemberOf("BI-dautodesk_vault_flex")))
			{
		return true;
			}
		else{
			return false;
		}
	},

emir
ServiceNow Employee
ServiceNow Employee

this line takes the user string param and stores it in a variable user as a string:

var user=this.getParameter('sysparm_user');

to check isMember of you need a User object created by Glide System (gs)

to simplify the code runs as current user you can use this:

var currentUser = gs.getUser(); 
if(currentUser.isMemberOf("BI-dautodesk_vault_subscr")||(currentUser.isMemberOf("BI-dautodesk_vault_flex")))

IVB2020
Kilo Contributor

Hi @emir I dont want it for current user. When we change "requested_for", the user changes

Muhammad Khan
Mega Sage

@IVB2020 

You might find this article helpful.

Async Validation in onSubmit Catalog Client Script