Skip to content
Snippets Groups Projects
Commit 5f3e362b authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

A couple of user handling improvements and bugfixes

parent 3beaecb8
No related branches found
No related tags found
No related merge requests found
...@@ -203,7 +203,7 @@ public class UserController extends HttpServlet { ...@@ -203,7 +203,7 @@ public class UserController extends HttpServlet {
// Standard form validation // Standard form validation
FormValidation formValidation = FormValidator.validateForm("userForm",request,getServletContext()); FormValidation formValidation = FormValidator.validateForm("userForm",request,getServletContext());
// If new user: check if username already exists // If new user: check if username or email already exists
if(userId <= 0) if(userId <= 0)
{ {
try try
...@@ -220,6 +220,24 @@ public class UserController extends HttpServlet { ...@@ -220,6 +220,24 @@ public class UserController extends HttpServlet {
{ {
// All is well, proceed... // All is well, proceed...
} }
// Extra check: That user's email is not already in use
FormField emailField = formValidation.getFormField("email");
Boolean emailAlreadyInUse = false;
try
{
VipsLogicUser foundUser = userBean.getUserByEmail(emailField.getWebValue());
emailAlreadyInUse = (foundUser != null);
}
catch(NonUniqueResultException ex)
{
emailAlreadyInUse = true;
}
if(emailAlreadyInUse)
{
emailField.setValid(false);
emailField.setValidationMessage(SessionLocaleUtil.getI18nText(request, "emailAddressIsAlreadyInUse"));
}
} }
if(formValidation.isValid()) if(formValidation.isValid())
{ {
...@@ -282,6 +300,7 @@ public class UserController extends HttpServlet { ...@@ -282,6 +300,7 @@ public class UserController extends HttpServlet {
} }
else else
{ {
viewUser.setOrganizationId(user.getOrganizationId());
request.setAttribute("formValidation", formValidation); request.setAttribute("formValidation", formValidation);
request.setAttribute("viewUser", viewUser); request.setAttribute("viewUser", viewUser);
request.setAttribute("organizations", em.createNamedQuery("Organization.findAll").getResultList()); request.setAttribute("organizations", em.createNamedQuery("Organization.findAll").getResultList());
...@@ -465,7 +484,17 @@ public class UserController extends HttpServlet { ...@@ -465,7 +484,17 @@ public class UserController extends HttpServlet {
); );
// Extra check: That user's email is not already in use // Extra check: That user's email is not already in use
FormField emailField = formValidation.getFormField("email"); FormField emailField = formValidation.getFormField("email");
if(userBean.getUserByEmail(emailField.getWebValue()) != null) Boolean emailAlreadyInUse = false;
try
{
VipsLogicUser foundUser = userBean.getUserByEmail(emailField.getWebValue());
emailAlreadyInUse = (foundUser != null);
}
catch(NonUniqueResultException ex)
{
emailAlreadyInUse = true;
}
if(emailAlreadyInUse)
{ {
emailField.setValid(false); emailField.setValid(false);
emailField.setValidationMessage(SessionLocaleUtil.getI18nText(request, "emailAddressIsAlreadyInUse")); emailField.setValidationMessage(SessionLocaleUtil.getI18nText(request, "emailAddressIsAlreadyInUse"));
......
...@@ -50,6 +50,7 @@ import javax.ejb.LocalBean; ...@@ -50,6 +50,7 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.NoResultException; import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query; import javax.persistence.Query;
import no.nibio.vips.logic.authenticate.PasswordValidationException; import no.nibio.vips.logic.authenticate.PasswordValidationException;
...@@ -220,7 +221,7 @@ public class UserBean { ...@@ -220,7 +221,7 @@ public class UserBean {
* @param email * @param email
* @return The user, or null if no user with given email is registered * @return The user, or null if no user with given email is registered
*/ */
public VipsLogicUser getUserByEmail(String email) public VipsLogicUser getUserByEmail(String email) throws NonUniqueResultException
{ {
Query q = em.createNamedQuery("VipsLogicUser.findByEmail",VipsLogicUser.class); Query q = em.createNamedQuery("VipsLogicUser.findByEmail",VipsLogicUser.class);
q.setParameter("email", email); q.setParameter("email", email);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment