]> git.mxchange.org Git - jjobs-war.git/blobdiff - src/java/org/mxchange/jjobs/beans/user/JobsAdminUserWebRequestBean.java
Please cherry-pick:
[jjobs-war.git] / src / java / org / mxchange / jjobs / beans / user / JobsAdminUserWebRequestBean.java
index 31f79a8744fbe29bb786bfb029abcff0dc9cedc0..5c4486e512229f54297913b699bbe6aa3bf56cce 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 - 2018 Free Software Foundation
+ * Copyright (C) 2016 - 2020 Free Software Foundation
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as
@@ -25,8 +25,8 @@ import javax.enterprise.event.Event;
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.Any;
 import javax.faces.FacesException;
+import javax.faces.application.FacesMessage;
 import javax.faces.context.FacesContext;
-import javax.faces.view.facelets.FaceletException;
 import javax.inject.Inject;
 import javax.inject.Named;
 import org.mxchange.jcontacts.model.contact.Contact;
@@ -35,6 +35,7 @@ import org.mxchange.jjobs.beans.BaseJobsBean;
 import org.mxchange.jjobs.beans.contact.JobsAdminContactWebRequestController;
 import org.mxchange.jjobs.beans.contact.JobsContactWebRequestController;
 import org.mxchange.jjobs.beans.features.JobsFeaturesWebApplicationController;
+import org.mxchange.jjobs.beans.user.list.JobsUserListWebViewController;
 import org.mxchange.jusercore.events.user.add.AdminAddedUserEvent;
 import org.mxchange.jusercore.events.user.add.ObservableAdminAddedUserEvent;
 import org.mxchange.jusercore.events.user.created.ObservableCreatedUserEvent;
@@ -46,8 +47,8 @@ import org.mxchange.jusercore.events.user.locked.AdminLockedUserEvent;
 import org.mxchange.jusercore.events.user.locked.ObservableAdminLockedUserEvent;
 import org.mxchange.jusercore.events.user.unlocked.AdminUnlockedUserEvent;
 import org.mxchange.jusercore.events.user.unlocked.ObservableAdminUnlockedUserEvent;
-import org.mxchange.jusercore.events.user.update.AdminUpdatedUserDataEvent;
-import org.mxchange.jusercore.events.user.update.ObservableAdminUpdatedUserDataEvent;
+import org.mxchange.jusercore.events.user.update.post.AdminPostUserDataUpdatedEvent;
+import org.mxchange.jusercore.events.user.update.post.ObservableAdminPostUserDataUpdatedEvent;
 import org.mxchange.jusercore.exceptions.EmailAddressAlreadyRegisteredException;
 import org.mxchange.jusercore.exceptions.UserNameAlreadyRegisteredException;
 import org.mxchange.jusercore.exceptions.UserNotFoundException;
@@ -127,7 +128,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
         */
        @Inject
        @Any
-       private Event<ObservableAdminUpdatedUserDataEvent> updatedUserDataEvent;
+       private Event<ObservableAdminPostUserDataUpdatedEvent> updatedUserDataEvent;
 
        /**
         * User instance
@@ -159,6 +160,12 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
        @Any
        private Event<ObservableAdminLinkedUserEvent> userLinkedEvent;
 
+       /**
+        * Regular user controller
+        */
+       @Inject
+       private JobsUserListWebViewController userListController;
+
        /**
         * User lock reason
         */
@@ -235,12 +242,12 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
 
                // Is the user name or email address used already?
                // @TODO Add password length check
-               if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userController.isUserNameRegistered(newUser))) {
+               if ((this.featureController.isFeatureEnabled("user_login_require_user_name")) && (this.userListController.isUserNameRegistered(newUser))) {
                        // User name is already used
-                       throw new FaceletException(new UserNameAlreadyRegisteredException(newUser));
+                       throw new FacesException(new UserNameAlreadyRegisteredException(newUser));
                } else if ((this.getContact() == null) && (this.contactController.isEmailAddressRegistered(newUser.getUserContact()))) {
                        // Email address is already used
-                       this.showFacesMessage("admin_add_user:emailAddress", "ERROR_EMAIL_ADDRESS_ALREADY_USED"); //NOI18N
+                       this.showFacesMessage("admin_add_user:emailAddress", "ERROR_EMAIL_ADDRESS_ALREADY_USED", FacesMessage.SEVERITY_WARN); //NOI18N
 
                        // Always clear password
                        this.setUserPassword(null);
@@ -250,26 +257,31 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        return;
                }
 
+               // Init variable
+               final User updatedUser;
+
                try {
                        // Now, that all is set, call EJB
                        if (this.getContact() instanceof Contact) {
                                // Link contact with this user
-                               final User updatedUser = this.adminUserBean.linkUser(newUser);
-
-                               // Fire event
-                               this.userLinkedEvent.fire(new AdminLinkedUserEvent(updatedUser));
+                               updatedUser = this.adminUserBean.linkUser(newUser);
                        } else {
                                // Add new user
-                               final User updatedUser = this.adminUserBean.addUser(newUser);
-
-                               // Fire event
-                               this.addedUserEvent.fire(new AdminAddedUserEvent(updatedUser));
+                               updatedUser = this.adminUserBean.addUser(newUser);
                        }
                } catch (final UserNameAlreadyRegisteredException | EmailAddressAlreadyRegisteredException ex) {
                        // Throw again
-                       throw new FaceletException(ex);
+                       throw new FacesException(ex);
                }
 
+               // Now, that all is set, call EJB
+               if (this.getContact() instanceof Contact) {
+                       // Fire event
+                       this.userLinkedEvent.fire(new AdminLinkedUserEvent(updatedUser));
+               } else {
+                       // Fire event
+                       this.addedUserEvent.fire(new AdminAddedUserEvent(updatedUser));
+               }
                // Clear helper
                this.setContact(null);
 
@@ -310,7 +322,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
         * @param event User registration event
         */
        public void afterUserRegistrationEvent (@Observes final ObservableUserRegisteredEvent event) {
-               // event should not be null
+               // Event and contained entity instance should not be null
                if (null == event) {
                        // Throw NPE
                        throw new NullPointerException("event is null"); //NOI18N
@@ -354,7 +366,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        this.adminUserBean.deleteUser(this.getUser(), this.getUserDeleteReason());
                } catch (final UserNotFoundException ex) {
                        // Should not happen, so throw again
-                       throw new FaceletException(ex);
+                       throw new FacesException(ex);
                }
 
                // Fire event
@@ -390,14 +402,14 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        this.setUserPasswordRepeat(null);
 
                        // Not same password entered
-                       this.showFacesMessage("form_edit_user:userPassword", "ADMIN_USER_PASSWORD_REPEAT_DIFFERENT"); //NOI18N
+                       this.showFacesMessage("form_edit_user:userPassword", "ADMIN_USER_PASSWORD_REPEAT_DIFFERENT", FacesMessage.SEVERITY_INFO); //NOI18N
                        return;
                } else if ((!Objects.equals(this.getUser().getUserName(), this.getUserName())) && (this.userBean.ifUserNameExists(this.getUserName()))) {
                        // Clear all fields
                        this.clear();
 
                        // User name already exists
-                       this.showFacesMessage("form_edit_user:userName", "ADMIN_USER_NAME_ALREADY_EXISTS"); //NOI18N
+                       this.showFacesMessage("form_edit_user:userName", "ADMIN_USER_NAME_ALREADY_EXISTS", FacesMessage.SEVERITY_WARN); //NOI18N
                        return;
                } else if (this.isSamePasswordEntered()) {
                        // Same password entered, create container
@@ -407,7 +419,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                                this.setUserPasswordRepeat(null);
 
                                // Same password entered
-                               this.showFacesMessage("form_edit_user:userPassword", "ADMIN_USER_ENTERED_SAME_AS_OLD_PASSWORD"); //NOI18N
+                               this.showFacesMessage("form_edit_user:userPassword", "ADMIN_USER_ENTERED_SAME_AS_OLD_PASSWORD", FacesMessage.SEVERITY_WARN); //NOI18N
                                return;
                        }
 
@@ -429,7 +441,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                final User updatedUser = this.userBean.updateUserData(this.getUser());
 
                // Fire event
-               this.updatedUserDataEvent.fire(new AdminUpdatedUserDataEvent(updatedUser));
+               this.updatedUserDataEvent.fire(new AdminPostUserDataUpdatedEvent(updatedUser));
        }
 
        /**
@@ -616,7 +628,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        throw new FacesException(new UserStatusLockedException(this.getUser()));
                } else if (this.getUser().getUserAccountStatus() == UserAccountStatus.UNCONFIRMED) {
                        // User account is locked
-                       throw new FaceletException(new UserStatusUnconfirmedException(this.getUser()));
+                       throw new FacesException(new UserStatusUnconfirmedException(this.getUser()));
                } else if (this.getUserLockReason() == null) {
                        // Throw NPE again
                        throw new NullPointerException("this.userLockReason is null"); //NOI18N
@@ -636,7 +648,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        updatedUser = this.adminUserBean.lockUserAccount(this.getUser(), this.getUserLockReason(), baseUrl);
                } catch (final UserStatusLockedException | UserStatusUnconfirmedException | UserNotFoundException ex) {
                        // Throw again
-                       throw new FaceletException(ex);
+                       throw new FacesException(ex);
                }
 
                // Fire event
@@ -671,7 +683,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        throw new FacesException(new UserStatusConfirmedException(this.getUser()));
                } else if (this.getUser().getUserAccountStatus() == UserAccountStatus.UNCONFIRMED) {
                        // User account is locked
-                       throw new FaceletException(new UserStatusUnconfirmedException(this.getUser()));
+                       throw new FacesException(new UserStatusUnconfirmedException(this.getUser()));
                }
 
                // Init updated user instance
@@ -685,7 +697,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        updatedUser = this.adminUserBean.unlockUserAccount(this.getUser(), baseUrl);
                } catch (final UserStatusConfirmedException | UserStatusUnconfirmedException | UserNotFoundException ex) {
                        // Throw again
-                       throw new FaceletException(ex);
+                       throw new FacesException(ex);
                }
 
                // Fire event
@@ -733,7 +745,7 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                        password = UserLoginUtils.createRandomPassword(JobsUserWebRequestController.MINIMUM_PASSWORD_LENGTH);
                } else if (!this.isSamePasswordEntered()) {
                        // Both passwords don't match
-                       throw new FaceletException(new UserPasswordRepeatMismatchException());
+                       throw new FacesException(new UserPasswordRepeatMismatchException());
                } else {
                        // Both match, so get it from this bean
                        password = this.getUserPassword();
@@ -753,7 +765,14 @@ public class JobsAdminUserWebRequestBean extends BaseJobsBean implements JobsAdm
                }
 
                // Create new instance
-               final User newUser = new LoginUser(this.getUserName(), this.getUserProfileMode(), this.getUserMustChangePassword(), UserLoginUtils.encryptPassword(password), UserAccountStatus.CONFIRMED, userContact);
+               final User newUser = new LoginUser(
+                                  this.getUserName(),
+                                  this.getUserProfileMode(),
+                                  this.getUserMustChangePassword(),
+                                  UserLoginUtils.encryptPassword(password),
+                                  UserAccountStatus.CONFIRMED,
+                                  userContact
+                  );
 
                // Get locale from view-root
                final Locale locale = FacesContext.getCurrentInstance().getViewRoot().getLocale();