Skip to content

Commit 88b15c6

Browse files
Create Weekly_LicensedUser_Access_Revoke_90Days.js
1 parent 0af7289 commit 88b15c6

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
(function executeWeeklyJob() {
2+
3+
var DAYS_INACTIVE_THRESHOLD = 90; // number of days without login before revocation
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+
// Iterate through each licensed role
17+
for (var i = 0; i < licensedRoles.length; i++) {
18+
var role = licensedRoles[i];
19+
var groupName = roleGroupMap[role];
20+
21+
var userRoleGR = new GlideRecord('sys_user_has_role');
22+
userRoleGR.addQuery('role.name', role);
23+
userRoleGR.addQuery('user.active', true);
24+
userRoleGR.query();
25+
26+
while (userRoleGR.next()) {
27+
var user = userRoleGR.user.getRefRecord();
28+
var lastLogin = user.last_login_time;
29+
30+
// If user never logged in or inactive beyond threshold
31+
if (!lastLogin || lastLogin < thresholdDate) {
32+
// gs.info('Revoking access for user: ' + user.name + ' (' + role + ')');
33+
34+
// Remove from corresponding group
35+
var groupGR = new GlideRecord('sys_user_grmember');
36+
groupGR.addQuery('user', user.sys_id);
37+
groupGR.addQuery('group.name', groupName);
38+
groupGR.query();
39+
while (groupGR.next()) {
40+
groupGR.deleteRecord();
41+
}
42+
43+
}
44+
}
45+
}
46+
})();

0 commit comments

Comments
 (0)