Name

global.PPMConsoleAccessStrategy

Description

No description available

Script

var PPMConsoleAccessStrategy = Class.create();
PPMConsoleAccessStrategy.prototype = {
  initialize: function() {
  },

  instanceOf: function(childTable, parentTable) {
      if(JSUtil.notNil(childTable) && JSUtil.notNil(parentTable)) {
          var gr = new GlideRecord(childTable);
          return gr.instanceOf(parentTable);
      }
      return false;
  },

  accessConfig: function(entity, entityId, consoleId, context) {
      PPMDebug.log('PPMConsoleAccessStrategy.accessConfig: ' + entity + " | " + entityId + " | " + consoleId);
      //derive tables
      var console = new PPMConsole(entity, context);
      var tables = console.getTables();
      var additionalTables = [];
      var json = new JSON();
      
      if ( JSUtil.notNil(consoleId) )
          return PPMMyGanttAccess.accessConfig();
      
      if ( PPMTableCheck.isProject(entity) ) 
          additionalTables = PPMProjectAccess.additionalTables();
      else if ( PPMTableCheck.isRelease(entity) )
          additionalTables = PPMReleaseAccess.additionalTables();
      else if ( PPMTableCheck.isPlannedTask(entity) )
          additionalTables = PPMPlannedTaskAccess.additionalTables();
      if(additionalTables && additionalTables.length > 0)
      PPMDebug.log('PPMConsoleAccessStrategy.accessConfig: additionalTables - ' + json.encode(additionalTables));
      tables = tables.concat(additionalTables);

      //find permission for tables
      var tablePermissions = new PPMTablePermissionMapper();
      var perms = tablePermissions.getPermissions(tables, entityId);

      PPMDebug.log('PPMConsoleAccessStrategy.accessConfig: perms - ' + json.encode(perms));
      
      //decorate permission and send to client
      if ( PPMTableCheck.isProject(entity) ) 
          return PPMProjectAccess.accessConfig(entity, perms);
      else if ( PPMTableCheck.isRelease(entity) )
          return PPMReleaseAccess.accessConfig(entity, perms);
      else if ( PPMTableCheck.isPlannedTask(entity) )
          return PPMPlannedTaskAccess.accessConfig(entity, perms);
      else
          return perms;
  },

  type: 'PPMConsoleAccessStrategy'
};

Sys ID

e2947a819f031200598a5bb0657fcf2d

Offical Documentation

Official Docs: