Advanced user criteria - trying to restrict catalog item to users with specific company, and without ITIL role

Chase Stevenson
Mega Guru

Hello, I have an advanced user criteria that is set up to restrict certain users from seeing a catalog item in the Service Catalog.

Here's the script:

var company = gs.getUser().getCompanyID();

if(!gs.hasRole('itil') && company == "TEST"); {

answer = false;

}

What I can't get to work is the user role portion. I've tried (!gs.getUser().hasRole('itil') and that still doesn't work.

There are users in "TEST" company that have ITIL role, and they need to be able to view the catalog item. How can I restrict this to non-itil TEST company users?

1 ACCEPTED SOLUTION

Also you need to either wrap the other answer statement (answer = false) in an else statement or place it above the if statement as it is going to always return false.

 

var company = gs.getUser().getCompanyID();

if(!gs.hasRole('itil') && company == 'TEST'){

 answer = true;

}else{
	
 answer = false;
	
}

 

or

 

answer = false;

var company = gs.getUser().getCompanyID();

if(!gs.hasRole('itil') && company == 'TEST'){

 answer = true;

}

View solution in original post

21 REPLIES 21

dvp
Mega Sage
Mega Sage

 

You can achieve it without any script

Select the role and company and make sure Match all is set to true

find_real_file.png

Thanks for the response, I understand I can make a criteria using your method, then set that criteria in the "available for" for the catalog item, but that will restrict that item to ONLY that user criteria. I want to do the inverse, leave it available to everybody, except if the user is in company TEST, and does NOT have ITIL role.

Have you tried dvp's suggestion and using the criteria in the "Not Available for"?

Then that definitely needs a 

var company = gs.getUser().getCompanyID();

if(!gs.hasRole('itil') && company == "TEST"); {// in 'TEST' you should pass the sys_id of the company
answer = true;
}

 

and use the criteria under Not Available for