Return-Path: Delivered-To: apmail-maven-archiva-commits-archive@locus.apache.org Received: (qmail 95318 invoked from network); 12 Sep 2006 22:31:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 12 Sep 2006 22:31:08 -0000 Received: (qmail 2273 invoked by uid 500); 12 Sep 2006 22:31:08 -0000 Delivered-To: apmail-maven-archiva-commits-archive@maven.apache.org Received: (qmail 2246 invoked by uid 500); 12 Sep 2006 22:31:08 -0000 Mailing-List: contact archiva-commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: archiva-dev@maven.apache.org Delivered-To: mailing list archiva-commits@maven.apache.org Received: (qmail 2237 invoked by uid 99); 12 Sep 2006 22:31:08 -0000 Received: from idunn.apache.osuosl.org (HELO idunn.apache.osuosl.org) (140.211.166.84) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 Sep 2006 15:31:08 -0700 Authentication-Results: idunn.apache.osuosl.org smtp.mail=jmcconnell@apache.org; spf=permerror X-ASF-Spam-Status: No, hits=-9.8 required=5.0 tests=ALL_TRUSTED,NO_REAL_NAME Received-SPF: error (idunn.apache.osuosl.org: domain apache.org from 140.211.166.113 cause and error) Received: from ([140.211.166.113:54461] helo=eris.apache.org) by idunn.apache.osuosl.org (ecelerity 2.1 r(10620)) with ESMTP id 78/81-05218-83537054 for ; Tue, 12 Sep 2006 15:31:20 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id C62E71A981A; Tue, 12 Sep 2006 15:31:03 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r442742 - in /maven/archiva/trunk/archiva-webapp/src/main: java/org/apache/maven/archiva/web/action/admin/ java/org/apache/maven/archiva/web/interceptor/ java/org/apache/maven/archiva/web/util/ resources/ resources/META-INF/plexus/ webapp/W... Date: Tue, 12 Sep 2006 22:31:03 -0000 To: archiva-commits@maven.apache.org From: jmcconnell@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20060912223103.C62E71A981A@eris.apache.org> X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: jmcconnell Date: Tue Sep 12 15:31:02 2006 New Revision: 442742 URL: http://svn.apache.org/viewvc?view=rev&rev=442742 Log: new setup wizard that forces the creation of an administrator user Added: maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/registerAdmin.jsp (with props) Modified: maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/NewUserAction.java maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/DefaultRoleManager.java maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/RoleManager.java maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/plexus-security.properties maven/archiva/trunk/archiva-webapp/src/main/resources/xwork.xml Modified: maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/NewUserAction.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/NewUserAction.java?view=diff&rev=442742&r1=442741&r2=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/NewUserAction.java (original) +++ maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/NewUserAction.java Tue Sep 12 15:31:02 2006 @@ -22,6 +22,7 @@ import org.codehaus.plexus.security.user.UserManager; import org.codehaus.plexus.security.user.policy.PasswordRuleViolationException; import org.codehaus.plexus.security.user.policy.PasswordRuleViolations; +import org.codehaus.plexus.security.rbac.RBACManager; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.xwork.action.PlexusActionSupport; @@ -51,6 +52,11 @@ */ private RoleManager roleManager; + /** + * @plexus.requirement + */ + private RBACManager rbacManager; + private String username; private String password; @@ -118,11 +124,82 @@ addActionError( (String) it.next() ); } } + roleManager.addUser( user.getPrincipal().toString() ); addActionMessage( "user " + username + " was successfully registered!"); } + if ( hasActionErrors() ) + { + return INPUT; + } + + return SUCCESS; + } + + public String createAdminUser() + { + if ( username == null ) + { + return INPUT; + } + + // TODO: use commons-validator for these fields. + + if ( StringUtils.isEmpty( username ) ) + { + addActionError( "User Name is required." ); + } + + if ( StringUtils.isEmpty( fullName ) ) + { + addActionError( "Full Name is required." ); + } + + if ( StringUtils.isEmpty( email ) ) + { + addActionError( "Email Address is required." ); + } + + // TODO: Validate Email Address (use commons-validator) + + if ( StringUtils.equals( password, passwordConfirm ) ) + { + addActionError( "Passwords do not match." ); + } + + UserManager um = securitySystem.getUserManager(); + + if ( um.userExists( username ) ) + { + addActionError( "User already exists!" ); + } + else + { + User user = um.createUser( username, fullName, email ); + + user.setPassword( password ); + + try + { + um.addUser( user ); + } + catch ( PasswordRuleViolationException e ) + { + PasswordRuleViolations violations = e.getViolations(); + List violationList = violations.getLocalizedViolations(); + Iterator it = violationList.iterator(); + while ( it.hasNext() ) + { + addActionError( (String) it.next() ); + } + } + + roleManager.addAdminUser( user.getPrincipal().toString() ); + + } + if ( hasActionErrors() ) { return INPUT; Modified: maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java?view=diff&rev=442742&r1=442741&r2=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java (original) +++ maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java Tue Sep 12 15:31:02 2006 @@ -22,6 +22,7 @@ import org.apache.maven.archiva.configuration.ConfigurationStore; import org.apache.maven.archiva.web.util.RoleManager; import org.codehaus.plexus.logging.AbstractLogEnabled; +import org.codehaus.plexus.security.rbac.RBACManager; /** * An interceptor that makes the application configuration available @@ -44,6 +45,11 @@ private RoleManager roleManager; /** + * @plexus.requirement + */ + private RBACManager rbacManager; + + /** * * @param actionInvocation * @return @@ -52,6 +58,13 @@ public String intercept( ActionInvocation actionInvocation ) throws Exception { + + if ( rbacManager.getAllUserAssignments().size() == 0 ) + { + getLogger().info( "no accounts setup, create user account, forwarding to registration" ); + return "admin-account-needed"; + } + Configuration configuration = configurationStore.getConfigurationFromStore(); if ( !configuration.isValid() ) Modified: maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/DefaultRoleManager.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/DefaultRoleManager.java?view=diff&rev=442742&r1=442741&r2=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/DefaultRoleManager.java (original) +++ maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/DefaultRoleManager.java Tue Sep 12 15:31:02 2006 @@ -253,6 +253,28 @@ } + /** + * helper method for just creating an admin user assignment + * + * @param principal + * @throws RbacStoreException + * @throws RbacObjectNotFoundException + */ + public void addAdminUser( String principal ) + throws RbacStoreException + { + try + { + UserAssignment assignment = manager.createUserAssignment( principal ); + assignment.addRole( manager.getRole( "System Administrator" ) ); + manager.saveUserAssignment( assignment ); + } + catch ( RbacObjectNotFoundException ne ) + { + throw new RbacStoreException( "unable to find administrator role, this of course is bad", ne ); + } + } + public void addRepository( String repositoryName ) throws RbacStoreException { Modified: maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/RoleManager.java URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/RoleManager.java?view=diff&rev=442742&r1=442741&r2=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/RoleManager.java (original) +++ maven/archiva/trunk/archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/RoleManager.java Tue Sep 12 15:31:02 2006 @@ -35,5 +35,8 @@ public void addUser( String principal ) throws RbacStoreException; + public void addAdminUser( String principal ) + throws RbacStoreException; + public boolean isInitialized(); } Modified: maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/plexus-security.properties URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/plexus-security.properties?view=diff&rev=442742&r1=442741&r2=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/plexus-security.properties (original) +++ maven/archiva/trunk/archiva-webapp/src/main/resources/META-INF/plexus/plexus-security.properties Tue Sep 12 15:31:02 2006 @@ -1,4 +1,8 @@ # +# properties that might be used in plexus-security initialization +# + +# # operations # addRepositoryOperation=add-repository Modified: maven/archiva/trunk/archiva-webapp/src/main/resources/xwork.xml URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/resources/xwork.xml?view=diff&rev=442742&r1=442741&r2=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/resources/xwork.xml (original) +++ maven/archiva/trunk/archiva-webapp/src/main/resources/xwork.xml Tue Sep 12 15:31:02 2006 @@ -46,6 +46,11 @@ /admin configure + + /admin + registerAdminAccount + input + /admin addRepository @@ -145,6 +150,13 @@ + + /WEB-INF/jsp/admin/registerAdmin.jsp + /WEB-INF/jsp/admin/registerAdmin.jsp + index + + + /WEB-INF/jsp/admin/index.jsp Added: maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/registerAdmin.jsp URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/registerAdmin.jsp?view=auto&rev=442742 ============================================================================== --- maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/registerAdmin.jsp (added) +++ maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/registerAdmin.jsp Tue Sep 12 15:31:02 2006 @@ -0,0 +1,99 @@ +<%-- + ~ Copyright 2005-2006 The Apache Software Foundation. + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --%> + +<%@ taglib prefix="ww" uri="/webwork" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + + + + Adminsitrator Registration Page + + + + + +
+ +
+ + +
+
+
+ + + + Propchange: maven/archiva/trunk/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/registerAdmin.jsp ------------------------------------------------------------------------------ svn:eol-style = native