Name

sn_hr_core.hr_TemplateOwnership

Description

Helps in determining who can edit templates

Script

var hr_TemplateOwnership = Class.create();
hr_TemplateOwnership.prototype = {
  initialize: function() {
  },
  
  canCreateTemplate: function() {
  	var roles = new hr_Utils();
  	// if a life cycle admin, can edit regardless of owning group
  	var isHrAdmin = roles.checkUserHasRole('sn_hr_core.admin');
  	if (isHrAdmin)
  		return true;
  	
  	var isActivityWriter = roles.checkUserHasRole('sn_hr_le.activity_writer');
  	return isActivityWriter;
  },
  
  canEditTemplate: function(template) {
  	var roles = new hr_Utils();
  	// if a life cycle admin, can edit regardless of owning group
  	var isHrAdmin = roles.checkUserHasRole('sn_hr_core.admin');
  	if (isHrAdmin)
  		return true;
  	
  	// if not an activity writer, then cannot edit, regardless of owning group
  	var isActivityWriter = roles.checkUserHasRole('sn_hr_le.activity_writer');
  	if (!isActivityWriter)
  		return false;
  	
  	// has activity writer, but must be in group too
  	if (template.owning_group) {
  		var grGroups = new GlideRecord('sys_user_grmember');
  		grGroups.addQuery('user', gs.getUserID());
  		grGroups.addQuery('group', template.getValue('owning_group'));
  		grGroups.query();
  		var isMemberOf = grGroups.next();
  		return isMemberOf;
  	} 
  	
  	return template.isNewRecord();
  },
  
  getAllowableGroups : function() {
  	var groups = [];
  	// if has role sn_hr_core.admin, return all active groups
  	// otherwise return groups that user is a direct member of
  	var roles = new hr_Utils();
  	var isHrAdmin = roles.checkUserHasRole('sn_hr_core.admin');
  	
  	if (isHrAdmin) 
  		return 'active=true';
  	
  	var grGroupMember = new GlideRecord('sys_user_grmember');
  	grGroupMember.addQuery('group.active', true);
  	grGroupMember.addQuery('user', gs.getUserID());
  	grGroupMember.query();
  	while (grGroupMember.next())
  		groups.push(grGroupMember.getValue('group'));
  	
  	return 'sys_idIN' + groups.join(',');
  },

  type: 'hr_TemplateOwnership'
};

Sys ID

4752335353a03200d901a7e6a11c08b6

Offical Documentation

Official Docs: