diff options
author | Jesse McConnell <jmcconnell@apache.org> | 2006-12-05 16:37:53 +0000 |
---|---|---|
committer | Jesse McConnell <jmcconnell@apache.org> | 2006-12-05 16:37:53 +0000 |
commit | fcdfd86088b2642deb5313a532b9e0f99aee0240 (patch) | |
tree | 24e1b77bbe9e24aa826d65e174b40ac26ca9cbd8 /archiva-security | |
parent | c39256f0035b7f3d729c40270a70758a5d3dbcd7 (diff) | |
download | archiva-fcdfd86088b2642deb5313a532b9e0f99aee0240.tar.gz archiva-fcdfd86088b2642deb5313a532b9e0f99aee0240.zip |
MRM-242 added a new base role for the repository managers to inherit
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@482705 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-security')
5 files changed, 66 insertions, 0 deletions
diff --git a/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java b/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java index 17e085878..1ab7f4be5 100644 --- a/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java +++ b/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java @@ -29,6 +29,8 @@ public class ArchivaRoleConstants public static final String GUEST_ROLE = "Guest"; + public static final String BASE_REPOSITORY_MANAGER = "Repository Manager Base"; + // dynamic role prefixes public static final String REPOSITORY_MANAGER_ROLE_PREFIX = "Repository Manager"; diff --git a/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleProfileManager.java b/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleProfileManager.java index 1eb72ffb9..2d3aec8af 100644 --- a/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleProfileManager.java +++ b/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleProfileManager.java @@ -32,6 +32,8 @@ public class ArchivaRoleProfileManager public void initialize() throws RoleProfileException { + getRole( "archiva-repository-manager-base" ); + mergeRoleProfiles( "system-administrator", "archiva-system-administrator" ); mergeRoleProfiles( "user-administrator", "archiva-user-administrator" ); mergeRoleProfiles( "guest", "archiva-guest" ); diff --git a/archiva-security/src/main/java/org/apache/maven/archiva/security/BaseRepositoryManagerRoleProfile.java b/archiva-security/src/main/java/org/apache/maven/archiva/security/BaseRepositoryManagerRoleProfile.java new file mode 100644 index 000000000..a165e9bbc --- /dev/null +++ b/archiva-security/src/main/java/org/apache/maven/archiva/security/BaseRepositoryManagerRoleProfile.java @@ -0,0 +1,42 @@ +package org.apache.maven.archiva.security; + +import org.codehaus.plexus.rbac.profile.AbstractRoleProfile; + +import java.util.ArrayList; +import java.util.List; + +/** + * @plexus.component role="org.codehaus.plexus.rbac.profile.RoleProfile" + * role-hint="archiva-repository-manager-base" + */ +public class BaseRepositoryManagerRoleProfile + extends AbstractRoleProfile +{ + /** + * Create the Role name for a Repository Manager, using the provided repository id. + * + */ + public String getRoleName( ) + { + return ArchivaRoleConstants.BASE_REPOSITORY_MANAGER; + } + + public List getOperations() + { + List operations = new ArrayList(); + + operations.add( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION ); + + return operations; + } + + public boolean isPermanent() + { + return true; + } + + public boolean isAssignable() + { + return false; + } +} diff --git a/archiva-security/src/main/java/org/apache/maven/archiva/security/RepositoryManagerDynamicRoleProfile.java b/archiva-security/src/main/java/org/apache/maven/archiva/security/RepositoryManagerDynamicRoleProfile.java index c94fbac30..c7c4b4b4f 100644 --- a/archiva-security/src/main/java/org/apache/maven/archiva/security/RepositoryManagerDynamicRoleProfile.java +++ b/archiva-security/src/main/java/org/apache/maven/archiva/security/RepositoryManagerDynamicRoleProfile.java @@ -52,6 +52,12 @@ public class RepositoryManagerDynamicRoleProfile return operations; } + + public List getChildRoles() + { + return Collections.singletonList( ArchivaRoleConstants.BASE_REPOSITORY_MANAGER ); + } + public List getDynamicChildRoles( String string ) { return Collections.singletonList( diff --git a/archiva-security/src/main/resources/META-INF/plexus/components.xml b/archiva-security/src/main/resources/META-INF/plexus/components.xml index 3f5190db0..5c34b87fe 100644 --- a/archiva-security/src/main/resources/META-INF/plexus/components.xml +++ b/archiva-security/src/main/resources/META-INF/plexus/components.xml @@ -81,6 +81,20 @@ </requirements> </component> <component> + <role>org.codehaus.plexus.rbac.profile.RoleProfile</role> + <role-hint>archiva-repository-manager-base</role-hint> + <implementation>org.apache.maven.archiva.security.BaseRepositoryManagerRoleProfile</implementation> + <requirements> + <requirement> + <role>org.codehaus.plexus.security.rbac.RBACManager</role> + </requirement> + <requirement> + <role>org.codehaus.plexus.PlexusContainer</role> + <field-name>container</field-name> + </requirement> + </requirements> + </component> + <component> <role>org.codehaus.plexus.rbac.profile.DynamicRoleProfile</role> <role-hint>archiva-repository-manager</role-hint> <implementation>org.apache.maven.archiva.security.RepositoryManagerDynamicRoleProfile</implementation> |