Skip to content

Commit 2ca888c

Browse files
Create Weekly_LicensedUser_Access_Revoke_90Days.js
1 parent 26020f1 commit 2ca888c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
(function executeWeeklyJob() {
2+
3+
var DAYS_INACTIVE_THRESHOLD = 90; // number of days
4+
var licensedRoles = ['itil', 'sys_approver', 'admin', 'business_stakeholder'];
5+
6+
var roleGroupMap = {
7+
'itil': 'ITIL Group',
8+
'sys_approver': 'Approver Group',
9+
'admin': 'Admin Group',
10+
'business_stakeholder': 'Business Stakeholder Group'
11+
};
12+
13+
var thresholdDate = new GlideDateTime();
14+
thresholdDate.addDaysUTC(-DAYS_INACTIVE_THRESHOLD);
15+
16+
for (var i = 0; i < licensedRoles.length; i++) {
17+
var role = licensedRoles[i];
18+
var groupName = roleGroupMap[role];
19+
20+
var userRoleGR = new GlideRecord('sys_user_has_role');
21+
userRoleGR.addQuery('role.name', role);
22+
userRoleGR.addQuery('user.active', true);
23+
userRoleGR.query();
24+
25+
while (userRoleGR.next()) {
26+
var user = userRoleGR.user.getRefRecord();
27+
var lastLogin = user.last_login_time;
28+
29+
// user never logged in or inactive beyond threshold
30+
if (!lastLogin || lastLogin < thresholdDate) {
31+
gs.info('Revoking access for user: ' + user.name + ' (' + role + ')');
32+
33+
// Remove from group
34+
var groupGR = new GlideRecord('sys_user_grmember');
35+
groupGR.addQuery('user', user.sys_id);
36+
groupGR.addQuery('group.name', groupName);
37+
groupGR.query();
38+
while (groupGR.next()) {
39+
groupGR.deleteRecord();
40+
}
41+
}
42+
}
43+
}
44+
})();

0 commit comments

Comments
 (0)