Name

global.ScrumSecurityManager

Description

This is the ScrumSecurityManager that gets called to determine permission for the Scrum Process plugin. Its methods are split into 5 categories 1 Creators - these are the methods used to determine if the User should be allowed to create a record in a table 2 Deleters - these are the methods that are used to determine if the User should be allowed to delete a record from a table 3 Readers - these are the methods that are used to determine if the User should be allowed to read records from a table 4 Writers - these are the methods that are used to determine if the User should be allowed to write records to a table 5 Miscellaneous - these are methods that are used to list the records that a User can access in a table For the default implementation, see ScrumSecurityManagerDefault. To implement your own, extend ScrumSecurityManagerDefault and update the property com.snc.sdlc.scrum.pp.smclass

Script

var ScrumSecurityManager = Class.create();

// Constants available for the Scrum Security Manager classes. These are split into 3 categories:
// [1] Roles - these represent the Product Owner, Scrum Master and Team Member roles and combinations thereof.
// [2] Actions - these represent the the types of operations a user may need to perform on the Scrum tables.
// [3] Tables - these represent the names of the SQL tables used  by the Scrum application. 

ScrumSecurityManager.PRODUCT_OWNER = ["Product Owner"];
ScrumSecurityManager.SCRUM_MASTER = ["Scrum Master"];
ScrumSecurityManager.TEAM_MEMBER = ["Team Member"];
ScrumSecurityManager.SCRUM_MASTER_TEAM_MEMBER = [ "Scrum Master",  "Team Member" ];
ScrumSecurityManager.PRODUCT_OWNER_SCRUM_MASTER = [ "Product Owner", "Scrum Master" ];
ScrumSecurityManager.ANY_TEAM_MEMBER = [ "Product Owner", "Scrum Master", "Team Member"];
//--------------------------------------------------------------------------------------------------
ScrumSecurityManager.CREATE = "Create";
ScrumSecurityManager.DELETE = "Delete";
ScrumSecurityManager.READ = "Read";
ScrumSecurityManager.WRITE = "Write";
//--------------------------------------------------------------------------------------------------
ScrumSecurityManager.USER_PERMISSIONS = "scrum_user_permissions";
ScrumSecurityManager.GROUP_PERMISSIONS = "scrum_group_permissions";
ScrumSecurityManager.PRODUCT_RELEASE = "m2m_product_release";
//ScrumSecurityManager.EPIC_RELEASE = "m2m_scrum_epic_release";
ScrumSecurityManager.PRODUCT = "cmdb_model";
ScrumSecurityManager.RELEASE = "rm_release_scrum";
ScrumSecurityManager.SPRINT = "rm_sprint";
ScrumSecurityManager.EPIC = "rm_epic";
ScrumSecurityManager.STORY = "rm_story";
ScrumSecurityManager.TASK = "rm_scrum_task";
ScrumSecurityManager.AGILE_TEAM = '1bff3b1493030200ea933007f67ffb6d';

// the ScrumSecurityManager implementation to be used
ScrumSecurityManager.DEFAULT_SMCLASSNAME = 'ScrumSecurityManagerDefault';      // the default
ScrumSecurityManager.SDLC_SCRUM_SMCLASSNAME = 'com.snc.sdlc.scrum.pp.smclass'; // sys_properties
ScrumSecurityManager.impl = function() {
 var klass = ScrumSecurityManager._getClass(gs.getProperty(ScrumSecurityManager.SDLC_SCRUM_SMCLASSNAME, 'ScrumSecurityManagerDefault'));
 var impl = new klass();
 return impl;
};

//--------------------------------------------------------------------------------------------------
// can user create <x>?
//--------------------------------------------------------------------------------------------------

ScrumSecurityManager.canCreateProductRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateProductRelease(glideRecord);
};

ScrumSecurityManager.canCreateEpicRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateEpicRelease(glideRecord);
};

ScrumSecurityManager.canCreateGroupPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateGroupPermissions(glideRecord);
};

ScrumSecurityManager.canCreateUserPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateUserPermissions(glideRecord);
};

ScrumSecurityManager.canCreateProduct = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateProduct(glideRecord);
};

