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