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=57581f6973bed8fb051be69e56e595f110d6c7ac;hpb=ca6c93d87db2733e5ce92809a2a6b7731c0757fb;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 57581f69..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 @@ -16,10 +16,9 @@ */ package org.mxchange.jjobs.beans.resendlink; -import java.text.MessageFormat; -import java.util.Locale; import javax.enterprise.context.SessionScoped; -import javax.faces.context.FacesContext; +import javax.enterprise.event.Event; +import javax.enterprise.inject.Any; import javax.faces.view.facelets.FaceletException; import javax.inject.Inject; import javax.inject.Named; @@ -28,14 +27,21 @@ 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 @@ -47,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; @@ -57,11 +63,24 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements private ResendLinkSessionBeanRemote emailBean; /** - * User controller + * 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 */ @@ -94,24 +113,58 @@ public class JobsResendLinkWebSessionBean extends BaseJobsController implements // Is the email address really not used? user = this.userController.lookupUserByEmailAddress(this.getEmailAddress()); } catch (final UserEmailAddressNotFoundException ex) { - // Not found, should not happen as the registeredvalidator should find it - throw new FaceletException(MessageFormat.format("this.emailAddress={0} should be resolveable into User instance.", this.getEmailAddress()), ex); //NOI18N + // 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 } - // Get locale from faces context - Locale locale = FacesContext.getCurrentInstance().getExternalContext().getRequestLocale(); + // 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 + } - // Get base URL - String baseUrl = FacesUtils.generateBaseUrl(); + 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 + } - // Call EJB and return redirect target - String redirectTarget = this.emailBean.resendConfirmationLink(user, locale, baseUrl); + // Fire event + this.userResendLinkEvent.fire(new UserResendLinkAccountEvent(user)); // Clear this bean this.clear(); // Return redirect target - return redirectTarget; + return "user_resend_done"; //NOI18N } @Override