(→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> |