ScrumSecurityManager.canCreateRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateRelease(glideRecord);
};

ScrumSecurityManager.canCreateReleaseForProduct = function(product) {
 return ScrumSecurityManager.impl().canCreateReleaseForProduct(product);
};

ScrumSecurityManager.canCreateSprint = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateSprint(glideRecord);
};

ScrumSecurityManager.canCreateEpic = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateEpic(glideRecord);
};

ScrumSecurityManager.canCreateStory = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateStory(glideRecord);
};

ScrumSecurityManager.canCreateStoryForProduct = function(product) {
 return ScrumSecurityManager.impl().canCreateStoryForProduct(product);
};

ScrumSecurityManager.canCreateTask = function(glideRecord) {
 return ScrumSecurityManager.impl().canCreateTask(glideRecord);
};
 
//--------------------------------------------------------------------------------------------------
// can user delete <x>?
//--------------------------------------------------------------------------------------------------

ScrumSecurityManager.canDeleteProductRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteProductRelease(glideRecord);
};

ScrumSecurityManager.canDeleteProduct = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteProduct(glideRecord);
};

ScrumSecurityManager.canDeleteGroupPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteGroupPermissions(glideRecord);
};

ScrumSecurityManager.canDeleteUserPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteUserPermissions(glideRecord);
};

ScrumSecurityManager.canDeleteRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteRelease(glideRecord);
};

ScrumSecurityManager.canDeleteSprint = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteSprint(glideRecord);
};

ScrumSecurityManager.canDeleteEpic = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteEpic(glideRecord);
};

ScrumSecurityManager.canDeleteStory = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteStory(glideRecord);
};

ScrumSecurityManager.canDeleteTask = function(glideRecord) {
 return ScrumSecurityManager.impl().canDeleteTask(glideRecord);
};

//--------------------------------------------------------------------------------------------------
// can user read <x>?
//--------------------------------------------------------------------------------------------------

ScrumSecurityManager.canReadProductContents = function() {
 return ScrumSecurityManager.impl().canReadProductContents();
};

ScrumSecurityManager.canReadProductRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadProductRelease(glideRecord);
};

ScrumSecurityManager.canReadEpicRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadEpicRelease(glideRecord);
};

ScrumSecurityManager.canReadGroupPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadGroupPermissions(glideRecord);
};

ScrumSecurityManager.canReadUserPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadUserPermissions(glideRecord);
};

ScrumSecurityManager.canReadProduct = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadProduct(glideRecord);
};

ScrumSecurityManager.canReadRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadRelease(glideRecord);
};

ScrumSecurityManager.canReadSprint = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadSprint(glideRecord);
};

ScrumSecurityManager.canReadEpic = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadEpic(glideRecord);
};

ScrumSecurityManager.canReadStory = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadStory(glideRecord);
};

ScrumSecurityManager.canReadTask = function(glideRecord) {
 return ScrumSecurityManager.impl().canReadTask(glideRecord);
};
 
//--------------------------------------------------------------------------------------------------
// can user write to <x>?
//--------------------------------------------------------------------------------------------------

ScrumSecurityManager.canWriteStoryDotProduct = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteStoryDotProduct(glideRecord);
};

ScrumSecurityManager.canWriteAnyStoryOrTaskDotState = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteAnyStoryOrTaskDotState(glideRecord);
};

ScrumSecurityManager.canWriteStoryDotRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteStoryDotRelease(glideRecord);
};

ScrumSecurityManager.canWriteStoryDotSprint = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteStoryDotSprint(glideRecord);
};

ScrumSecurityManager.canWriteProductRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteProductRelease(glideRecord);
};

ScrumSecurityManager.canWriteEpicRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteEpicRelease(glideRecord);
};

ScrumSecurityManager.canWriteGroupPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteGroupPermissions(glideRecord);
};

ScrumSecurityManager.canWriteUserPermissions = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteUserPermissions(glideRecord);
};

ScrumSecurityManager.canWriteProduct = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteProduct(glideRecord);
};

ScrumSecurityManager.canWriteRelease = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteRelease(glideRecord);
};

ScrumSecurityManager.canWriteSprint = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteSprint(glideRecord);
};

