diff options
Diffstat (limited to 'qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ManagedUser.java')
-rw-r--r-- | qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ManagedUser.java | 43 |
1 files changed, 8 insertions, 35 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ManagedUser.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ManagedUser.java index 6f36ec7d11..db69445c41 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ManagedUser.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ManagedUser.java @@ -40,7 +40,6 @@ import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.StateTransition; import org.apache.qpid.server.model.User; -import org.apache.qpid.server.security.access.Operation; @ManagedObject( category = false, type = ManagedUser.MANAGED_USER_TYPE) class ManagedUser extends AbstractConfiguredObject<ManagedUser> implements User<ManagedUser> @@ -88,16 +87,6 @@ class ManagedUser extends AbstractConfiguredObject<ManagedUser> implements User< } } - @Override - protected void authoriseSetDesiredState(final State desiredState) throws AccessControlException - { - if(desiredState == State.DELETED) - { - _authenticationManager.getSecurityManager().authoriseUserOperation(Operation.DELETE, getName()); - } - - } - @StateTransition(currentState = {State.ACTIVE}, desiredState = State.DELETED) private ListenableFuture<Void> doDelete() { @@ -106,31 +95,18 @@ class ManagedUser extends AbstractConfiguredObject<ManagedUser> implements User< return Futures.immediateFuture(null); } - @Override - public void setAttributes(final Map<String, Object> attributes) - throws IllegalStateException, AccessControlException, IllegalArgumentException + protected boolean changeAttribute(String name, Object expected, Object desired) { - runTask(new VoidTask() + if (User.PASSWORD.equals(name)) { - - @Override - public void execute() + String storedPassword = _authenticationManager.createStoredPassword((String)desired); + if (!storedPassword.equals(getActualAttributes().get(User.PASSWORD))) { - Map<String, Object> modifiedAttributes = new HashMap<String, Object>(attributes); - final String newPassword = (String) attributes.get(User.PASSWORD); - if (attributes.containsKey(User.PASSWORD) - && !newPassword.equals(getActualAttributes().get(User.PASSWORD))) - { - modifiedAttributes.put(User.PASSWORD, - _authenticationManager.createStoredPassword(newPassword)); - - } - ManagedUser.super.setAttributes(modifiedAttributes); + desired = storedPassword; } - }); - - + } + return super.changeAttribute(name, expected, desired); } @Override @@ -142,10 +118,7 @@ class ManagedUser extends AbstractConfiguredObject<ManagedUser> implements User< @Override public void setPassword(final String password) { - _authenticationManager.getSecurityManager().authoriseUserOperation(Operation.UPDATE, getName()); - - changeAttribute(User.PASSWORD, getAttribute(User.PASSWORD), - _authenticationManager.createStoredPassword(password)); + setAttributes(Collections.<String, Object>singletonMap(User.PASSWORD, password)); } |