Name

global.RemoveCustomTableRole

Description

No description available

Script

var RemoveCustomTableRole = Class.create();
RemoveCustomTableRole.prototype = {
  initialize: function() {
  	this.USER = "user";
  	this.ROLE = "role";
  	this.GROUP = "group";
  	this.CONTAINS = "contains";
  	this.SYS_USER_GRMEMBER_TABLE = "sys_user_grmember";
  	this.SYS_USER_HAS_ROLE_TABLE = "sys_user_has_role";
  	this.SYS_GROUP_HAS_ROLE_TABLE = "sys_group_has_role";
  	this.SYS_USER_ROLE_CONTAINS_TABLE = "sys_user_role_contains";
  },

  removeRoleViaGroupRole :function(group, roleName, roleSysId ) {
  	var sysUserGrmemberGR = new GlideRecord(this.SYS_USER_GRMEMBER_TABLE);
  	sysUserGrmemberGR.addQuery(this.GROUP, group);
  	sysUserGrmemberGR.query();
  	
  	while (sysUserGrmemberGR.next()) {
  		var user = sysUserGrmemberGR.getValue(this.USER);
  		this.removeRoleViaUserRole(user, roleName, roleSysId);
  	}
  },
  
  removeRoleViaUserRole: function(user, roleName, roleSysId) {
  	//remove access to CT for child roles
  	var sysUserRoleContainsGr = new GlideRecord(this.SYS_USER_ROLE_CONTAINS_TABLE);
  	sysUserRoleContainsGr.addQuery(this.ROLE, roleSysId);
  	sysUserRoleContainsGr.query();
  	while (sysUserRoleContainsGr.next()) {
  		var childRoleSysId = sysUserRoleContainsGr.getValue(this.CONTAINS);
  		var childRoleName = sysUserRoleContainsGr.getElement(this.CONTAINS).getDisplayValue();
  		this.removeRoleViaUserRole(user, childRoleName, childRoleSysId);
  	}
  	
  	var sysUserHasRoleGr  = new GlideRecord(this.SYS_USER_HAS_ROLE_TABLE);
  	sysUserHasRoleGr.addQuery(this.USER, user);
  	sysUserHasRoleGr.addQuery(this.ROLE, roleSysId);
  	sysUserHasRoleGr.query();
  	
  },
  
  removeRoleViaGroupMember :function(group, user) {
  	var sysGroupHasRoleGr = new GlideRecord(this.SYS_GROUP_HAS_ROLE_TABLE);
  	sysGroupHasRoleGr.addQuery(this.GROUP, group);
  	sysGroupHasRoleGr.query();
  	
  	while (sysGroupHasRoleGr.next()) {
  		var roleSysId = sysGroupHasRoleGr.getValue(this.ROLE);
  		var roleName = sysGroupHasRoleGr.getElement(this.ROLE).getDisplayValue();
  		this.removeRoleViaUserRole(user, roleName, roleSysId);
  	}
  },
  
  type: 'RemoveCustomTableRole'
};

Sys ID

512f39b63b3133007fef460044efc446

Offical Documentation

Official Docs: