Skip to content

Commit 072e920

Browse files
Create code.js
1 parent f543998 commit 072e920

File tree

1 file changed

+43
-0
lines changed
  • Server-Side Components/Scheduled Jobs/Role Usage Analyzer

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
// Role Usage Analyzer Script
3+
// Description: Identifies roles assigned to users that may be unused.
4+
5+
var roleUsageMap = {};
6+
var grUserRole = new GlideRecord('sys_user_has_role');
7+
grUserRole.query();
8+
9+
while (grUserRole.next()) {
10+
var userId = grUserRole.user.toString();
11+
var roleId = grUserRole.role.toString();
12+
13+
if (!roleUsageMap[roleId]) {
14+
roleUsageMap[roleId] = {
15+
users: [],
16+
used: false
17+
};
18+
}
19+
20+
roleUsageMap[roleId].users.push(userId);
21+
}
22+
23+
var grHistory = new GlideRecord('sys_history_line');
24+
grHistory.addQuery('user', 'ISNOTEMPTY');
25+
grHistory.query();
26+
27+
while (grHistory.next()) {
28+
var userId = grHistory.user.toString();
29+
for (var roleId in roleUsageMap) {
30+
if (roleUsageMap[roleId].users.indexOf(userId) !== -1) {
31+
roleUsageMap[roleId].used = true;
32+
}
33+
}
34+
}
35+
36+
for (var roleId in roleUsageMap) {
37+
if (!roleUsageMap[roleId].used) {
38+
var grRole = new GlideRecord('sys_user_role');
39+
if (grRole.get(roleId)) {
40+
gs.info('[Role Usage Analyzer] Unused Role: ' + grRole.name + ' | Assigned to Users: ' + roleUsageMap[roleId].users.length);
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)