Need to check login user is member of Analytics, Managers (assignment group).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2024 04:58 AM
Hello everyone,
I need to ensure that a ticket can only be submitted if the logged-in user is a member of any one of the following groups: Analytics, Managers, App Engine Admins, or App Engine Studio. For example, if the user selects an assignment group as Change Management, logged-in must be a member of Change Management and above mentioned groups. If the user does not belong to any of these groups and the selected assignment group, they should not be able to submit the ticket. A warning message should be displayed to the user before submission to indicate this restriction. Please help me to solve this work. This is high priority task. Thank you.
Best Regards,
Praveen Rajan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2024 05:21 AM
Hello @praveen1231 ,
For your requirement you need to create onSubmit client script as below -
function onSubmit() {
var userID = g_user.userID;
var assignmentGroup = g_form.getValue('assignment_group'); // Adjust as necessary
// Groups to check
var requiredGroups = ['Analytics', 'Managers', 'App Engine Admins', 'App Engine Studio'];
// GlideAjax to call server-side script
var ga = new GlideAjax('CheckUserGroupMembership');
ga.addParam('sysparm_name', 'validateUserGroups');
ga.addParam('sysparm_user_ID', userID);
ga.addParam('sysparm_requiredGroups', requiredGroups.join(','));
ga.addParam('sysparm_assignmentGroup', assignmentGroup);
var isValid = ga.getXMLWait();
if (isValid.responseXML.documentElement.getAttribute('answer') == 'false') {
alert('You must be a member of one of the following groups: ' + requiredGroups.join(', ') + ' and the selected assignment group.');
return false; // Prevent submission
}
return true; // Allow submission
}
Script Include Function -
validateUserGroups: function() {
var userID = this.getParameter('sysparm_user_ID');
var requiredGroups = this.getParameter('sysparm_requiredGroups').split(',');
var assignmentGroup = this.getParameter('sysparm_assignmentGroup');
// Check if the user belongs to the required groups
var userGroups = new GlideRecord('sys_user_grmember');
userGroups.addQuery('user', userID);
userGroups.query();
var belongsToRequiredGroup = false;
var belongsToAssignmentGroup = false;
while (userGroups.next()) {
var groupName = userGroups.group.name.toString();
if (requiredGroups.indexOf(groupName) > -1) {
belongsToRequiredGroup = true;
}
if (groupName == assignmentGroup) {
belongsToAssignmentGroup = true;
}
}
// Return true if the user belongs to any required group and the assignment group, otherwise false
return (belongsToRequiredGroup && belongsToAssignmentGroup) ? 'true' : 'false';
}
});
If my answer solves your issue, please mark it as Accepted✔️ & Helpful👍 !
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2024 05:41 AM
Hi @Vrushali Kolte Thanks for your valuable timing. But it not working as we expected.
Facing error as onSubmit script error: TypeError: Cannot read properties of undefined (reading 'documentElement'): function () { [native code] }
Can you please help me to resolve it. Thanks in advanced.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2024 06:01 AM
Hello @praveen1231 , thanks for the response. Can you update the code as below -
function onSubmit() {
var userID = g_user.userID;
var assignmentGroup = g_form.getValue('assignment_group'); // Adjust as necessary
// Groups to check
var requiredGroups = ['Analytics', 'Managers', 'App Engine Admins', 'App Engine Studio'];
// GlideAjax to call server-side script
var ga = new GlideAjax('CheckUserGroupMembership');
ga.addParam('sysparm_name', 'validateUserGroups');
ga.addParam('sysparm_user_ID', userID);
ga.addParam('sysparm_requiredGroups', requiredGroups.join(','));
ga.addParam('sysparm_assignmentGroup', assignmentGroup);
ga.getXMLWait(isValid);
function isValid(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
if(answer == false ){
return false; / Prevent submission
} else {
return true; // Allow submission
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-07-2024 06:11 AM - edited 08-07-2024 06:13 AM
Hi @Vrushali Kolte Thanks for your update.
Change Management should only allow ticket submissions by logged in users who are members of at least one of the following groups: 'Analytics', 'Managers', 'App Engine Admins', or 'App Engine Studio'. Currently, it allows submissions from any user, regardless of their group membership.