You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/11/08 23:22:09 UTC
[archiva-redback-core] 03/06: Adding exist check and creation time
for addUser in UserManager
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 <ma...@apache.org>
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 <ma...@apache.org>
+ */
+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()