package org.mxchange.addressbook.beans.resendlink;
import java.text.MessageFormat;
-import java.util.Locale;
import javax.enterprise.context.SessionScoped;
-import javax.faces.context.FacesContext;
import javax.faces.view.facelets.FaceletException;
import javax.inject.Inject;
import javax.inject.Named;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.mxchange.addressbook.beans.BaseAddressbookController;
+import org.mxchange.addressbook.beans.localization.AddressbookLocalizationSessionController;
import org.mxchange.addressbook.beans.user.AddressbookUserWebSessionController;
import org.mxchange.jcoreee.utils.FacesUtils;
import org.mxchange.jusercore.exceptions.UserEmailAddressNotFoundException;
+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;
/**
* A web session bean for resending confirmation link
private ResendLinkSessionBeanRemote emailBean;
/**
- * User controller
+ * Localization controller
+ */
+ @Inject
+ private AddressbookLocalizationSessionController localizationController;
+
+ /**
+ * Regular user controller
*/
@Inject
private AddressbookUserWebSessionController userController;
throw new FaceletException(MessageFormat.format("this.emailAddress={0} should be resolveable into User instance.", this.getEmailAddress()), ex); //NOI18N
}
- // Get locale from faces context
- Locale locale = FacesContext.getCurrentInstance().getExternalContext().getRequestLocale();
+ // Is the user account already confirmed?
+ if (user.getUserAccountStatus() == UserAccountStatus.CONFIRMED) {
+ // Then abort here
+ throw new FaceletException(new UserStatusConfirmedException(user));
+ } else if (user.getUserAccountStatus() == UserAccountStatus.LOCKED) {
+ // User account is locked
+ throw new FaceletException(new UserStatusLockedException(user));
+ } 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();
// Call EJB and return redirect target
- this.emailBean.resendConfirmationLink(user, locale, baseUrl);
+ this.emailBean.resendConfirmationLink(user, this.localizationController.getLocale(), baseUrl);
// Clear this bean
this.clear();