Version Differences for Miscellaneous Scripts

(AHPSCRIPTS-116)
(AHPSCRIPTS-117)
Line 2498:
  }     }  
  return output;</pre>    return output;</pre> 
       
    + = Replicate Permissions of One Role to Another =  
    + ==== AHPSCRIPTS-133 ====  
    + <pre>import com.urbancode.anthill3.domain.security.Permission;  
    + import com.urbancode.anthill3.domain.security.PermissionFactory;  
    + import com.urbancode.anthill3.domain.security.Resource;  
    + import com.urbancode.anthill3.domain.security.ResourceType;  
    + import com.urbancode.anthill3.domain.security.ResourceTypeFactory;  
    + import com.urbancode.anthill3.domain.security.Role;  
    + import com.urbancode.anthill3.domain.security.RoleFactory;  
    + import com.urbancode.anthill3.persistence.UnitOfWork;  
    + import java.util.*;  
       
    + /*  
    + Beanshell script to be run in a Evaluate Script Step.  
    + This script will repliact permission from one role to another.  
    + - Adjust the role names for your use before running.  
    + - Adjust the resource types at the bottom to control the types of permissions replicate.  
    + */  
    +  
    + addPermissionToMap(HashMap map, Permission permission) {  
    + resource = permission.getResource();  
    + actions = map.get(resource);  
    + if (actions == null) {  
    + actions = new HashSet();  
    + map.put(resource, actions);  
    + }  
    + actions.add(permission.getAction());  
    + }  
       
    + copyResourceTypePermissions(Role source, Role dest, long resourceTypeId) {  
    + resourceType = ResourceTypeFactory.getInstance().restore(resourceTypeId);  
    +  
    + permissions = PermissionFactory.getInstance().restoreAllForResourceType(resourceType);  
    +  
    + sourceMap = new HashMap();  
    + destMap = new HashMap();  
    +  
    + for (Permission permission : permissions) {  
    + if (source.equals(permission.getRole())) {  
    + addPermissionToMap(sourceMap, permission);  
    + }  
    + else if (dest.equals(permission.getRole())) {  
    + addPermissionToMap(destMap, permission);  
    + }  
    + }  
    +  
    + for (Resource resource : sourceMap.keySet()) {  
    + sourceActions = sourceMap.get(resource);  
    + destActions = destMap.get(resource);  
    +  
    + if (destActions != null) {  
    + sourceActions.removeAll(destActions);  
    + }  
    +  
    + for (String action : sourceActions) {  
    + // create the permission  
    + commandOutput.println("Adding " + action + " to " + resource);  
    + Permission permission = new Permission(resource, action, dest);  
    + permission.store();  
    + }  
    + }  
    + }  
       
    + source = RoleFactory.getInstance().restoreForName("Source");  
    + dest = RoleFactory.getInstance().restoreForName("Destination");  
       
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_PROJECT);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_ENVIRONMENT);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_WORKFLOW);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_CODESTATON);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_REPOSITORY);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_FOLDER);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_LIBRARY_WORKFLOW);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_LIBRARY_JOB);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_AGENT);  
    + copyResourceTypePermissions(source, dest, ResourceType.TYPE_ENV_GROUP);  
       
    + UnitOfWork.getCurrent().commit();</pre>