Modified: maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/UniqueVersionConstraintTest.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/UniqueVersionConstraintTest.java?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/UniqueVersionConstraintTest.java (original) +++ maven/archiva/trunk/archiva-database/src/test/java/org/apache/maven/archiva/database/constraints/UniqueVersionConstraintTest.java Tue Nov 6 10:26:04 2007 @@ -26,9 +26,9 @@ import org.apache.maven.archiva.database.SimpleConstraint; import org.apache.maven.archiva.model.ArchivaArtifact; +import java.util.ArrayList; import java.util.Arrays; import java.util.Date; -import java.util.Iterator; import java.util.List; /** @@ -42,87 +42,152 @@ { private ArtifactDAO artifactDao; - protected void setUp() + public void testConstraintGroupIdArtifactIdCommonsLang() throws Exception { - super.setUp(); + setupArtifacts(); - ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" ); - artifactDao = dao.getArtifactDAO(); + assertConstraint( new String[] { "2.0", "2.1" }, new UniqueVersionConstraint( "commons-lang", "commons-lang" ) ); + } + + public void testConstraintGroupIdArtifactIdInvalid() + throws Exception + { + setupArtifacts(); + + assertConstraint( new String[] {}, new UniqueVersionConstraint( "org.apache", "invalid" ) ); + assertConstraint( new String[] {}, new UniqueVersionConstraint( "org.apache.test", "invalid" ) ); + assertConstraint( new String[] {}, new UniqueVersionConstraint( "invalid", "test-two" ) ); + } + + public void testConstraintGroupIdArtifactIdMavenSharedTestTwo() + throws Exception + { + setupArtifacts(); + + assertConstraint( new String[] { "2.0", "2.1-SNAPSHOT", "2.1.1", "2.1-alpha-1" }, + new UniqueVersionConstraint( "org.apache.maven.shared", "test-two" ) ); + } + + public void testConstraintGroupIdArtifactIdMavenSharedTestTwoCentralOnly() + throws Exception + { + setupArtifacts(); + + List<String> observableRepositories = new ArrayList<String>(); + observableRepositories.add( "central" ); + + assertConstraint( new String[] { "2.0", "2.1.1", "2.1-alpha-1" }, + new UniqueVersionConstraint( observableRepositories, "org.apache.maven.shared", "test-two" ) ); + } + + public void testConstraintGroupIdArtifactIdMavenSharedTestTwoSnapshotsOnly() + throws Exception + { + setupArtifacts(); + + List<String> observableRepositories = new ArrayList<String>(); + observableRepositories.add( "snapshots" ); + + assertConstraint( new String[] { "2.1-SNAPSHOT" }, + new UniqueVersionConstraint( observableRepositories, "org.apache.maven.shared", "test-two" ) ); + } + + public void testConstraintGroupIdArtifactIdMavenTestOne() + throws Exception + { + setupArtifacts(); + + assertConstraint( new String[] { "1.2" }, new UniqueVersionConstraint( "org.apache.maven.test", "test-one" ) ); } - public ArchivaArtifact createArtifact( String groupId, String artifactId, String version ) + public void testConstraintGroupIdArtifactIdModelloLong() + throws Exception + { + setupArtifacts(); + + assertConstraint( new String[] { "3.0" }, new UniqueVersionConstraint( "org.codehaus.modello", "modellong" ) ); + } + + private void assertConstraint( String[] versions, SimpleConstraint constraint ) + { + String prefix = "Unique Versions: "; + + List<String> results = dao.query( constraint ); + assertNotNull( prefix + "Not Null", results ); + assertEquals( prefix + "Results.size", versions.length, results.size() ); + + List<String> expectedVersions = Arrays.asList( versions ); + + for ( String actualVersion : results ) + { + assertTrue( prefix + "version result should not be blank.", StringUtils.isNotBlank( actualVersion ) ); + assertTrue( prefix + "version result <" + actualVersion + "> exists in expected versions.", + expectedVersions.contains( actualVersion ) ); + } + } + + private ArchivaArtifact createArtifact( String repoId, String groupId, String artifactId, String version ) { ArchivaArtifact artifact = artifactDao.createArtifact( groupId, artifactId, version, "", "jar" ); artifact.getModel().setLastModified( new Date() ); // mandatory field. - artifact.getModel().setRepositoryId( "testable_repo" ); + artifact.getModel().setRepositoryId( repoId ); return artifact; } - public void testConstraint() + private void setupArtifacts() throws Exception { ArchivaArtifact artifact; // Setup artifacts in fresh DB. - artifact = createArtifact( "commons-lang", "commons-lang", "2.0" ); + artifact = createArtifact( "central", "commons-lang", "commons-lang", "2.0" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "commons-lang", "commons-lang", "2.1" ); + artifact = createArtifact( "central", "commons-lang", "commons-lang", "2.1" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.test", "test-one", "1.2" ); + artifact = createArtifact( "central", "org.apache.maven.test", "test-one", "1.2" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.test.foo", "test-two", "1.0" ); + artifact = createArtifact( "central", "org.apache.maven.test.foo", "test-two", "1.0" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.0" ); + artifact = createArtifact( "central", "org.apache.maven.shared", "test-two", "2.0" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1-SNAPSHOT" ); + artifact = createArtifact( "central", "org.apache.maven.shared", "test-two", "2.1.1" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1.1" ); + artifact = createArtifact( "central", "org.apache.maven.shared", "test-two", "2.1-alpha-1" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.shared", "test-two", "2.1-alpha-1" ); + artifact = createArtifact( "central", "org.apache.maven.shared", "test-bar", "2.1" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.apache.maven.shared", "test-bar", "2.1" ); + artifact = createArtifact( "central", "org.codehaus.modello", "modellong", "3.0" ); artifactDao.saveArtifact( artifact ); - artifact = createArtifact( "org.codehaus.modello", "modellong", "3.0" ); + // Snapshots repository artifacts + artifact = createArtifact( "snapshots", "org.apache.maven.shared", "test-two", "2.1-SNAPSHOT" ); artifactDao.saveArtifact( artifact ); - assertConstraint( new String[] {}, new UniqueVersionConstraint( "org.apache", "invalid" ) ); - assertConstraint( new String[] {}, new UniqueVersionConstraint( "org.apache.test", "invalid" ) ); - assertConstraint( new String[] {}, new UniqueVersionConstraint( "invalid", "test-two" ) ); + artifact = createArtifact( "snapshots", "org.codehaus.modello", "test-three", "1.0-SNAPSHOT" ); + artifactDao.saveArtifact( artifact ); - assertConstraint( new String[] { "2.0", "2.1" }, new UniqueVersionConstraint( "commons-lang", "commons-lang" ) ); - assertConstraint( new String[] { "1.2" }, new UniqueVersionConstraint( "org.apache.maven.test", "test-one" ) ); - assertConstraint( new String[] { "2.0", "2.1-SNAPSHOT", "2.1.1", "2.1-alpha-1" }, - new UniqueVersionConstraint( "org.apache.maven.shared", "test-two" ) ); - assertConstraint( new String[] { "3.0" }, new UniqueVersionConstraint( "org.codehaus.modello", "modellong" ) ); + artifact = createArtifact( "snapshots", "org.codehaus.mojo", "testable-maven-plugin", "2.1-SNAPSHOT" ); + artifactDao.saveArtifact( artifact ); + + artifact = createArtifact( "snapshots", "org.apache.archiva", "testable", "1.1-alpha-1-20070822.033400-43" ); + artifactDao.saveArtifact( artifact ); } - private void assertConstraint( String[] versions, SimpleConstraint constraint ) + protected void setUp() + throws Exception { - String prefix = "Unique Versions: "; - - List results = dao.query( constraint ); - assertNotNull( prefix + "Not Null", results ); - assertEquals( prefix + "Results.size", versions.length, results.size() ); - - List expectedVersions = Arrays.asList( versions ); + super.setUp(); - Iterator it = results.iterator(); - while ( it.hasNext() ) - { - String actualVersion = (String) it.next(); - assertTrue( prefix + "version result should not be blank.", StringUtils.isNotBlank( actualVersion ) ); - assertTrue( prefix + "version result <" + actualVersion + "> exists in expected versions.", - expectedVersions.contains( actualVersion ) ); - } + ArchivaDAO dao = (ArchivaDAO) lookup( ArchivaDAO.ROLE, "jdo" ); + artifactDao = dao.getArtifactDAO(); } }
Modified: maven/archiva/trunk/archiva-web/archiva-security/pom.xml URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-security/pom.xml?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-security/pom.xml (original) +++ maven/archiva/trunk/archiva-web/archiva-security/pom.xml Tue Nov 6 10:26:04 2007 @@ -29,22 +29,40 @@ <name>Archiva Web :: Security Configuration</name> <dependencies> <dependency> + <groupId>org.apache.maven.archiva</groupId> + <artifactId>archiva-configuration</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-system</artifactId> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-rbac-model</artifactId> + </dependency> + <dependency> <groupId>org.codehaus.plexus.redback</groupId> <artifactId>redback-rbac-role-manager</artifactId> </dependency> + <!-- Test Scoped --> <dependency> <groupId>org.codehaus.plexus.redback</groupId> - <artifactId>redback-rbac-memory</artifactId> + <artifactId>redback-authorization-rbac</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.codehaus.plexus.redback</groupId> - <artifactId>redback-xwork-integration</artifactId> + <artifactId>redback-keys-memory</artifactId> <scope>test</scope> </dependency> <dependency> - <groupId>org.apache.derby</groupId> - <artifactId>derby</artifactId> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-users-memory</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-rbac-memory</artifactId> <scope>test</scope> </dependency> </dependencies> Modified: maven/archiva/trunk/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java (original) +++ maven/archiva/trunk/archiva-web/archiva-security/src/main/java/org/apache/maven/archiva/security/ArchivaRoleConstants.java Tue Nov 6 10:26:04 2007 @@ -35,6 +35,10 @@ public static final String REGISTERED_USER_ROLE = "Registered User"; public static final String GUEST_ROLE = "Guest"; + + // principals + + public static final String PRINCIPAL_GUEST = "guest"; // dynamic role prefixes public static final String REPOSITORY_MANAGER_ROLE_PREFIX = "Repository Manager"; @@ -68,4 +72,15 @@ public static final String TEMPLATE_REPOSITORY_MANAGER = "archiva-repository-manager"; public static final String TEMPLATE_REPOSITORY_OBSERVER = "archiva-repository-observer"; + + public static final String TEMPLATE_GLOBAL_REPOSITORY_OBSERVER = "archiva-global-repository-observer"; + + public static final String TEMPLATE_SYSTEM_ADMIN = "archiva-system-administrator"; + + public static final String TEMPLATE_GUEST = "archiva-guest"; + + public static String toRepositoryObserverRoleName( String repoId ) + { + return REPOSITORY_OBSERVER_ROLE_PREFIX + " - " + repoId; + } } Modified: maven/archiva/trunk/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml (original) +++ maven/archiva/trunk/archiva-web/archiva-security/src/test/resources/org/apache/maven/archiva/security/RoleManagerTest.xml Tue Nov 6 10:26:04 2007 @@ -34,7 +34,7 @@ </requirement> </requirements> </component> - <component> + <component> <role>org.codehaus.plexus.redback.role.processor.RoleModelProcessor</role> <role-hint>default</role-hint> <implementation>org.codehaus.plexus.redback.role.processor.DefaultRoleModelProcessor</implementation> @@ -47,6 +47,7 @@ </requirement> </requirements> </component> + <component> <role>org.codehaus.plexus.redback.role.template.RoleTemplateProcessor</role> <role-hint>default</role-hint> @@ -60,5 +61,45 @@ </requirement> </requirements> </component> + <component> + <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role> + <role-hint>required-roles</role-hint> + <implementation>org.apache.maven.archiva.security.ArchivaStandardRolesCheck</implementation> + <description>ArchivaStandardRolesCheck tests for the existance of expected / standard roles and permissions.</description> + <requirements> + <requirement> + <role>org.codehaus.plexus.redback.rbac.RBACManager</role> + <role-hint>memory</role-hint> + <field-name>rbacManager</field-name> + </requirement> + </requirements> + </component> + + <component> + <role>org.apache.maven.archiva.security.SecurityStartup</role> + <implementation>org.apache.maven.archiva.security.SecurityStartup</implementation> + <description>SecurityStartup</description> + <requirements> + <requirement> + <role>org.codehaus.plexus.redback.role.RoleManager</role> + <role-hint>default</role-hint> + <field-name>roleManager</field-name> + </requirement> + <requirement> + <role>org.codehaus.plexus.redback.rbac.RBACManager</role> + <role-hint>memory</role-hint> + <field-name>rbacManager</field-name> + </requirement> + <requirement> + <role>org.codehaus.plexus.redback.system.check.EnvironmentCheck</role> + <field-name>checkers</field-name> + </requirement> + <requirement> + <role>org.apache.maven.archiva.configuration.ArchivaConfiguration</role> + <field-name>archivaConfiguration</field-name> + </requirement> + </requirements> + </component> + </components> </component-set> Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java (original) +++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/BrowseAction.java Tue Nov 6 10:26:04 2007 @@ -19,11 +19,20 @@ * under the License. */ +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.maven.archiva.database.browsing.BrowsingResults; import org.apache.maven.archiva.database.browsing.RepositoryBrowsing; +import org.apache.maven.archiva.security.AccessDeniedException; +import org.apache.maven.archiva.security.ArchivaSecurityException; +import org.apache.maven.archiva.security.ArchivaUser; +import org.apache.maven.archiva.security.PrincipalNotFoundException; +import org.apache.maven.archiva.security.UserRepositories; import org.codehaus.plexus.xwork.action.PlexusActionSupport; +import java.util.Collections; +import java.util.List; + /** * Browse the repository. * @@ -39,6 +48,16 @@ * @plexus.requirement role-hint="default" */ private RepositoryBrowsing repoBrowsing; + + /** + * @plexus.requirement + */ + private UserRepositories userRepositories; + + /** + * @plexus.requirement role-hint="xwork" + */ + private ArchivaUser archivaUser; private BrowsingResults results; @@ -48,7 +67,13 @@ public String browse() { - this.results = repoBrowsing.getRoot(); + List<String> selectedRepos = getObservableRepos(); + if ( CollectionUtils.isEmpty( selectedRepos ) ) + { + return GlobalResults.ACCESS_TO_NO_REPOS; + } + + this.results = repoBrowsing.getRoot( getPrincipal(), selectedRepos ); return SUCCESS; } @@ -61,7 +86,14 @@ return ERROR; } - this.results = repoBrowsing.selectGroupId( groupId ); + List<String> selectedRepos = getObservableRepos(); + if ( CollectionUtils.isEmpty( selectedRepos ) ) + { + return GlobalResults.ACCESS_TO_NO_REPOS; + } + + + this.results = repoBrowsing.selectGroupId( getPrincipal(), selectedRepos, groupId ); return SUCCESS; } @@ -81,8 +113,42 @@ return ERROR; } - this.results = repoBrowsing.selectArtifactId( groupId, artifactId ); + List<String> selectedRepos = getObservableRepos(); + if ( CollectionUtils.isEmpty( selectedRepos ) ) + { + return GlobalResults.ACCESS_TO_NO_REPOS; + } + + + this.results = repoBrowsing.selectArtifactId( getPrincipal(), selectedRepos, groupId, artifactId ); return SUCCESS; + } + + private String getPrincipal() + { + return archivaUser.getActivePrincipal(); + } + + private List<String> getObservableRepos() + { + try + { + return userRepositories.getObservableRepositoryIds( getPrincipal() ); + } + catch ( PrincipalNotFoundException e ) + { + getLogger().warn( e.getMessage(), e ); + } + catch ( AccessDeniedException e ) + { + getLogger().warn( e.getMessage(), e ); + // TODO: pass this onto the screen. + } + catch ( ArchivaSecurityException e ) + { + getLogger().warn( e.getMessage(), e ); + } + return Collections.emptyList(); } public String getGroupId() Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java (original) +++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/SearchAction.java Tue Nov 6 10:26:04 2007 @@ -19,6 +19,7 @@ * under the License. */ +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.maven.archiva.database.ArchivaDAO; import org.apache.maven.archiva.database.Constraint; @@ -28,9 +29,15 @@ import org.apache.maven.archiva.indexer.search.CrossRepositorySearch; import org.apache.maven.archiva.indexer.search.SearchResultLimits; import org.apache.maven.archiva.indexer.search.SearchResults; +import org.apache.maven.archiva.security.AccessDeniedException; +import org.apache.maven.archiva.security.ArchivaSecurityException; +import org.apache.maven.archiva.security.ArchivaUser; +import org.apache.maven.archiva.security.PrincipalNotFoundException; +import org.apache.maven.archiva.security.UserRepositories; import org.codehaus.plexus.xwork.action.PlexusActionSupport; import java.net.MalformedURLException; +import java.util.Collections; import java.util.List; /** @@ -60,6 +67,16 @@ * @plexus.requirement role-hint="default" */ private CrossRepositorySearch crossRepoSearch; + + /** + * @plexus.requirement + */ + private UserRepositories userRepositories; + + /** + * @plexus.requirement role-hint="xwork" + */ + private ArchivaUser archivaUser; private static final String RESULTS = "results"; @@ -79,8 +96,14 @@ assert q != null && q.length() != 0; SearchResultLimits limits = new SearchResultLimits( 0 ); + + List<String> selectedRepos = getObservableRepos(); + if ( CollectionUtils.isEmpty( selectedRepos ) ) + { + return GlobalResults.ACCESS_TO_NO_REPOS; + } - results = crossRepoSearch.searchForTerm( q, limits ); + results = crossRepoSearch.searchForTerm( getPrincipal(), selectedRepos, q, limits ); if ( results.isEmpty() ) { @@ -125,15 +148,41 @@ // 1 hit? return it's information directly! return ARTIFACT; } - else - { - return RESULTS; - } + + return RESULTS; } + @Override public String doInput() { return INPUT; + } + + private String getPrincipal() + { + return archivaUser.getActivePrincipal(); + } + + private List<String> getObservableRepos() + { + try + { + return userRepositories.getObservableRepositoryIds( getPrincipal() ); + } + catch ( PrincipalNotFoundException e ) + { + getLogger().warn( e.getMessage(), e ); + } + catch ( AccessDeniedException e ) + { + getLogger().warn( e.getMessage(), e ); + // TODO: pass this onto the screen. + } + catch ( ArchivaSecurityException e ) + { + getLogger().warn( e.getMessage(), e ); + } + return Collections.emptyList(); } public String getQ() Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java (original) +++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/ShowArtifactAction.java Tue Nov 6 10:26:04 2007 @@ -26,8 +26,14 @@ import org.apache.maven.archiva.database.ObjectNotFoundException; import org.apache.maven.archiva.database.browsing.RepositoryBrowsing; import org.apache.maven.archiva.model.ArchivaProjectModel; +import org.apache.maven.archiva.security.AccessDeniedException; +import org.apache.maven.archiva.security.ArchivaSecurityException; +import org.apache.maven.archiva.security.ArchivaUser; +import org.apache.maven.archiva.security.PrincipalNotFoundException; +import org.apache.maven.archiva.security.UserRepositories; import org.codehaus.plexus.xwork.action.PlexusActionSupport; +import java.util.Collections; import java.util.List; /** @@ -46,6 +52,16 @@ * @plexus.requirement role-hint="default" */ private RepositoryBrowsing repoBrowsing; + + /** + * @plexus.requirement + */ + private UserRepositories userRepositories; + + /** + * @plexus.requirement role-hint="xwork" + */ + private ArchivaUser archivaUser; /* .\ Input Parameters \.________________________________________ */ @@ -86,7 +102,7 @@ { try { - this.model = repoBrowsing.selectVersion( groupId, artifactId, version ); + this.model = repoBrowsing.selectVersion( getPrincipal(), getObservableRepos(), groupId, artifactId, version ); } catch ( ObjectNotFoundException oe ) { @@ -104,7 +120,7 @@ public String dependencies() throws ObjectNotFoundException, ArchivaDatabaseException { - this.model = repoBrowsing.selectVersion( groupId, artifactId, version ); + this.model = repoBrowsing.selectVersion( getPrincipal(), getObservableRepos(), groupId, artifactId, version ); this.dependencies = model.getDependencies(); @@ -117,7 +133,7 @@ public String mailingLists() throws ObjectNotFoundException, ArchivaDatabaseException { - this.model = repoBrowsing.selectVersion( groupId, artifactId, version ); + this.model = repoBrowsing.selectVersion( getPrincipal(), getObservableRepos(), groupId, artifactId, version ); this.mailingLists = model.getMailingLists(); return SUCCESS; @@ -142,9 +158,9 @@ public String dependees() throws ObjectNotFoundException, ArchivaDatabaseException { - this.model = repoBrowsing.selectVersion( groupId, artifactId, version ); + this.model = repoBrowsing.selectVersion( getPrincipal(), getObservableRepos(), groupId, artifactId, version ); - this.dependees = repoBrowsing.getUsedBy( groupId, artifactId, version ); + this.dependees = repoBrowsing.getUsedBy( getPrincipal(), getObservableRepos(), groupId, artifactId, version ); return SUCCESS; } @@ -155,9 +171,36 @@ public String dependencyTree() throws ObjectNotFoundException, ArchivaDatabaseException { - this.model = repoBrowsing.selectVersion( groupId, artifactId, version ); + this.model = repoBrowsing.selectVersion( getPrincipal(), getObservableRepos(), groupId, artifactId, version ); return SUCCESS; + } + + private String getPrincipal() + { + return archivaUser.getActivePrincipal(); + } + + private List<String> getObservableRepos() + { + try + { + return userRepositories.getObservableRepositoryIds( getPrincipal() ); + } + catch ( PrincipalNotFoundException e ) + { + getLogger().warn( e.getMessage(), e ); + } + catch ( AccessDeniedException e ) + { + getLogger().warn( e.getMessage(), e ); + // TODO: pass this onto the screen. + } + catch ( ArchivaSecurityException e ) + { + getLogger().warn( e.getMessage(), e ); + } + return Collections.emptyList(); } public void validate() Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java (original) +++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/SecuritySynchronization.java Tue Nov 6 10:26:04 2007 @@ -193,14 +193,13 @@ ua = rbacManager.createUserAssignment( principal ); } - ua.addRoleName( ArchivaRoleConstants.REPOSITORY_OBSERVER_ROLE_PREFIX + " - " + repoId ); + ua.addRoleName( ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) ); rbacManager.saveUserAssignment( ua ); } catch ( RbacManagerException e ) { - getLogger().warn( - "Unable to add role [" + ArchivaRoleConstants.REPOSITORY_OBSERVER_ROLE_PREFIX + " - " - + repoId + "] to " + principal + " user.", e ); + getLogger().warn( "Unable to add role [" + ArchivaRoleConstants.toRepositoryObserverRoleName( repoId ) + + "] to " + principal + " user.", e ); } } } Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml (original) +++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml Tue Nov 6 10:26:04 2007 @@ -82,6 +82,7 @@ <global-results> <!-- The following security-* result names arrive from the plexus-security package --> + <result name="security-login-success" type="redirect-action">index</result> <result name="security-login-cancel" type="redirect-action">index</result> <result name="security-login-locked" type="redirect-action"> @@ -126,6 +127,7 @@ <!-- Generic Catchall for those action configurations that forget to include a result for 'error' --> <result name="error">/WEB-INF/jsp/generalError.jsp</result> + <result name="access_to_no_repos">/WEB-INF/jsp/accessToNoRepos.jsp</result> </global-results> </package> Modified: maven/archiva/trunk/pom.xml URL: http://svn.apache.org/viewvc/maven/archiva/trunk/pom.xml?rev=592513&r1=592512&r2=592513&view=diff ============================================================================== --- maven/archiva/trunk/pom.xml (original) +++ maven/archiva/trunk/pom.xml Tue Nov 6 10:26:04 2007 @@ -579,6 +579,29 @@ <groupId>org.codehaus.plexus.redback</groupId> <artifactId>redback-rbac-memory</artifactId> <version>${redback.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-users-memory</artifactId> + <version>${redback.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-keys-memory</artifactId> + <version>${redback.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-rbac-model</artifactId> + <version>${redback.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-authorization-rbac</artifactId> + <version>${redback.version}</version> </dependency> <dependency> <groupId>org.codehaus.plexus.redback</groupId> @@ -587,6 +610,11 @@ </dependency> <dependency> <groupId>org.codehaus.plexus.redback</groupId> + <artifactId>redback-system</artifactId> + <version>${redback.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.plexus.redback</groupId> <artifactId>redback-taglib</artifactId> <version>${redback.version}</version> </dependency> @@ -862,13 +890,16 @@ <properties> <maven.version>2.0.5</maven.version> <wagon.version>1.0-beta-2</wagon.version> - <redback.version>1.0-alpha-3</redback.version> + <redback.version>1.0-alpha-4</redback.version> </properties> <!-- for plexus webdav snapshot --> <repositories> <repository> <id>codehaus.snapshots</id> <url>http://snapshots.repository.codehaus.org/</url> + <snapshots> + <enabled>true</enabled> + </snapshots> </repository> </repositories> </project>
