Hiding Form Sections Based on User Group

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-27-2014 09:52 AM
I am trying to hide a form section based on a users group, which is not listed on the form itself.
I tried the following client script and it's doesn't hide the tab.
function on Load(){
var me = g_user.userID();
if (me.isMemberOf('7efcb8956fa21100dd3253eabb3ee40c'){
var sections = g_form.getSections();
sections[3].style.display = 'block';
} else {
sections[3].style.display = 'none';
}
}
Any help as to what I can do to get this to work would be appreciated!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-27-2014 10:53 AM
Did you review this one?
http://www.servicenowguru.com/scripting/client-scripts-scripting/showhide-form-section/
Also you could modify your logic to only hide it if the user is not a member of the group.
In all other cases no need to take action as the user is allowed to see it.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-27-2014 10:56 AM
Yes, I have reviewed that site, and I actually have tried reversing it to where i you're not a member of the group. No luck.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-27-2014 11:07 AM
Before looking deeper into the functionality of hiding the tab: Did you make sure that your code for the "if"-statement works?
To me it seems like you are mixing server and client side code.
Check this one:
http://www.servicenowguru.com/scripting/user-object-cheat-sheet/
In your script
Client code: "var me = g_user.userID();"
Server code: if (me.isMemberOf('7efcb8956fa21100dd3253eabb3ee40c'){
I find "isMemberOf" only in the context of the user object on the server side.
You need to get the user object itself. Before you start running a server query: Better do this using a asynchronous query so your users don't have a delay when the form loads. (http://www.servicenowguru.com/scripting/client-scripts-scripting/gform-getreference-callback/)
Another, even faster, option is, to run a "display" BR and populate all groups of the current user in the scratchpad.
http://wiki.servicenow.com/index.php?title=Business_Rules#Display_Business_Rules

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-27-2014 11:24 AM
Ok, I was finally able to get the section to hide, but now it's hiding even for those in the group.
I did a Display BR:
g_scratchpad.groups = (gs.getUser().getMyGroups());
And a Client Script:
function onLoad() {
if(g_scratchpad.groups != '7efcb8956fa21100dd3253eabb3ee40c'){
var sections = g_form.getSections();
sections[3].style.display = 'none';
}
}