Name

global.DelegatedDevUtil

Description

Helper functions for Delegated Development

Script

var DelegatedDevUtil = (function() {
  return {
  	canAccessManageCollaboratorsUI: function(appGr) {
  		var answer = false;
  		if (!isValidApp(appGr))
  			return answer;

  		answer = checkAppIsNotPrivateAndGlobal(appGr) && areCollaborationFeaturePluginsActive();

  		return answer;
  	},

  	canAccessManageDevelopersUI: function(appGr) {
  		var answer = false;
  		if (!isValidApp(appGr))
  			return answer;

  		answer = this.canAccessManageCollaboratorsUI(appGr);

  		// The Manage Developers UI should not be displayed if the user can access the Manage Collaborators UI
  		if (answer)
  			return false;

  		answer = checkAppIsNotPrivateAndGlobal(appGr) && isScopeAdmin(appGr);
  		return answer;
  	}
  };

  function areCollaborationFeaturePluginsActive() {
  	// Check if the collaboration feature plugins are active
  	var answer = GlidePluginManager.isActive('com.snc.collaboration-request') && GlidePluginManager.isActive('com.glide.app_collaboration');

  	return answer;
  }

  function isScopeAdmin(appGr) {
  	var answer = false;
  	var enabledScopedAdministration = appGr.getValue('scoped_administration') == '1';

  	answer = ((!enabledScopedAdministration && gs.hasRole('admin')) || (enabledScopedAdministration && GlideSecurityManager.get().isScopeAdmin(appGr.getValue('sys_id'))));
  	return answer;
  }

  function checkAppIsNotPrivateAndGlobal(appGr) {
  	return appGr.getValue('private') != '1' && appGr.getValue('scope') !== 'global';
  }

  function isValidApp(appGr) {
  	var answer = !!appGr && appGr instanceof GlideRecord && appGr.instanceOf('sys_scope');
  	if (!answer)
  		gs.error("DelegatedDevUtil: Invalid application GlideRecord supplied");

  	return answer;
  }

})();

Sys ID

7a764366ebc320101f6ad6e8b552280e

Offical Documentation

Official Docs: