This is an automated email from the ASF dual-hosted git repository. martin_s pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/archiva-redback-core.git
commit 5caf69ba8c3c4b4217f336ecc6e001bff2bfa05a Author: Martin Stockhammer <[email protected]> AuthorDate: Sun Nov 8 14:21:32 2020 +0100 Adding exist check and creation time for addUser in UserManager --- .../archiva/redback/users/UserExistsException.java | 42 ++++++++++++++++++++++ .../archiva/redback/users/jpa/JpaUserManager.java | 16 +++++---- .../redback/users/ldap/LdapUserManager.java | 14 ++++++++ .../redback/users/memory/MemoryUserManager.java | 21 +++++++++-- 4 files changed, 84 insertions(+), 9 deletions(-) diff --git a/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/UserExistsException.java b/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/UserExistsException.java new file mode 100644 index 0000000..8df422e --- /dev/null +++ b/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/UserExistsException.java @@ -0,0 +1,42 @@ +package org.apache.archiva.redback.users;/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +/** + * @author Martin Stockhammer <[email protected]> + */ +public class UserExistsException extends UserManagerException +{ + public UserExistsException( ) + { + } + + public UserExistsException( String message, Throwable cause ) + { + super( message, cause ); + } + + public UserExistsException( String message ) + { + super( message ); + } + + public UserExistsException( Throwable cause ) + { + super( cause ); + } +} diff --git a/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java b/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java index 1ca7f47..541c177 100644 --- a/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java +++ b/redback-users/redback-users-providers/redback-users-jpa/src/main/java/org/apache/archiva/redback/users/jpa/JpaUserManager.java @@ -24,6 +24,7 @@ import org.apache.archiva.redback.users.AbstractUserManager; import org.apache.archiva.redback.users.Messages; import org.apache.archiva.redback.users.PermanentUserException; import org.apache.archiva.redback.users.User; +import org.apache.archiva.redback.users.UserExistsException; import org.apache.archiva.redback.users.UserManagerException; import org.apache.archiva.redback.users.UserNotFoundException; import org.apache.archiva.redback.users.UserQuery; @@ -127,6 +128,10 @@ public class JpaUserManager extends AbstractUserManager { throw new IllegalStateException( Messages.getString( "user.manager.cannot.add.user.without.username" ) ); //$NON-NLS-1$ } + if (userExists( user.getUsername() )) { + log.debug( "User exists already " + user.getUsername( ) ); + throw new UserExistsException( "User exists already " + user.getUsername( ) ); + } userSecurityPolicy.extensionChangePassword( user ); @@ -147,6 +152,8 @@ public class JpaUserManager extends AbstractUserManager { if (user.getLastPasswordChange()==null) { user.setLastPasswordChange(new Date()); } + user.setAccountCreationDate( new Date( ) ); + log.debug( "Adding new user " + user.getUsername( ) ); em.persist( user ); return user; } @@ -282,7 +289,7 @@ public class JpaUserManager extends AbstractUserManager { @Transactional @Override public void addUserUnchecked(User user) throws UserManagerException { - log.info("addUserUnchecked "+user.getUsername()); + log.debug("addUserUnchecked "+user.getUsername()); if ( !( user instanceof JpaUser ) ) { throw new UserManagerException( "Unable to Add User. User object " + user.getClass().getName() + @@ -294,12 +301,7 @@ public class JpaUserManager extends AbstractUserManager { throw new IllegalStateException( Messages.getString( "user.manager.cannot.add.user.without.username" ) ); //$NON-NLS-1$ } - - TypedQuery<JpaUser> q = em.createQuery("SELECT u FROM JpaUser u", JpaUser.class); - for (JpaUser u : q.getResultList()) { - log.info("USER FOUND: "+u.getUsername()); - } - log.info("NEW USER "+user.getUsername()); + user.setAccountCreationDate( new Date( ) ); em.persist( user ); } diff --git a/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java b/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java index 07621ee..a6a6388 100644 --- a/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java +++ b/redback-users/redback-users-providers/redback-users-ldap/src/main/java/org/apache/archiva/redback/users/ldap/LdapUserManager.java @@ -28,6 +28,7 @@ import org.apache.archiva.redback.configuration.UserConfiguration; import org.apache.archiva.redback.configuration.UserConfigurationKeys; import org.apache.archiva.redback.users.AbstractUserManager; import org.apache.archiva.redback.users.User; +import org.apache.archiva.redback.users.UserExistsException; import org.apache.archiva.redback.users.UserManager; import org.apache.archiva.redback.users.UserManagerException; import org.apache.archiva.redback.users.UserNotFoundException; @@ -46,6 +47,7 @@ import javax.inject.Named; import javax.naming.directory.DirContext; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; /** @@ -123,6 +125,16 @@ public class LdapUserManager { return null; } + try + { + if (checked && userExists( user.getUsername() )){ + throw new UserExistsException( "User exists already " + user.getUsername( ) ); + } + } + catch ( UserManagerException e ) + { + throw new LdapException( "Unexpected LDAP error " + e.getMessage( ) ); + } if ( isReadOnly() && GUEST_USERNAME.equals( user.getUsername() ) ) { @@ -130,6 +142,8 @@ public class LdapUserManager return guestUser; } + user.setAccountCreationDate( new Date( ) ); + LdapConnection ldapConnection = getLdapConnection(); try { diff --git a/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/MemoryUserManager.java b/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/MemoryUserManager.java index 9527d6f..b67b8fb 100644 --- a/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/MemoryUserManager.java +++ b/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/MemoryUserManager.java @@ -23,6 +23,7 @@ import org.apache.archiva.redback.policy.UserSecurityPolicy; import org.apache.archiva.redback.users.AbstractUserManager; import org.apache.archiva.redback.users.PermanentUserException; import org.apache.archiva.redback.users.User; +import org.apache.archiva.redback.users.UserExistsException; import org.apache.archiva.redback.users.UserManager; import org.apache.archiva.redback.users.UserManagerException; import org.apache.archiva.redback.users.UserNotFoundException; @@ -34,6 +35,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -96,8 +98,16 @@ public class MemoryUserManager private Map<Object, User> users = new HashMap<Object, User>(); - public User addUser( User user ) + public User addUser(User user) throws UserManagerException { + return addUser( user, false ); + } + + private User addUser( User user, boolean checked ) throws UserManagerException { + if (checked && userExists( user.getUsername() )) { + throw new UserExistsException( "User exists already " + user.getUsername( ) ); + } + user.setAccountCreationDate( new Date( ) ); saveUser( user ); fireUserManagerUserAdded( user ); @@ -176,7 +186,14 @@ public class MemoryUserManager public void addUserUnchecked( User user ) { - addUser( user ); + try + { + addUser( user, false ); + } + catch ( UserManagerException e ) + { + log.error( "User manager exception " + e.getMessage( ) ); + } } public void eraseDatabase()
