- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-25-2023 08:26 AM - edited 10-25-2023 08:27 AM
I have a record producer with a Checkbox variable. This variable should only be visible on the Service Portal IF the user is within a certain group. I am aware that I cannot use isMemberOf on Client Scripts, and that I need to create a Script Include and call it on the Client Script.
Here is my Script Include:
var verifyGroupMember = Class.create();
verifyGroupMember.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
checkMemberExists: function() {
var result;
var obj = gs.getUserID();
var gname = this.getParameter('sysparm_group_name');
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery('group',gname);
gr.addQuery('user',obj);
gr.query();
if(gr.hasNext())
return true;
else
return false;
},
type: 'verifyGroupMember'
});
Here is the onLoad Client Script calling the Script Include:
function onLoad() {
//Type appropriate comment here, and begin script below
var usrID = g_user.userID; // get current user ID
var grp = new GlideAjax('table_name.verifyGroupMember');
grp.addEncodedQuery('group.name=IT Support^user=' + usrID); // add user ID to encoded query and check within group
grp.query();
if(!grp.next()){
g_form.setVisible('checkbox_variable_name',false);
}
}
When I login as someone NOT part of the IT Support group and access the record producer from within the Service Portal, the checkbox variable still appears when I expect it to be hidden.
Can someone help me figure out where I'm going wrong?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-25-2023 08:42 AM
Hi @neil_b ,
Can you try this code:
Client Script:
var gd = new GlideAjax('verifyGroupMember');
gd.addParam('sysparm_name', 'checkMemberExists');
gd.getXML(callback);
function callback(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer == 'true'){
//
}else{
g_form.setDisplayValue('checkbox_variable_name',false);
}
Server Side:
var verifyGroupMember = Class.create();
verifyGroupMember.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
checkMemberExists: function() {
if(gs.getUser().isMemberOf('GroupName')){ //please enter proper group name or sysid of the group
return true;
}
else{
return false;
}
},
type: 'verifyGroupMember'
});
Thanks,
Danish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-25-2023 08:42 AM
Hi @neil_b ,
Can you try this code:
Client Script:
var gd = new GlideAjax('verifyGroupMember');
gd.addParam('sysparm_name', 'checkMemberExists');
gd.getXML(callback);
function callback(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer == 'true'){
//
}else{
g_form.setDisplayValue('checkbox_variable_name',false);
}
Server Side:
var verifyGroupMember = Class.create();
verifyGroupMember.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
checkMemberExists: function() {
if(gs.getUser().isMemberOf('GroupName')){ //please enter proper group name or sysid of the group
return true;
}
else{
return false;
}
},
type: 'verifyGroupMember'
});
Thanks,
Danish
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-25-2023 09:10 AM - edited 10-25-2023 09:13 AM
@Danish Bhairag2 thank you for the feedback! This worked PERFECTLY!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-25-2023 08:46 AM
@neil_b Could you please update your client script as follows.
function onLoad() {
//Type appropriate comment here, and begin script below
var grp = new GlideAjax('verifyGroupMember');
ga.addParam('sysparm_name','checkMemberExists');
ga.addParam('sysparm_group_name',"<group name>"); //Make sure to pass group name here
ga.getXML(checkMemberExistsResponse);
// the callback function for returning the result from the server-side code
function checkMemberExistsResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer=='false'){
g_form.setVisible('checkbox_variable_name',false);
}
}
}
Also, please make sure that your script include is Client callable script include.