Skip to content
Merged
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,33 @@
// onload Catalog Client Script with Catalog Name
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);
}
}
}

//Script Include
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