package com.example.listmaker.server.servlet; import ca.defuse.PasswordHash; import com.example.listmaker.common.domain.User; import com.example.listmaker.server.auth.LoginHelper; import com.example.listmaker.server.exception.DuplicateUserException; import com.example.listmaker.server.service.common.AppUserService; import com.example.listmaker.server.service.common.AppUserServiceFactory; import com.turbomanage.gwt.server.servlet.AuthFilter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import java.util.Date; public class NewUserServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String email = req.getParameter("email"); String firstName = req.getParameter("firstName"); String lastName = req.getParameter("lastName"); String password = req.getParameter("password"); User newUser = new User(); newUser.setDateCreated(new Date()); // TODO validation newUser.setEmailAddress(email); newUser.setFirstName(firstName); newUser.setLastName(lastName); try { String hash = PasswordHash.createHash(password); newUser.setPasswordHash(hash); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (InvalidKeySpecException e) { e.printStackTrace(); } AppUserService appUserService = AppUserServiceFactory.getAppUserService(); try { appUserService.registerUser(newUser); AuthFilter.login(newUser, null); resp.sendRedirect(LoginHelper.getAppUrl(req)); } catch (DuplicateUserException e) { resp.sendRedirect("/s/already_registered.html"); return; } } private boolean isAlphaNumeric(String s) { char[] sChars = s.toCharArray(); for (char c : sChars) { if (!Character.isLetterOrDigit(c)) return false; } return true; } }