Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
**Set and Lock Variable by Group**

This solution provides a secure and dynamic way to control data entry on a Service Catalog form based on the user's group membership. It is typically used to pre-fill and lock certain justification or approval bypass fields for authorized users (like managers or executive staff), improving their efficiency while maintaining an accurate audit trail.

This functionality requires a combined Client-side (Catalog Client Script) and Server-side (Script Include) approach to ensure the group check is done securely.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
function onLoad() {
var variableName = 'bypass_approval_reason';
var targetGroupName = 'ServiceNow Support'; // The group authorized to skip this step
var ga = new GlideAjax('UserUtils');
ga.addParam('sysparm_name', 'isMemberOf');
ga.addParam('sysparm_group_name', targetGroupName);
ga.getXMLAnswer(checkAndLockVariable);
function checkAndLockVariable(response) {
var isMember = response;
if (isMember == 'true') {
var message = 'Value set and locked due to your ' + targetGroupName + ' membership.';
var setValue = 'Bypassed by authorized ' + targetGroupName + ' member.';
g_form.setValue(variableName, setValue);
g_form.setReadOnly(variableName, true);
g_form.showFieldMsg(variableName, message, 'info');
} else {
g_form.setReadOnly(variableName, false);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
var UserUtils = Class.create();
UserUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
isMemberOf: function() {
var groupName = this.getParameter('sysparm_group_name');
var isMember = gs.getUser().isMemberOf(groupName);
return isMember.toString();
},

type: 'UserUtils'
});
Loading