RM-563 (Add group id and title to Capability API and definitions)

* Changed the Role class so that the i18n properties don't have to be maintained on both sides (server and share)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@44244 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2012-12-03 11:41:28 +00:00
parent aaab4b2c9e
commit 583b4412a8
5 changed files with 359 additions and 361 deletions

View File

@@ -5,11 +5,11 @@
"name": "${role.name}", "name": "${role.name}",
"displayLabel": "${role.displayLabel}", "displayLabel": "${role.displayLabel}",
"capabilities": "capabilities":
[ {
<#list role.capabilities as capability> <#list role.capabilities?keys as capability>
"${capability}"<#if capability_has_next>,</#if> "${capability}": "${role.capabilities[capability]}" <#if capability_has_next>,</#if>
</#list> </#list>
] }
} }
</#escape> </#escape>
</#macro> </#macro>

View File

@@ -25,14 +25,13 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.module.org_alfresco_module_rm.security.RecordsManagementSecurityService; import org.alfresco.module.org_alfresco_module_rm.security.RecordsManagementSecurityService;
import org.alfresco.module.org_alfresco_module_rm.security.Role; import org.alfresco.module.org_alfresco_module_rm.security.Role;
import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.node.NodeServicePolicies;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
@@ -250,7 +249,7 @@ public class ModelSecurityServiceImpl implements ModelSecurityService,
Set<Role> roles = securityService.getRolesByUser(filePlan, AuthenticationUtil.getFullyAuthenticatedUser()); Set<Role> roles = securityService.getRolesByUser(filePlan, AuthenticationUtil.getFullyAuthenticatedUser());
for (Role role : roles) for (Role role : roles)
{ {
if (Collections.disjoint(role.getCapabilities(), artifact.getCapilityNames()) == false) if (Collections.disjoint(role.getCapabilities().keySet(), artifact.getCapilityNames()) == false)
{ {
result = true; result = true;
break; break;

View File

@@ -578,7 +578,7 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
{ {
String name = getShortRoleName(authorityService.getShortName(roleAuthority), rmRootNode); String name = getShortRoleName(authorityService.getShortName(roleAuthority), rmRootNode);
String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority); String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority);
Set<String> capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority); Map<String, String> capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority);
Role role = new Role(name, displayLabel, capabilities, roleAuthority); Role role = new Role(name, displayLabel, capabilities, roleAuthority);
result.add(role); result.add(role);
@@ -608,7 +608,7 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
{ {
String name = getShortRoleName(authorityService.getShortName(roleAuthority), rmRootNode); String name = getShortRoleName(authorityService.getShortName(roleAuthority), rmRootNode);
String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority); String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority);
Set<String> capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority); Map<String, String> capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority);
Role role = new Role(name, displayLabel, capabilities, roleAuthority); Role role = new Role(name, displayLabel, capabilities, roleAuthority);
result.add(role); result.add(role);
@@ -670,7 +670,7 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
{ {
String name = getShortRoleName(authorityService.getShortName(roleAuthority), rmRootNode); String name = getShortRoleName(authorityService.getShortName(roleAuthority), rmRootNode);
String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority); String displayLabel = authorityService.getAuthorityDisplayName(roleAuthority);
Set<String> capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority); Map<String, String> capabilities = getCapabilitiesImpl(rmRootNode, roleAuthority);
result = new Role(name, displayLabel, capabilities, roleAuthority); result = new Role(name, displayLabel, capabilities, roleAuthority);
} }
@@ -686,22 +686,21 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
* @param roleAuthority * @param roleAuthority
* @return * @return
*/ */
private Set<String> getCapabilitiesImpl(NodeRef rmRootNode, String roleAuthority) private Map<String, String> getCapabilitiesImpl(NodeRef rmRootNode, String roleAuthority)
{ {
Set<AccessPermission> permissions = permissionService.getAllSetPermissions(rmRootNode); Set<AccessPermission> permissions = permissionService.getAllSetPermissions(rmRootNode);
Set<String> capabilities = new HashSet<String>(52); Map<String, String> capabilities = new HashMap<String, String>(52);
for (AccessPermission permission : permissions) for (AccessPermission permission : permissions)
{ {
if (permission.getAuthority().equals(roleAuthority) == true) if (permission.getAuthority().equals(roleAuthority) == true)
{ {
String capabilityName = permission.getPermission(); String capabilityName = permission.getPermission();
if (capabilityService.getCapability(capabilityName) != null) Capability capability = capabilityService.getCapability(capabilityName);
if (capability != null)
{ {
capabilities.add(permission.getPermission()); capabilities.put(capabilityName, capability.getTitle());
} }
} }
} }
return capabilities; return capabilities;
@@ -778,7 +777,7 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
authorityService.addAuthority(allRoleGroup, roleGroup); authorityService.addAuthority(allRoleGroup, roleGroup);
// Assign the various capabilities to the group on the root records management node // Assign the various capabilities to the group on the root records management node
Set<String> capStrings = new HashSet<String>(53); Map<String, String> capStrings = new HashMap<String, String>(53);
if (capabilities != null) if (capabilities != null)
{ {
for (Capability capability : capabilities) for (Capability capability : capabilities)
@@ -789,7 +788,7 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
// Create the role // Create the role
for (Capability capability : capabilities) for (Capability capability : capabilities)
{ {
capStrings.add(capability.getName()); capStrings.put(capability.getName(), capability.getTitle());
} }
} }
@@ -823,10 +822,10 @@ public class RecordsManagementSecurityServiceImpl implements RecordsManagementSe
permissionService.setPermission(rmRootNode, roleAuthority, capability.getName(), true); permissionService.setPermission(rmRootNode, roleAuthority, capability.getName(), true);
} }
Set<String> capStrings = new HashSet<String>(capabilities.size()); Map<String, String> capStrings = new HashMap<String, String>(capabilities.size());
for (Capability capability : capabilities) for (Capability capability : capabilities)
{ {
capStrings.add(capability.getName()); capStrings.put(capability.getName(), capability.getTitle());
} }
return new Role(role, roleDisplayLabel, capStrings, roleAuthority); return new Role(role, roleDisplayLabel, capStrings, roleAuthority);

View File

@@ -18,7 +18,7 @@
*/ */
package org.alfresco.module.org_alfresco_module_rm.security; package org.alfresco.module.org_alfresco_module_rm.security;
import java.util.Set; import java.util.Map;
/** /**
* Records management role class * Records management role class
@@ -29,7 +29,7 @@ public class Role
{ {
private String name; private String name;
private String displayLabel; private String displayLabel;
private Set<String> capabilities; private Map<String, String> capabilities;
private String roleGroupName; private String roleGroupName;
/** /**
@@ -37,7 +37,7 @@ public class Role
* @param displayLabel * @param displayLabel
* @param capabilities * @param capabilities
*/ */
public Role(String name, String displayLabel, Set<String> capabilities, String roleGroupName) public Role(String name, String displayLabel, Map<String, String> capabilities, String roleGroupName)
{ {
this.name = name; this.name = name;
this.displayLabel = displayLabel; this.displayLabel = displayLabel;
@@ -64,7 +64,7 @@ public class Role
/** /**
* @return the capabilities * @return the capabilities
*/ */
public Set<String> getCapabilities() public Map<String, String> getCapabilities()
{ {
return capabilities; return capabilities;
} }

View File

@@ -200,8 +200,8 @@ public class DeclarativeCapabilityTest extends BaseRMTestCase
Role role = new ArrayList<Role>(roles).get(0); Role role = new ArrayList<Role>(roles).get(0);
assertNotNull(role); assertNotNull(role);
Set<String> roleCapabilities = role.getCapabilities(); Map<String, String> roleCapabilities = role.getCapabilities();
if (roleCapabilities.contains(capability.getName()) == true && conditionResult == true) if (roleCapabilities.containsKey(capability.getName()) == true && conditionResult == true)
{ {
assertEquals("User " + userName + " has the role " + role.getDisplayLabel() + assertEquals("User " + userName + " has the role " + role.getDisplayLabel() +
" so we expect access to be allowed for capability " + capability.getName() + " on the object " + " so we expect access to be allowed for capability " + capability.getName() + " on the object " +