ScrumSecurityManager.canWriteEpic = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteEpic(glideRecord);
};

ScrumSecurityManager.canWriteStory = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteStory(glideRecord);
};

ScrumSecurityManager.canWriteTask = function(glideRecord) {
 return ScrumSecurityManager.impl().canWriteTask(glideRecord);
};

//--------------------------------------------------------------------------------------------------
// methods that return a list of <x> that the user can access
//--------------------------------------------------------------------------------------------------

ScrumSecurityManager.getEpicReleases = function() {
 return ScrumSecurityManager.impl().getEpicReleases();
};

ScrumSecurityManager.getGroupPermissions = function() {
 return ScrumSecurityManager.impl().getGroupPermissions();
};

ScrumSecurityManager.getUserPermissions = function() {
 return ScrumSecurityManager.impl().getUserPermissions();
};

ScrumSecurityManager.getProducts = function() {
 return ScrumSecurityManager.impl().getProducts();
};

ScrumSecurityManager.getReleases = function(funcFilter) {
 return ScrumSecurityManager.impl().getReleases(funcFilter);
};

ScrumSecurityManager.getReleasesForProduct = function(productId) {
 return ScrumSecurityManager.impl().getReleasesForProduct(productId);
};

ScrumSecurityManager.getEpicsForProduct = function(productId, funcFilter) {
 return ScrumSecurityManager.impl().getEpicsForProduct(productId, funcFilter);
};

ScrumSecurityManager.getProductsForUser = function() {
 return ScrumSecurityManager.impl().getProductsForUser();
};

ScrumSecurityManager.getSprints = function() {
 return ScrumSecurityManager.impl().getSprints();
};

ScrumSecurityManager.getSprintsForRelease = function(releaseId) {
 return ScrumSecurityManager.impl().getSprintsForRelease(releaseId);
};

ScrumSecurityManager.getSprintsForUser = function() {
 return ScrumSecurityManager.impl().getSprintsForUser();
};

ScrumSecurityManager.getEpics = function() {
 return ScrumSecurityManager.impl().getEpics();
};

ScrumSecurityManager.getStories = function() {
 return ScrumSecurityManager.impl().getStories();
};

ScrumSecurityManager.getTasks = function() {
 return ScrumSecurityManager.impl().getTasks();
};

ScrumSecurityManager.getEncodedQuery = function(array) {
 return 'sys_idIN' + array.join(',');
};

ScrumSecurityManager.getScrumUserIds = function () {
 return ScrumSecurityManager.impl().getScrumUserIds();   
};

//========================================================================

ScrumSecurityManager.getReleaseDotDefaultTeam = function (recRmReleaseScrum) {
 return ScrumSecurityManager.impl().getReleaseDotDefaultTeam (recRmReleaseScrum);   
};

ScrumSecurityManager.getStoryDotAssignedTo = function (recRmStory) {
 return ScrumSecurityManager.impl().getStoryDotAssignedTo (recRmStory);
};

ScrumSecurityManager.getScrumTaskDotAssignedTo = function (recRmScrumTask) {
 return ScrumSecurityManager.impl().getScrumTaskDotAssignedTo (recRmScrumTask);
};

ScrumSecurityManager.getScrumReleaseTeamMemberDotName = function (recScrumReleaseTeamMember) {
 return ScrumSecurityManager.impl().getScrumReleaseTeamMemberDotName(recScrumReleaseTeamMember);
};

ScrumSecurityManager.getScrumSprintTeamMemberDotName = function (recScrumSprintTeamMember) {
 return ScrumSecurityManager.impl().getScrumSprintTeamMemberDotName(recScrumSprintTeamMember);
};

ScrumSecurityManager.getScrumSprintTeamDotSprint = function (recScrumSprintTeam) {
 return ScrumSecurityManager.impl().getScrumSprintTeamDotSprint(recScrumSprintTeam);
};

ScrumSecurityManager.getScrumReleaseTeamDotPoints = function (recScrumReleaseTeam) {
 return ScrumSecurityManager.impl().getScrumReleaseTeamDotPoints(recScrumReleaseTeam);
};

ScrumSecurityManager.getScrumSprintTeamDotPoints = function (recScrumSprintTeam) {
 return ScrumSecurityManager.impl().getScrumSprintTeamDotPoints(recScrumSprintTeam);
};

ScrumSecurityManager.getSprintDotTeam = function (recSprint) {
 return ScrumSecurityManager.impl().getSprintDotTeam(recSprint);
};

ScrumSecurityManager.getSprintDotReleaseTeam = function (recSprint) {
 return ScrumSecurityManager.impl().getSprintDotReleaseTeam(recSprint);
};

ScrumSecurityManager.getSprintDotStoryPoints = function (recSprint) {
 return ScrumSecurityManager.impl().getSprintDotStoryPoints(recSprint);
};

ScrumSecurityManager.getSprintDotTeamPoints = function (recSprint) {
 return ScrumSecurityManager.impl().getSprintDotTeamPoints(recSprint);
};

ScrumSecurityManager.validateSprintFields = function (sprintRecord) {
 return ScrumSecurityManager.impl().validateSprintFields(sprintRecord);
};

ScrumSecurityManager.getEpicDotParentEpic = function (recEpic) {
 return ScrumSecurityManager.impl().getEpicDotParentEpic(recEpic);
};

ScrumSecurityManager.getStoryDotEpic = function (recEpic) {
 return ScrumSecurityManager.impl().getStoryDotEpic(recEpic);
};

ScrumSecurityManager.getSprintDotRelease = function (recSprint) {
 return ScrumSecurityManager.impl().getSprintDotRelease(recSprint);
};

ScrumSecurityManager.getStoryDotProduct = function (recStory) {
 return ScrumSecurityManager.impl().getStoryDotProduct(recStory);
};

ScrumSecurityManager.getStoryDotRelease = function (recStory) {
 return ScrumSecurityManager.impl().getStoryDotRelease(recStory);
};

ScrumSecurityManager.getStoryDotSprint = function (recStory) {
 return ScrumSecurityManager.impl().getStoryDotSprint(recStory);
};

ScrumSecurityManager.getStoryDotTheme = function (recStory) {
 return ScrumSecurityManager.impl().getStoryDotTheme(recStory);
};

ScrumSecurityManager.getPhaseDotGroup = function (recPhase,column_name) {
 return ScrumSecurityManager.impl().getPhaseDotGroup(recPhase, column_name);
};

ScrumSecurityManager.getEpicDotTheme = function (recEpic) {
 return ScrumSecurityManager.impl().getEpicDotTheme(recEpic);
};

ScrumSecurityManager.getEpicDotProduct = function (recEpic) {
 return ScrumSecurityManager.impl().getEpicDotProduct(recEpic);
};

ScrumSecurityManager.getThemeDotProduct = function (recScrumTheme) {
 return ScrumSecurityManager.impl().getThemeDotProduct(recScrumTheme);
};

ScrumSecurityManager.getTeamMemberDotName = function (teamMember) {
 return ScrumSecurityManager.impl().getTeamMemberDotName(teamMember);
};

ScrumSecurityManager.getStoryDotTeam = function (recStory) {
 return ScrumSecurityManager.impl().getStoryDotTeam(recStory);
};

ScrumSecurityManager.getStoryDotGroup = function (recStory) {
 return ScrumSecurityManager.impl().getStoryDotGroup(recStory);
};

ScrumSecurityManager.getStoryDotPhases = function(recStory){
  return ScrumSecurityManager.impl().getStoryDotPhases(recStory);
};

ScrumSecurityManager.getReleaseGroupAssignmentDotSprints = function(recReleaseGroupAssignment){
  return ScrumSecurityManager.impl().getReleaseGroupAssignmentDotSprints(recReleaseGroupAssignment);
};

ScrumSecurityManager.getStoryDotProject = function(recStory){
  return ScrumSecurityManager.impl().getStoryDotProject(recStory);
};

ScrumSecurityManager.isAgileGroup = function(recGroup){
  return ScrumSecurityManager.impl().isAgileGroup(recGroup);
};

//========================================================================

ScrumSecurityManager._getClass = function(securityManagerClassName) {
 var _outerScope = JSUtil.getGlobal();
 var securityManagerClass = _outerScope[securityManagerClassName];
 // check that securityManagerClassName is defined, and looks valid as a ScrumSecurityManager Class
 if (!ScrumSecurityManager._isValidSMClass(securityManagerClass)) {
    securityManagerClass = _outerScope[ScrumSecurityManager.DEFAULT_SMCLASSNAME];
    securityManagerClassName = ScrumSecurityManager.DEFAULT_SMCLASSNAME;
 }
 
 return securityManagerClass;   
};

ScrumSecurityManager._isValidSMClass = function(klass) {
 if (typeof klass == 'undefined') {
    return false;
 }
 // a sample of the necessary methods
 var smClassMethods = [ 'canCreateProductRelease', 'canDeleteEpic', 'canReadTask', 'canWriteSprint', 'getReleases' ];
 for (var i = 0; i < smClassMethods.length; i++) {
    if (typeof klass.prototype[smClassMethods[i]] == 'undefined') {
       return false;
    }
 }
 return true;
};

ScrumSecurityManager.prototype = {
 initialize: function() {

 },  

 
 type: 'ScrumSecurityManager'
};

//--------------------------------------------------------------------------------------------------
//ScrumSecurityManager.THEME_RELEASE = "m2m_scrum_theme_release";
//ScrumSecurityManager.THEME = "scrum_theme";
//--------------------------------------------------------------------------------------------------
//ScrumSecurityManager.canCreateThemeRelease = function(glideRecord) {
//   return ScrumSecurityManager.impl().canCreateThemeRelease(glideRecord);
//};
//ScrumSecurityManager.canCreateTheme = function(glideRecord) {
//   return ScrumSecurityManager.impl().canCreateTheme(glideRecord);
//};
//ScrumSecurityManager.canCreateReleaseForTheme = function(theme) {
//   return ScrumSecurityManager.impl().canCreateReleaseForTheme(theme);
//};
//ScrumSecurityManager.canCreateStoryForTheme = function(theme) {
//   return ScrumSecurityManager.impl().canCreateStoryForTheme(theme);
//};
//ScrumSecurityManager.canDeleteThemeRelease = function(glideRecord) {
//   return ScrumSecurityManager.impl().canDeleteThemeRelease(glideRecord);
//};
//ScrumSecurityManager.canDeleteTheme = function(glideRecord) {
//   return ScrumSecurityManager.impl().canDeleteTheme(glideRecord);
//};
//ScrumSecurityManager.canReadThemeContents = function() {
//   return ScrumSecurityManager.impl().canReadThemeContents();
//};
//ScrumSecurityManager.canReadThemeRelease = function(glideRecord) {
//   return ScrumSecurityManager.impl().canReadThemeRelease(glideRecord);
//};
//ScrumSecurityManager.canReadTheme = function(glideRecord) {
//   return ScrumSecurityManager.impl().canReadTheme(glideRecord);
//};
//ScrumSecurityManager.canWriteStoryDotTheme = function(glideRecord) {
//   return ScrumSecurityManager.impl().canWriteStoryDotTheme(glideRecord);
//};
//ScrumSecurityManager.canWriteThemeRelease = function(glideRecord) {
//   return ScrumSecurityManager.impl().canWriteThemeRelease(glideRecord);
//};
//ScrumSecurityManager.canWriteTheme = function(glideRecord) {
//   return ScrumSecurityManager.impl().canWriteTheme(glideRecord);
//};
//ScrumSecurityManager.getThemes = function() {
//   return ScrumSecurityManager.impl().getThemes();
//};
//ScrumSecurityManager.getReleasesForTheme = function(themeId) {
//   return ScrumSecurityManager.impl().getReleasesForTheme(themeId);
//};
//ScrumSecurityManager.getEpicsForTheme = function(themeId, funcFilter) {
//   return ScrumSecurityManager.impl().getEpicsForTheme(themeId, funcFilter);
//};
//ScrumSecurityManager.getThemesForUser = function() {
//   return ScrumSecurityManager.impl().getThemesForUser();
//};
//--------------------------------------------------------------------------------------------------

Sys ID

a715cc9def201000a7450fa3f82256e3

Offical Documentation

Official Docs: