How to get Current Logged in user roles and groups through background script?

thomas94
Tera Contributor

Hi All,

Please help on this

How to get Current Logged in user roles and groups through background script?

5 REPLIES 5

Ratnakar7
Mega Sage
Mega Sage

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

 

Amit Pandey
Kilo Sage

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

Community Alums
Not applicable

// 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(', '));

Maddysunil
Kilo Sage

@thomas94 

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