Name

global.UserSetAuditHelper

Description

This script include logs creation, deletion and update of sys_user_sets.

Script

var UserSetAuditHelper = Class.create();
UserSetAuditHelper.prototype = {
  initialize: function() {
  	
  	this.SYS_USER_AUDIT_LOG = "sys_user_set_audit_log";
  	this.SYS_USER_SET = "sys_user_set";
  	
  	this.CREATED = "created";
  	this.DELETED = "deleted";
  	this.UPDATED = "updated";
  	
  	this.userSetHelper = new UserSetHelper();
  	
  	this.INITIALIZED = this._validate();
  },
  
  recordUserSetCreated: function (userSetGR) {
  	this.record(userSetGR, "", this.CREATED);
  },
  
  recordUserSetUpdated: function (newUserSetGR, oldUserSetGR) {		
  	this.record(newUserSetGR, oldUserSetGR, this.UPDATED);
  },
  
  recordUserSetDeleted: function (userSetGR) {
  	this.record(userSetGR, "", this.DELETED);
  },
  
  record: function(newUserSetGR, oldUserSetGR, operation) {
  	
  	if (!this.INITIALIZED)
  		return;
  	
  	if (!this._validateAuditInput(newUserSetGR, operation))
  		return;
  	
  	var countDelta = this._getCountDelta(newUserSetGR, oldUserSetGR);
  	
  	var userSetName = newUserSetGR.getValue("name");
  	var opTime = this._getOperationTime(newUserSetGR, operation);
  			
  	var gr = new GlideRecord(this.SYS_USER_AUDIT_LOG);
  	
  	gr.setValue("time_stamp", opTime);
  	gr.setValue("user_set_name", userSetName);
  	gr.setValue("user_set", newUserSetGR.getValue("sys_id"));
  	gr.setValue("operation", operation);
  	gr.setValue("user_set_source_type", newUserSetGR.getValue("source"));
  	gr.setValue("user_count_delta", countDelta);
  	
  	var auditRec = gr.insert();
  	
  	if (JSUtil.nil(auditRec))
  		GlideLog.error("User Set Audit Log creation failed for: " + userSetName);
  },
  
  _getOperationTime: function (newUserSetGR, operation) {
  	
  	if (operation === this.CREATED)
  		return newUserSetGR.getValue("sys_created_on");
  	else if (operation === this.UPDATED)
  		return newUserSetGR.getValue("sys_updated_on");
  	else 
  		return new GlideDateTime().getValue();
  	
  },
  
  _getCountDelta: function (/*sys_user_set GlideRecord*/newUserSetGR, /*sys_user_set GlideRecord*/oldUserSetGR) {
  	
  	var beforeUsers = this.userSetHelper.retrieveUserSetCount(oldUserSetGR);
  	var afterUsers = this.userSetHelper.retrieveUserSetCount(newUserSetGR);
  	
  	return  afterUsers - beforeUsers;
  },
  
  _validateAuditInput: function (newUserSetGR, operation) {
  	
  	if (JSUtil.nil(newUserSetGR)) {
  		GlideLog.error("Skipping User Set Audit Log for because sys_user_set GlideRecord object is null");
  		return false;
  	}
  	
  	if (JSUtil.nil(operation)) {
  		GlideLog.error("Skipping User Set Audit Log for " + newUserSetGR.name + "because operation is unknown");
  		return false;
  	}
  	
  	return true;
  },
  
  _validate: function() {
  	if (!GlideTableDescriptor.isValid(this.SYS_USER_AUDIT_LOG)) {
  		GlideLog.error("Skipping User Set Audit Log because " + this.SYS_USER_AUDIT_LOG + " does not exist");
  		return false;
  	}
  	
  	if (!GlideTableDescriptor.isValid(this.SYS_USER_SET)) {
  		GlideLog.error("Skipping User Set Audit Log because " + this.SYS_USER_SET + " does not exist");
  		return false;
  	}
  	
  	return true;
  },

  type: 'UserSetAuditHelper'
};

Sys ID

b063dca967171200a4c0156f57415a18

Offical Documentation

Official Docs: