Name

global.sc_ic_ItemStagingSecurityManager

Description

Security manager for the sc_ic_item_staging table

Script

var sc_ic_ItemStagingSecurityManager = Class.create();

sc_ic_ItemStagingSecurityManager.prototype = Object.extendsObject(sc_ic_SecurityManager,{
  initialize: function(_gr,_gs) {
  	sc_ic_SecurityManager.prototype.initialize.call(this,_gr,_gs);
  },

  canCreate: function() {
  	return gs.hasRole(sc_.CATALOG_ADMIN) || gs.hasRole(sc_ic.CATALOG_MANAGER) || gs.hasRole(sc_ic.CATALOG_EDITOR);
  },
  
  canRead: function() {
  	var item = sc_ic_Factory.wrap(this._gr);
  	
  	if (item.isAdmin())
  		return true;

  	if (!gs.hasRole(sc_ic.CATALOG_MANAGER) && !gs.hasRole(sc_ic.CATALOG_EDITOR)) {
  		return false;
  	}
  		
  	if (this._gr.isNewRecord())
  		return true;

  	var itemCategories = this._gr[sc_ic.CATEGORIES] + "";
  	if (JSUtil.nil(itemCategories))
  		return false;
  	
  	var itemCategoriesArr = itemCategories.split(",");
  	
  	var availableCategoryIds = item.getUsersAvailableCategories();
  	var availableCategoriesObj = {};
  	for (var i = 0; i < availableCategoryIds.length; i++)
  		availableCategoriesObj[availableCategoryIds[i]] = true;
  	
  	for (var i = 0; i < itemCategoriesArr.length; i++)
  		if (availableCategoriesObj[itemCategoriesArr[i]])
  			return true;
  	
  	return false;
  },
  
  canUpdate: function() {
  	var item = sc_ic_Factory.wrap(this._gr);

  	if (!item.accessibleInDomain())
  		return false;

  	if (gs.hasRole(sc_.CATALOG_ADMIN))
  		return true;

  	return this.canRead();
  },
  
  canPublish: function() {
  	if(!this._gr.isInSelectedScope())
  		return false;
  		
  	if(!this._gr.isInGlobalScope()) {
  		if(!gs.hasRole("admin")) {
  			gs.warn(gs.getMessage("Only admin can publish the service '{0}' because its in the scoped application '{1}'", [this._gr.name.toString(), this._gr.sys_scope.name.toString()]));
  			return false;
  		}
  	}
  
  	var item = sc_ic_Factory.wrap(this._gr);
  	if (item.createdFromServiceCreator()) {
  		var roles = gs.getProperty("glide.service_creator.publish_roles", "admin,catalog_admin,catalog_manager");
  		if (!gs.hasRole(roles))
  			return false;
  	}
  	
  	return this.canUpdate();
  },
  
  canDelete: function() {
  	var item = sc_ic_Factory.wrap(this._gr);
  	if (item.createdFromServiceCreator())
  		return gs.hasRole(sc_.CATALOG_ADMIN) || gs.hasRole(sc_ic.CATALOG_MANAGER) || gs.hasRole(sc_ic.CATALOG_EDITOR);

  	if (!item.accessibleInDomain())
  		return false;
      return gs.hasRole("admin");
  },
  
  type: 'sc_ic_ItemStagingSecurityManager'
});

Sys ID

713051fceb1311003623666cd206fee3

Offical Documentation

Official Docs: