How to get Current Logged in user roles and groups through background script?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 11:35 PM
Hi All,
Please help on this
How to get Current Logged in user roles and groups through background script?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 11:45 PM
Hi @thomas94 ,
You can get the current logged-in user's roles and groups through a background script using GlideSystem methods. Here's how you can do it:
// Get the current user's roles
var userRoles = gs.getUser().getRoles();
// Get the current user's groups
var userSysID = gs.getUserID();
var userGroups = new GlideRecord('sys_user_grmember');
userGroups.addQuery('user', userSysID);
userGroups.query();
var groupsList = [];
while (userGroups.next()) {
groupsList.push(userGroups.group.getDisplayValue());
}
// Display the user's roles and groups
gs.info("User Roles: " + userRoles);
gs.info("User Groups: " + groupsList.join(', '));
Thanks,
Ratnakar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 11:53 PM - edited 03-21-2024 11:57 PM
Hi @thomas94
I think you need to get user_name first, then the group and roles for clear picture. Please run the following script-
var currentUserID = gs.getUserID();
var currentUserName = gs.getUserName();
var roleNames = [];
var groups = [];
var userRoles = new GlideRecord('sys_user_has_role');
userRoles.addQuery('user', currentUserID);
userRoles.query();
while (userRoles.next()) {
var roleID = userRoles.getValue('role');
var roleRecord = new GlideRecord('sys_user_role');
if (roleRecord.get(roleID)) {
roleNames.push(roleRecord.getValue('name'));
}
}
var groupMemberships = new GlideRecord('sys_user_grmember');
groupMemberships.addQuery('user', currentUserID);
groupMemberships.query();
while (groupMemberships.next()) {
var groupId = groupMemberships.getValue('group');
var groupRecord = new GlideRecord('sys_user_group');
if (groupRecord.get(groupId)) {
groups.push(groupRecord.getDisplayValue('name'));
}
}
gs.info('User: ' + currentUserName + '\nRoles: ' + roleNames.join(', ') + '\nGroups: ' + groups.join(', '));
Please mark my answer helpful and correct.
Regards,
Amit

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2024 11:55 PM - edited 03-21-2024 11:58 PM
// Get the current user's roles and groups
var user = gs.getUser();
var userId = user.getID();
// Query User Roles
var gr = new GlideRecord('sys_user_has_role');
gr.addQuery('user', userId);
gr.query();
v ar roles = [];
while (gr.next()) {
roles.push(gr.role.name.getDisplayValue());
}
// Query User Groups
var groups = [];
var groupGr = new GlideRecord('sys_user_grmember');
groupGr.addQuery('user', userId);
groupGr.query();
while (groupGr.next()) {
groups.push(groupGr.group.name.getDisplayValue());
}
// Print out the roles and groups
gs.info("Current User Roles: " + roles.join(', '));
gs.info("Current User Groups: " + groups.join(', '));
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-22-2024 12:42 AM
Below is code i checked working in background script:
// Get the current logged-in user
var user = gs.getUser();
// Get the user's roles
var userRoles = user.getRoles();
gs.info("User Roles: " + userRoles);
// Query user record to get associated groups
var userGroups = new GlideRecord('sys_user_grmember');
userGroups.addQuery('user', user.getID());
userGroups.query();
if (userGroups.getRowCount() > 0) {
gs.info("User Groups:");
while (userGroups.next()) {
var group = userGroups.getDisplayValue('group');
gs.info(group);
}
} else {
gs.info("User is not a member of any groups.");
}
Please Mark ✅Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.
Thanks