From f7c567c204bfd1adc9f4be97823fa3239dda7923 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Fri, 13 May 2016 10:36:02 +0200 Subject: [PATCH] Fix for multi-page registration: - a contact instance is needed to check for email address as it is stored there - so first create a "half" contact instance (no gender, ...) and then check email address - user name can be only checked, if required MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- ...AddressbookUserRegisterWebSessionBean.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/java/org/mxchange/addressbook/beans/register/AddressbookUserRegisterWebSessionBean.java b/src/java/org/mxchange/addressbook/beans/register/AddressbookUserRegisterWebSessionBean.java index 638954b2..f68c0532 100644 --- a/src/java/org/mxchange/addressbook/beans/register/AddressbookUserRegisterWebSessionBean.java +++ b/src/java/org/mxchange/addressbook/beans/register/AddressbookUserRegisterWebSessionBean.java @@ -31,6 +31,8 @@ import org.mxchange.addressbook.beans.BaseAddressbookController; import org.mxchange.addressbook.beans.contact.AddressbookContactWebSessionController; import org.mxchange.addressbook.beans.user.AddressbookAdminUserWebRequestController; import org.mxchange.addressbook.beans.user.AddressbookUserWebSessionController; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.contact.UserContact; import org.mxchange.jusercore.events.registration.RegisteredUserEvent; import org.mxchange.jusercore.events.registration.UserRegisteredEvent; import org.mxchange.jusercore.exceptions.DataRepeatMismatchException; @@ -165,21 +167,31 @@ public class AddressbookUserRegisterWebSessionBean extends BaseAddressbookContro // Get user instance User user = this.userController.createUserInstance(); - // Page 1 has only email address and maybe user name + // First check if user is not null and user name is not used + if same email address is entered if (null == user) { // user must be set throw new NullPointerException("user is null after createUserInstance() was called"); //NOI18N } else if ((this.userController.isUserNameRequired()) && (this.userController.isUserNameRegistered(user))) { // User name is already used throw new FaceletException(new UserNameAlreadyRegisteredException(user)); - } else if (this.contactController.isEmailAddressRegistered(user.getUserContact())) { - // Email address has already been taken - throw new FaceletException(new EmailAddressAlreadyRegisteredException(user)); } else if (!this.contactController.isSameEmailAddressEntered()) { // Not same email address entered throw new FaceletException(new DataRepeatMismatchException(MessageFormat.format("Email addresses not matching: {0} != {1}", this.contactController.getEmailAddress(), this.contactController.getEmailAddressRepeat()))); //NOI18N } + // Create half contact instance with email address + Contact contact = new UserContact(); + contact.setContactEmailAddress(this.contactController.getEmailAddress()); + + // Set contact in user + user.setUserContact(contact); + + // Check if email address is registered + if (this.contactController.isEmailAddressRegistered(user.getUserContact())) { + // Email address has already been taken + throw new FaceletException(new EmailAddressAlreadyRegisteredException(user)); + } + // Now only redirect to next page as the JSF does it return "register_page2"; //NOI18N } -- 2.39.5