X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2Fjava%2Forg%2Fmxchange%2Fjjobs%2Fbeans%2Fresendlink%2FJobsResendLinkWebSessionBean.java;h=d06de530ddf9a0a55a3dc23d65bc786f3f7cc24c;hb=d5fda2ab63061743d025611b5751a8346e11c698;hp=c394217a85f267243d035d9d6301aa9a53d096c3;hpb=771963bb3fc743e50a0c96030e0174113f682d29;p=jjobs-war.git
diff --git a/src/java/org/mxchange/jjobs/beans/resendlink/JobsResendLinkWebSessionBean.java b/src/java/org/mxchange/jjobs/beans/resendlink/JobsResendLinkWebSessionBean.java
index c394217a..d06de530 100644
--- a/src/java/org/mxchange/jjobs/beans/resendlink/JobsResendLinkWebSessionBean.java
+++ b/src/java/org/mxchange/jjobs/beans/resendlink/JobsResendLinkWebSessionBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2016 Roland Haeder
+ * Copyright (C) 2016 Roland Häder
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -17,17 +17,31 @@
package org.mxchange.jjobs.beans.resendlink;
import javax.enterprise.context.SessionScoped;
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.Any;
import javax.faces.view.facelets.FaceletException;
+import javax.inject.Inject;
import javax.inject.Named;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+import org.mxchange.jcoreee.utils.FacesUtils;
import org.mxchange.jjobs.beans.BaseJobsController;
+import org.mxchange.jjobs.beans.localization.JobsLocalizationSessionController;
+import org.mxchange.jjobs.beans.user.JobsUserWebSessionController;
+import org.mxchange.jusercore.events.resendlink.UserResendLinkAccountEvent;
+import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException;
+import org.mxchange.jusercore.exceptions.UserNotFoundException;
+import org.mxchange.jusercore.exceptions.UserStatusConfirmedException;
+import org.mxchange.jusercore.exceptions.UserStatusLockedException;
+import org.mxchange.jusercore.model.user.User;
+import org.mxchange.jusercore.model.user.status.UserAccountStatus;
+import org.mxchange.jusercore.events.resendlink.ObservableUserResendLinkAccountEvent;
/**
* A web session bean for resending confirmation link
*
- * @author Roland Haeder
+ * @author Roland Häder
*/
@Named ("resendController")
@SessionScoped
@@ -39,7 +53,7 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements
private static final long serialVersionUID = 186_078_724_659_153L;
/**
- * Email address 1 (changing)
+ * Email address
*/
private String emailAddress;
@@ -48,6 +62,25 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements
*/
private ResendLinkSessionBeanRemote emailBean;
+ /**
+ * Localization controller
+ */
+ @Inject
+ private JobsLocalizationSessionController localizationController;
+
+ /**
+ * Regular user controller
+ */
+ @Inject
+ private JobsUserWebSessionController userController;
+
+ /**
+ * Event being fired after confirmation link is being sent
+ */
+ @Inject
+ @Any
+ private Event userResendLinkEvent;
+
/**
* Default constructor
*/
@@ -67,7 +100,71 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements
@Override
public String doResendLink () {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ // The email address should not be empty as the JSF validates this
+ if (this.getEmailAddress() == null) {
+ // Throw NPE
+ throw new NullPointerException("this.emailAddress is null"); //NOI18N
+ }
+
+ // Init user instance
+ User user;
+
+ try {
+ // Is the email address really not used?
+ user = this.userController.lookupUserByEmailAddress(this.getEmailAddress());
+ } catch (final UserEmailAddressNotFoundException ex) {
+ // Always clear bean
+ this.clear();
+
+ // Not found, should not happen as the registered validator should find it
+ this.showFacesMessage("form_resend_link:", "ERROR_USER_EMAIL_ADDRESS_NOT_FOUND"); //NOI18N
+ return ""; //NOI18N
+ }
+
+ // Is the user account already confirmed?
+ if (user.getUserAccountStatus() == UserAccountStatus.CONFIRMED) {
+ // Always clear bean
+ this.clear();
+
+ // Then abort here
+ this.showFacesMessage("form_resend_link:resendEmailAddress", "ERROR_USER_STATUS_ALREADY_CONFIRMED"); //NOI18N
+ return ""; //NOI18N
+ } else if (user.getUserAccountStatus() == UserAccountStatus.LOCKED) {
+ // Always clear bean
+ this.clear();
+
+ // User account is locked
+ this.showFacesMessage("form_resend_link:resendEmailAddress", "ERROR_USER_STATUS_LOCKED"); //NOI18N
+ return ""; //NOI18N
+ } else if (user.getUserConfirmKey() == null) {
+ // Status is UNCONFIRMED but confirmation key is NULL
+ throw new NullPointerException("user.userConfirmKey is null"); //NOI18N
+ }
+
+ try {
+ // Get base URL
+ String baseUrl = FacesUtils.generateBaseUrl();
+
+ // Call EJB and return redirect target
+ this.emailBean.resendConfirmationLink(user, this.localizationController.getLocale(), baseUrl);
+ } catch (final UserNotFoundException ex) {
+ // User not found
+ this.showFacesMessage("form_resend_link:resendEmailAddress", "ERROR_USER_NOT_FOUND"); //NOI18N
+ return ""; //NOI18N
+ } catch (final UserStatusLockedException | UserStatusConfirmedException ex) {
+ // Output message, this should not happen as the confirmation key is being removed
+ this.showFacesMessage("form_resend_link:resendEmailAddress", ex); //NOI18N
+ return ""; //NOI18N
+ }
+
+ // Fire event
+ this.userResendLinkEvent.fire(new UserResendLinkAccountEvent(user));
+
+ // Clear this bean
+ this.clear();
+
+ // Return redirect target
+ return "user_resend_done"; //NOI18N
}
@Override