Name

global.PlanningConsoleSecurityValidator

Description

No description available

Script

var PlanningConsoleSecurityValidator = Class.create();
/* Given a Project Id, Derives the access Levels */

PlanningConsoleSecurityValidator.prototype = {
  initialize: function() {
  },

  glideRecord: function(entityClassName) {
      var gr = new GlideRecord(entityClassName);
      gr.initialize();
      return gr;
  },

  planningConsoleEntityPreference: function() {
      return gs.getUser().getPreference(PmFieldConstants.PLANNING_CONSOLE_ENTITY_ID);
  },

  getSysClassName: function() {
      var taskGr = new GlideRecord('planned_task');
      if( taskGr.get(this.planningConsoleEntityPreference())) {
          return taskGr.getValue("sys_class_name");
      }
  },

  canCreate: function(sysClassName) {
      PPMDebug.log("Into PlanningConsoleSecurityValidator.canCreate -> " +  sysClassName);
      sysClassName = sysClassName || this.getSysClassName(this.planningConsoleEntityPreference());
      PPMDebug.log("Into PlanningConsoleSecurityValidator.sysClassName -> " +  sysClassName);
      return this.glideRecord(sysClassName).canCreate();
  },

  canRead: function() {
      var sysClassName = this.getSysClassName(this.planningConsoleEntityPreference());
      return this.glideRecord(sysClassName).canCreate();
  },

  canWrite: function() {
      var sysClassName = this.getSysClassName(this.planningConsoleEntityPreference());
      return this.glideRecord(sysClassName).canWrite();
  },

  canDelete: function() {
      var sysClassName = this.getSysClassName(this.planningConsoleEntityPreference());
      return this.glideRecord(sysClassName).canDelete();
  },

  access: function( entityClassName, entityId ) {
      var access = {
          access: this.hasAccess(entityClassName, entityId),
          crudAccess: this.hasCRUDAccess(entityClassName, entityId)
      };
      //gs.info("access: " + access.access + " ; crudAccess: " + access.crudAccess);
  },

  hasAccess: function(entityClassName, entityId) {
      PPMDebug.log("Into PlanningConsoleSecurityValidator.hasAccess -> " +  entityClassName + " | " + entityId);
      var gr;
      for ( var i=0; i<entityId.length; i++ ) {
          gr = this.glideRecord(entityClassName);
          if ( gr.get(entityId[i]) && gr.canRead() )
              continue;
          else
              return false;
      }
      return true;
  },
  
  hasCRUDAccess: function(entityClassName, entityId) {
      var gr;
      for ( var i=0; i<entityId.length; i++ ) {
          gr = this.glideRecord(entityClassName);
          if ( gr.get(entityId[i]) && gr.canRead() && gr.canCreate() && gr.canWrite() && gr.canDelete() )
              continue;
          else
              return false;
      }
      return true;
  },

  createBaselineAccess: function() {
      return gs.hasRole('project_manager');
  },

  createOrUpdateTaskAccess: function(entityClassName) {
      var projectTaskTable = SNC.PPMConfig.getProjectTaskTable(entityClassName);
      //gs.info("createOrUpdateTaskAccess : projectTaskTable --> " + projectTaskTable);
      var gr = new GlideRecord(projectTaskTable);
      return gr.canCreate() || gr.canWrite();
  },

  hasWbAccess: function (entityClassName) {
      PPMDebug.log("Into PlanningConsoleSecurityValidator.hasWbAccess -> " +  entityClassName);
      var role = SNC.PPMConfig.getProjectRole('manager', entityClassName);
      var hasWbAccess = gs.hasRole(role);
      gs.print("Into PlanningConsoleSecurityValidator.hasWbAccess -> " + hasWbAccess + " | " + role);
      return hasWbAccess;
  },

  type: 'PlanningConsoleSecurityValidator'
};

Sys ID

304bb9019f000200598a5bb0657fcf35

Offical Documentation

Official Docs: