You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2006/09/05 20:50:58 UTC
svn commit: r440434 - in /maven/shared/trunk/maven-user:
maven-user-controller/src/main/java/org/apache/maven/user/controller/action/
maven-user-model/src/main/java/org/apache/maven/user/model/impl/
maven-user-model/src/main/java/org/apache/maven/user/...
Author: carlos
Date: Tue Sep 5 11:50:57 2006
New Revision: 440434
URL: http://svn.apache.org/viewvc?view=rev&rev=440434
Log:
Add password rule handling
Modified:
maven/shared/trunk/maven-user/maven-user-controller/src/main/java/org/apache/maven/user/controller/action/EditUserAction.java
maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserSecurityPolicy.java
maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/rules/NumericalPasswordRule.java
maven/shared/trunk/maven-user/maven-user-model/src/main/resources/org/apache/maven/user/model/messages.properties
maven/shared/trunk/maven-user/maven-user-model/src/test/java/org/apache/maven/user/model/impl/DefaultUserManagerTest.java
maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/user/edit.jsp
Modified: maven/shared/trunk/maven-user/maven-user-controller/src/main/java/org/apache/maven/user/controller/action/EditUserAction.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-controller/src/main/java/org/apache/maven/user/controller/action/EditUserAction.java?view=diff&rev=440434&r1=440433&r2=440434
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-controller/src/main/java/org/apache/maven/user/controller/action/EditUserAction.java (original)
+++ maven/shared/trunk/maven-user/maven-user-controller/src/main/java/org/apache/maven/user/controller/action/EditUserAction.java Tue Sep 5 11:50:57 2006
@@ -21,6 +21,8 @@
import javax.servlet.http.HttpServletRequest;
+import org.apache.maven.user.model.PasswordRuleViolationException;
+import org.apache.maven.user.model.PasswordRuleViolations;
import org.apache.maven.user.model.Permission;
import org.apache.maven.user.model.User;
import org.apache.maven.user.model.UserGroup;
@@ -36,6 +38,7 @@
* @plexus.component
* role="com.opensymphony.xwork.Action"
* role-hint="editUser"
+ * instantiation-strategy="per-lookup"
*/
public class EditUserAction
extends PlexusActionSupport
@@ -102,7 +105,19 @@
user.setPassword( password );
user.setEmail( email );
user.setGroup( userGroup );
- userManager.addUser( user );
+ try
+ {
+ userManager.addUser( user );
+ }
+ catch ( PasswordRuleViolationException e )
+ {
+ PasswordRuleViolations violationsContainer = e.getViolations();
+ if( violationsContainer != null && violationsContainer.hasViolations() )
+ {
+ setActionErrors( violationsContainer.getLocalizedViolations() );
+ return INPUT;
+ }
+ }
}
else
{
@@ -111,7 +126,19 @@
user.setPassword( password );
user.setEmail( email );
user.getGroup().setPermissions( permissions );
- userManager.updateUser( user );
+ try
+ {
+ userManager.updateUser( user );
+ }
+ catch ( PasswordRuleViolationException e )
+ {
+ PasswordRuleViolations violationsContainer = e.getViolations();
+ if( violationsContainer != null && violationsContainer.hasViolations() )
+ {
+ setActionErrors( violationsContainer.getLocalizedViolations() );
+ return INPUT;
+ }
+ }
}
request.getSession().removeAttribute( "addMode" );
Modified: maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserSecurityPolicy.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserSecurityPolicy.java?view=diff&rev=440434&r1=440433&r2=440434
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserSecurityPolicy.java (original)
+++ maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/impl/DefaultUserSecurityPolicy.java Tue Sep 5 11:50:57 2006
@@ -55,6 +55,8 @@
/**
* The List of {@link PasswordRule} objects.
+ *
+ * @plexus.requirement role="org.apache.maven.user.model.rules.MustHavePasswordRule"
*/
private List rules;
@@ -149,9 +151,18 @@
public void initialize()
throws InitializationException
{
- rules = new ArrayList();
-
- // TODO: Find way to have plexus initialize this list with only 1 item.
- addPasswordRule( new MustHavePasswordRule() );
+ if( rules != null )
+ {
+ Iterator it = rules.iterator();
+ while ( it.hasNext() )
+ {
+ PasswordRule rule = (PasswordRule) it.next();
+ rule.setUserSecurityPolicy( this );
+ }
+ }
+ else{
+ rules = new ArrayList();
+ addPasswordRule( new MustHavePasswordRule() );
+ }
}
}
Modified: maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/rules/NumericalPasswordRule.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/rules/NumericalPasswordRule.java?view=diff&rev=440434&r1=440433&r2=440434
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/rules/NumericalPasswordRule.java (original)
+++ maven/shared/trunk/maven-user/maven-user-model/src/main/java/org/apache/maven/user/model/rules/NumericalPasswordRule.java Tue Sep 5 11:50:57 2006
@@ -95,7 +95,7 @@
{
if ( countDigitCharacters( user.getPassword() ) < this.minimumCount )
{
- violations.addViolation( "user.password.violation.digit", new Object[] { new Integer( minimumCount ) } ); //$NON-NLS-1$
+ violations.addViolation( "user.password.violation.numeric", new Object[] { new Integer( minimumCount ) } ); //$NON-NLS-1$
}
}
}
Modified: maven/shared/trunk/maven-user/maven-user-model/src/main/resources/org/apache/maven/user/model/messages.properties
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-model/src/main/resources/org/apache/maven/user/model/messages.properties?view=diff&rev=440434&r1=440433&r2=440434
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-model/src/main/resources/org/apache/maven/user/model/messages.properties (original)
+++ maven/shared/trunk/maven-user/maven-user-model/src/main/resources/org/apache/maven/user/model/messages.properties Tue Sep 5 11:50:57 2006
@@ -2,11 +2,11 @@
user.manager.cannot.add.user.without.password=User.password must be supplied on an .addUser() request.
user.manager.cannot.add.group.with.id=UserGroup.id cannot be supplied on an .addUserGroup() request.
user.manager.cannot.add.permission.with.id=Permission.id cannot be supplied on an .addPermission() request.
-password.encoder.no.such.algoritm=The specified algorithm {1} is not available in the JAAS Implementation of this JVM.
+password.encoder.no.such.algoritm=The specified algorithm {0} is not available in the JAAS Implementation of this JVM.
password.encoder.unsupported.encoding=The UTF-8 Encoding is not available in the JAAS Implementation of this JVM.
user.password.violation.missing=You must provide a password.
-user.password.violation.length=You must provide a password between {1} and {2} characters in length.
-user.password.violation.length.misconfigured=Password Length Rule is misconfigured. Specified minimum of ({1}) is larger than specified maximum of ({2}). Rule disabled.
-user.password.violation.alpha=You must provide a password containing at least {1} alphabetic character(s).
-user.password.violation.numeric=You must provide a password containing at least {1} numeric character(s).
-user.password.violation.reuse=Your password cannot match any of your previous {1} password(s).
+user.password.violation.length=You must provide a password between {0} and {1} characters in length.
+user.password.violation.length.misconfigured=Password Length Rule is misconfigured. Specified minimum of ({0}) is larger than specified maximum of ({1}). Rule disabled.
+user.password.violation.alpha=You must provide a password containing at least {0} alphabetic character(s).
+user.password.violation.numeric=You must provide a password containing at least {0} numeric character(s).
+user.password.violation.reuse=Your password cannot match any of your previous {0} password(s).
Modified: maven/shared/trunk/maven-user/maven-user-model/src/test/java/org/apache/maven/user/model/impl/DefaultUserManagerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-model/src/test/java/org/apache/maven/user/model/impl/DefaultUserManagerTest.java?view=diff&rev=440434&r1=440433&r2=440434
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-model/src/test/java/org/apache/maven/user/model/impl/DefaultUserManagerTest.java (original)
+++ maven/shared/trunk/maven-user/maven-user-model/src/test/java/org/apache/maven/user/model/impl/DefaultUserManagerTest.java Tue Sep 5 11:50:57 2006
@@ -25,7 +25,9 @@
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
+import org.apache.maven.user.model.PasswordRule;
import org.apache.maven.user.model.PasswordRuleViolationException;
+import org.apache.maven.user.model.PasswordRuleViolations;
import org.apache.maven.user.model.Permission;
import org.apache.maven.user.model.User;
import org.apache.maven.user.model.UserGroup;
@@ -491,7 +493,7 @@
AlphaPasswordRule alphaRule = new AlphaPasswordRule();
alphaRule.setMinimumCount( 3 );
- getUserManager().getSecurityPolicy().addPasswordRule( alphaRule );
+ setSinglePasswordRule( alphaRule );
try
{
User validPwd = new User();
@@ -528,8 +530,7 @@
CharacterLengthPasswordRule charLengthRule = new CharacterLengthPasswordRule();
charLengthRule.setMinimumCharacters( 3 );
charLengthRule.setMaximumCharacters( 9 );
- getUserManager().getSecurityPolicy().getPasswordRules().clear();
- getUserManager().getSecurityPolicy().addPasswordRule( charLengthRule );
+ setSinglePasswordRule( charLengthRule );
try
{
User minLengthPwd = new User();
@@ -588,8 +589,7 @@
{
assertCleanUserManager();
- MustHavePasswordRule mustHaveRule = new MustHavePasswordRule();
- getUserManager().getSecurityPolicy().addPasswordRule( mustHaveRule );
+ setSinglePasswordRule( new MustHavePasswordRule() );
try
{
User nonEmptyPwd = new User();
@@ -637,7 +637,7 @@
NumericalPasswordRule numRule = new NumericalPasswordRule();
numRule.setMinimumCount( 3 );
- getUserManager().getSecurityPolicy().addPasswordRule( numRule );
+ setSinglePasswordRule( numRule );
try
{
User validPwd = new User();
@@ -672,9 +672,8 @@
{
assertCleanUserManager();
- ReusePasswordRule reuseRule = new ReusePasswordRule();
- getUserManager().getSecurityPolicy().addPasswordRule( reuseRule );
-
+ setSinglePasswordRule( new ReusePasswordRule() );
+ getUserManager().getSecurityPolicy().setPreviousPasswordsCount( 3 );
try
{
User user = new User();
@@ -711,7 +710,7 @@
getUserManager().removeUser( "user" );
assertEquals( 0, getUserManager().getUsers().size() );
}
-
+
private void assertCleanUserManager()
{
assertNotNull( getUserManager() );
@@ -719,5 +718,11 @@
assertEquals( "New UserManager should contain no users.", 0, getUserManager().getUsers().size() );
assertEquals( "New UserManager should contain no groups.", 0, getUserManager().getUserGroups().size() );
assertNotNull( "New UserManager should have a Security Policy", getUserManager().getSecurityPolicy() );
+ }
+
+ private void setSinglePasswordRule( PasswordRule rule )
+ {
+ getUserManager().getSecurityPolicy().getPasswordRules().clear();
+ getUserManager().getSecurityPolicy().addPasswordRule( rule );
}
}
Modified: maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/user/edit.jsp
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/user/edit.jsp?view=diff&rev=440434&r1=440433&r2=440434
==============================================================================
--- maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/user/edit.jsp (original)
+++ maven/shared/trunk/maven-user/maven-user-webapp/src/main/webapp/user/edit.jsp Tue Sep 5 11:50:57 2006
@@ -1,3 +1,4 @@
+<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
<%@ taglib uri="/webwork" prefix="ww" %>
<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %>
<script>
@@ -41,6 +42,13 @@
</ww:else>
<div class="axial">
<ww:form action="edit.action" method="post">
+ <c:if test="${!empty actionErrors}">
+ <div class="errormessage">
+ <c:forEach items="${actionErrors}" var="actionError">
+ <p>${actionError}</p>
+ </c:forEach>
+ </div>
+ </c:if>
<table>
<tbody>
<ww:hidden id="addMode_field" name="addMode"/>