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
Mega Sage

@IVB2020 

You might find this article helpful.

Async Validation in onSubmit Catalog Client Script