[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mina-commits
Subject:    svn commit: r1053366 - in /mina/vysper/trunk/server/core/src:
From:       berndf () apache ! org
Date:       2010-12-28 14:54:42
Message-ID: 20101228145442.E05C623889C5 () eris ! apache ! org
[Download RAW message or body]

Author: berndf
Date: Tue Dec 28 14:54:42 2010
New Revision: 1053366

URL: http://svn.apache.org/viewvc?rev=1053366&view=rev
Log:
VYSPER-159: Change User Password. Admins can change all passwords, users only their \
own.

Added:
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServerAdministrationService.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/ChangeUserPasswordCommandHandler.java
                
      - copied, changed from r1053331, \
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/PasswordCheckingCommandHandler.java
 Modified:
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/user/JcrUserManagement.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AccountManagement.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0050_adhoc_commands/AdhocCommandsModule.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java
  mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java


Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/user/JcrUserManagement.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/storage/jcr/user/JcrUserManagement.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/user/JcrUserManagement.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/storage/jcr/user/JcrUserManagement.java \
Tue Dec 28 14:54:42 2010 @@ -109,4 +109,22 @@ public class JcrUserManagement \
implement  }
 
     }
+
+    public void changePassword(String username, String password) throws \
AccountCreationException { +        final EntityImpl entity;
+        try {
+            entity = EntityImpl.parse(username);
+        } catch (EntityFormatException e) {
+            throw new AccountCreationException("username is expected to be in proper \
entity format, not " + username, e); // wrap as unchecked +        }
+        try {
+            final Node credentialsNode = jcrStorage.getEntityNode(entity, \
CREDENTIALS_NAMESPACE, false); +            credentialsNode.setProperty("password", \
password); +            credentialsNode.save();
+            logger.info("JCR password changed: " + credentialsNode);
+        } catch (Exception e) {
+            // TODO remove account?
+            throw new AccountCreationException("failed to create the account set \
credentials", e); +        }
+    }
 }

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AccountManagement.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/authorization/AccountManagement.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AccountManagement.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/AccountManagement.java \
Tue Dec 28 14:54:42 2010 @@ -28,6 +28,8 @@ import org.apache.vysper.xmpp.addressing
  */
 public interface AccountManagement extends StorageProvider {
     void addUser(String username, String password) throws AccountCreationException;
+    
+    void changePassword(String username, String password) throws \
AccountCreationException;  
     /**
      * checks if there is this jid is registered with the server

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/authorization/SimpleUserAuthorization.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/authorization/SimpleUserAuthorization.java \
Tue Dec 28 14:54:42 2010 @@ -45,6 +45,13 @@ public class SimpleUserAuthorization imp
         userPasswordMap.put(username, password);
     }
 
+    public void changePassword(String username, String password) throws \
AccountCreationException { +        if (!userPasswordMap.containsKey(username)) {
+            throw new AccountCreationException("could not change password for \
unknown user " + username); +        }
+        userPasswordMap.put(username, password);
+    }
+
     public boolean verifyCredentials(Entity jid, String passwordCleartext, Object \
credentials) {  return verify(jid.getFullQualifiedName(), passwordCleartext);
     }

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0050_adhoc_commands/AdhocCommandsModule.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/modules/extension/xep0050_adhoc_commands/AdhocCommandsModule.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0050_adhoc_commands/AdhocCommandsModule.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0050_adhoc_commands/AdhocCommandsModule.java \
Tue Dec 28 14:54:42 2010 @@ -51,7 +51,7 @@ import java.util.List;
  */
 public class AdhocCommandsModule extends DefaultDiscoAwareModule 
         implements ItemRequestListener, ServerInfoRequestListener, 
-                   ServerRuntimeContextService, AdhocCommandsService{
+                   ServerRuntimeContextService, AdhocCommandsService {
 
     public static final String ADHOC_COMMANDS = "adhoc_commands";
     private final Logger logger = \
LoggerFactory.getLogger(org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandsModule.class);


Added: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServerAdministrationService.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/modules/extension/xep0133_service_administration/ServerAdministrationService.java?rev=1053366&view=auto
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServerAdministrationService.java \
                (added)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServerAdministrationService.java \
Tue Dec 28 14:54:42 2010 @@ -0,0 +1,16 @@
+package org.apache.vysper.xmpp.modules.extension.xep0133_service_administration;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+
+import java.util.Collection;
+
+/**
+ */
+public interface ServerAdministrationService {
+
+    void setAddAdminJIDs(Collection<Entity> admins);
+
+    void setAddAdmins(Collection<String> admins);
+
+    boolean isAdmin(Entity adminCandidate);
+}

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/ServiceAdministrationModule.java \
Tue Dec 28 14:54:42 2010 @@ -19,22 +19,23 @@
  */
 package org.apache.vysper.xmpp.modules.extension.xep0133_service_administration;
 
-import org.apache.vysper.storage.StorageProvider;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityFormatException;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
 import org.apache.vysper.xmpp.authorization.AccountManagement;
-import org.apache.vysper.xmpp.authorization.UserAuthorization;
 import org.apache.vysper.xmpp.modules.DefaultModule;
+import org.apache.vysper.xmpp.modules.ServerRuntimeContextService;
 import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandHandler;
  import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandSupport;
  import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandsModule;
  import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandsService;
  import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.CommandInfo;
 import org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.command.AddUserCommandHandler;
 +import org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.command.ChangeUserPasswordCommandHandler;
  import org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.command.GetOnlineUsersCommandHandler;
  import org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.state.resourcebinding.ResourceRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,12 +51,13 @@ import java.util.Set;
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class ServiceAdministrationModule extends DefaultModule implements \
AdhocCommandSupport { +public class ServiceAdministrationModule extends DefaultModule \
implements AdhocCommandSupport, ServerRuntimeContextService, \
ServerAdministrationService {  
     private final Logger logger = \
LoggerFactory.getLogger(ServiceAdministrationModule.class);  
     public static final String COMMAND_NODE_ADD_USER = \
                "http://jabber.org/protocol/admin#add-user";
     public static final String COMMAND_GET_ONLINE_USERS_NUM = \
"http://jabber.org/protocol/admin#get-online-users-num"; +    public static final \
String COMMAND_CHANGE_USER_PASSWORD = \
"http://jabber.org/protocol/admin#change-user-password";  
     private ServerRuntimeContext serverRuntimeContext;
 
@@ -63,8 +65,9 @@ public class ServiceAdministrationModule
     protected final Map<String, CommandInfo> allCommandInfos = new HashMap<String, \
CommandInfo>();  
     public ServiceAdministrationModule() {
-        allCommandInfos.put(COMMAND_NODE_ADD_USER, new \
                CommandInfo(COMMAND_NODE_ADD_USER, "Add User"));
-        allCommandInfos.put(COMMAND_GET_ONLINE_USERS_NUM, new \
CommandInfo(COMMAND_GET_ONLINE_USERS_NUM, "Get Number of Online Users")); +        /* \
XEP-133 4.1  */ allCommandInfos.put(COMMAND_NODE_ADD_USER, new \
CommandInfo(COMMAND_NODE_ADD_USER, "Add User")); +        /* XEP-133 4.7  */ \
allCommandInfos.put(COMMAND_CHANGE_USER_PASSWORD, new \
CommandInfo(COMMAND_CHANGE_USER_PASSWORD, "Change User Password")); +        /* \
XEP-133 4.15 */ allCommandInfos.put(COMMAND_GET_ONLINE_USERS_NUM, new \
CommandInfo(COMMAND_GET_ONLINE_USERS_NUM, "Get Number of Online Users"));  }
 
     /**
@@ -78,6 +81,8 @@ public class ServiceAdministrationModule
 
         final AdhocCommandsService adhocCommandsService = \
(AdhocCommandsService)serverRuntimeContext.getServerRuntimeContextService(AdhocCommandsModule.ADHOC_COMMANDS);
  adhocCommandsService.registerCommandSupport(this);
+        
+        serverRuntimeContext.registerServerRuntimeContextService(this);
     }
 
     public void setAddAdminJIDs(Collection<Entity> admins) {
@@ -96,7 +101,11 @@ public class ServiceAdministrationModule
         }
         this.admins.addAll(adminEntities);
     }
-    
+
+    public boolean isAdmin(Entity adminCandidate) {
+        return admins.contains(adminCandidate);
+    }
+
     @Override
     public String getName() {
         return "XEP-0133 Service Administration";
@@ -107,9 +116,13 @@ public class ServiceAdministrationModule
         return "1.1";
     }
 
+    public String getServiceName() {
+        return getName();
+    }
+    
     public Collection<CommandInfo> getCommandInfosForInfoRequest(InfoRequest \
infoRequest, boolean hintListAll) {  if (!admins.contains(infoRequest.getFrom())) {
-            return null;
+            return Arrays.asList(allCommandInfos.get(COMMAND_CHANGE_USER_PASSWORD));
         }
         if (hintListAll) return allCommandInfos.values();
 
@@ -118,15 +131,26 @@ public class ServiceAdministrationModule
     }
 
     public AdhocCommandHandler getCommandHandler(String commandNode, Entity \
                executingUser) {
-        if (executingUser == null || !admins.contains(executingUser)) {
+        if (executingUser == null) return null;
+
+        final AccountManagement accountManagement = \
(AccountManagement)serverRuntimeContext.getStorageProvider(AccountManagement.class); \
+        final ResourceRegistry resourceRegistry = \
serverRuntimeContext.getResourceRegistry(); +        
+        if (!admins.contains(executingUser)) {
+            // non-admins can only admin their own accounts
+            if (commandNode.equals(COMMAND_CHANGE_USER_PASSWORD)) {
+                return new ChangeUserPasswordCommandHandler(accountManagement, \
executingUser); +            }
             return null;
         }
+        
         if (commandNode.equals(COMMAND_NODE_ADD_USER)) {
-            final AccountManagement accountManagement = \
(AccountManagement)serverRuntimeContext.getStorageProvider(AccountManagement.class);  \
                if (accountManagement == null) return null;
             return new AddUserCommandHandler(accountManagement, \
Arrays.asList(serverRuntimeContext.getServerEnitity().getDomain())); +        } else \
if (commandNode.equals(COMMAND_CHANGE_USER_PASSWORD)) { +            return new \
ChangeUserPasswordCommandHandler(accountManagement, null);  } else if \
                (commandNode.equals(COMMAND_GET_ONLINE_USERS_NUM)) {
-            return new \
GetOnlineUsersCommandHandler(serverRuntimeContext.getResourceRegistry()); +           \
return new GetOnlineUsersCommandHandler(resourceRegistry);  }
         return null;
     }

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java \
Tue Dec 28 14:54:42 2010 @@ -16,7 +16,7 @@ import java.util.Map;
 
 /**
  */
-public class AddUserCommandHandler extends AbstractAdhocCommandHandler {
+public class AddUserCommandHandler extends PasswordCheckingCommandHandler {
     
     protected AccountManagement accountManagement;
     protected List<String> allowedDomains;
@@ -63,16 +63,10 @@ public class AddUserCommandHandler exten
             notes.add(Note.error("new account must match one of this server's \
domains, e.g. " + allowedDomains.get(0)));  return sendForm();
         }
-        if (StringUtils.isBlank(password) || 
-            password.equals(accountjid.getFullQualifiedName()) ||
-            password.length() < 8) {
-            notes.add(Note.error("password must have at least 8 chars and must not \
                be the same as the new JID"));
-            return sendForm();
-        }
-        if (!password.equals(password2)) {
-            notes.add(Note.error("passwords did not match"));
-            return sendForm();
-        }
+
+        final boolean success = checkPassword(notes, accountjid, password, \
password2); +        if (!success) return sendForm();
+        
         if (accountManagement.verifyAccountExists(accountjid)) {
             notes.add(Note.error("account already exists: " + accountjid));
             return sendForm();

Copied: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/ext \
ension/xep0133_service_administration/command/ChangeUserPasswordCommandHandler.java \
(from r1053331, mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/mod \
                ules/extension/xep0133_service_administration/command/AddUserCommandHandler.java)
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/modules/extension/xep0133_service_administration/command/ChangeUserPass \
wordCommandHandler.java?p2=mina/vysper/trunk/server/core/src/main/java/org/apache/vysp \
er/xmpp/modules/extension/xep0133_service_administration/command/ChangeUserPasswordCom \
mandHandler.java&p1=mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp \
/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java&r1=1053331&r2=1053366&rev=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/AddUserCommandHandler.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/ChangeUserPasswordCommandHandler.java \
Tue Dec 28 14:54:42 2010 @@ -16,17 +16,18 @@ import java.util.Map;
 
 /**
  */
-public class AddUserCommandHandler extends AbstractAdhocCommandHandler {
+public class ChangeUserPasswordCommandHandler extends PasswordCheckingCommandHandler \
{  
     protected AccountManagement accountManagement;
-    protected List<String> allowedDomains;
 
-    public AddUserCommandHandler(AccountManagement accountManagement, List<String> \
allowedDomains) { +    /**
+     * if not NULL, the user will only be able this JID's (his own) password
+     */
+    protected Entity constrainedJID;
+
+    public ChangeUserPasswordCommandHandler(AccountManagement accountManagement, \
Entity constrainedJID) {  this.accountManagement = accountManagement;
-        if (allowedDomains == null || allowedDomains.size() == 0) {
-            throw new IllegalArgumentException("allowed domain list cannot be \
                empty");
-        }
-        this.allowedDomains = allowedDomains;
+        this.constrainedJID = constrainedJID;
     }
 
     public XMLElement process(List<XMLElement> commandElements, List<Note> notes) {
@@ -38,17 +39,18 @@ public class AddUserCommandHandler exten
     }
 
     protected XMLElement sendForm() {
-        final DataForm dataForm = createFormForm("Adding a User", "Fill out this \
                form to add a user.");
-        dataForm.addField(new Field("The Jabber ID for the account to be added", \
                Field.Type.JID_SINGLE, "accountjid"));
-        dataForm.addField(new Field("The password for this account", \
                Field.Type.TEXT_PRIVATE, "password"));
-        dataForm.addField(new Field("Retype password", Field.Type.TEXT_PRIVATE, \
                "password-verify"));
-        dataForm.addField(new Field("Email address", Field.Type.TEXT_SINGLE, \
                "email"));
-        dataForm.addField(new Field("Given name", Field.Type.TEXT_SINGLE, \
                "given_name"));
-        dataForm.addField(new Field("Family name", Field.Type.TEXT_SINGLE, \
"surname")); +        final DataForm dataForm = createFormForm("Changing a User \
Password", "Fill out this form to change a user&apos;s password."); +        if \
(constrainedJID == null) { +            dataForm.addField(new Field("The Jabber ID \
whose password will be changed.", Field.Type.JID_SINGLE, "accountjid")); +        } \
else { +            dataForm.addField(new Field("The Jabber ID whose password will be \
changed.", Field.Type.JID_SINGLE, "accountjid", \
constrainedJID.getFullQualifiedName())); +        }
+        dataForm.addField(new Field("The new password for this account", \
Field.Type.TEXT_PRIVATE, "password")); +        dataForm.addField(new Field("Retype \
new password", Field.Type.TEXT_PRIVATE, "password-verify"));  
         return DATA_FORM_ENCODER.getXML(dataForm);
     }
-
+    
     protected XMLElement processForm(List<XMLElement> commandElements, List<Note> \
notes) {  if (commandElements.size() != 1) {
             throw new IllegalStateException("must be an X element");
@@ -59,29 +61,18 @@ public class AddUserCommandHandler exten
         final String password = (String)valueMap.get("password");
         final String password2 = (String)valueMap.get("password-verify");
 
-        if (accountjid == null || !allowedDomains.contains(accountjid.getDomain())) \
                {
-            notes.add(Note.error("new account must match one of this server's \
                domains, e.g. " + allowedDomains.get(0)));
-            return sendForm();
-        }
-        if (StringUtils.isBlank(password) || 
-            password.equals(accountjid.getFullQualifiedName()) ||
-            password.length() < 8) {
-            notes.add(Note.error("password must have at least 8 chars and must not \
                be the same as the new JID"));
-            return sendForm();
-        }
-        if (!password.equals(password2)) {
-            notes.add(Note.error("passwords did not match"));
-            return sendForm();
-        }
-        if (accountManagement.verifyAccountExists(accountjid)) {
-            notes.add(Note.error("account already exists: " + accountjid));
+        final boolean success = checkPassword(notes, accountjid, password, \
password2); +        if (!success) return sendForm();
+
+        if (constrainedJID != null && !constrainedJID.equals(accountjid)) {
+            notes.add(Note.error("password change only allowed for " + \
constrainedJID.getFullQualifiedName()));  return sendForm();
         }
-
+        
         try {
-            accountManagement.addUser(accountjid.getFullQualifiedName(), password);
+            accountManagement.changePassword(accountjid.getFullQualifiedName(), \
password);  } catch (AccountCreationException e) {
-            notes.add(Note.error("account creation failed for " + accountjid));
+            notes.add(Note.error("changing password failed for " + accountjid));
             return sendForm();
         }
 

Added: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/PasswordCheckingCommandHandler.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/modules/extension/xep0133_service_administration/command/PasswordCheckingCommandHandler.java?rev=1053366&view=auto
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/PasswordCheckingCommandHandler.java \
                (added)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0133_service_administration/command/PasswordCheckingCommandHandler.java \
Tue Dec 28 14:54:42 2010 @@ -0,0 +1,26 @@
+package org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.command;
 +
+import org.apache.commons.lang.StringUtils;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AbstractAdhocCommandHandler;
 +import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.Note;
+
+import java.util.List;
+
+/**
+ */
+public abstract class PasswordCheckingCommandHandler extends \
AbstractAdhocCommandHandler { +    protected boolean checkPassword(List<Note> notes, \
Entity accountjid, String password, String password2) { +        if \
(StringUtils.isBlank(password) ||  +            \
password.equals(accountjid.getFullQualifiedName()) || +            password.length() \
< 8) { +            notes.add(Note.error("password must have at least 8 chars and \
must not be the same as the new JID")); +            return false;
+        }
+        if (!password.equals(password2)) {
+            notes.add(Note.error("passwords did not match"));
+            return false;
+        }
+        return true;
+    }
+}

Modified: mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/test/java/org/apac \
he/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java?rev=1053366&r1=1053365&r2=1053366&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java \
                (original)
+++ mina/vysper/trunk/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringStanzaRelayTestCase.java \
Tue Dec 28 14:54:42 2010 @@ -52,6 +52,10 @@ public class DeliveringStanzaRelayTestCa
             ; // empty
         }
 
+        public void changePassword(String username, String password) throws \
AccountCreationException { +            ; // empty
+        }
+
         public boolean verifyAccountExists(Entity jid) {
             return true;
         }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic