package zall.page; import zall.ZalleryServlet; import zall.bean.User; import zall.util.UserMessage.MessageType; import zall.util.ZalleryEmail; import zall.util.UserMessage; import zutil.ObjectUtil; import zutil.db.DBConnection; import zutil.log.LogUtil; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; import java.sql.SQLException; import java.util.logging.Logger; @WebServlet(RegisterServlet.URI) public class RegisterServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); public static final String URI = "/register"; private static final String JSP_FILE = "page_register.jsp"; private static final String INPUT_ID_FIRST_NAME = "first-name"; private static final String INPUT_ID_LAST_NAME = "last-name"; private static final String INPUT_ID_EMAIL = "email"; private static final String INPUT_ID_PASSWORD = "password"; private static final String INPUT_ID_PASSWORD_REPEATE = "password-re"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException, SQLException { UserMessage msgs = UserMessage.getUserMessage(request.getSession()); // Verify email address String verifyEmailHash = request.getParameter("verifyemail"); if(!ObjectUtil.isEmpty(verifyEmailHash)){ User verfUser = User.load(db, Long.parseLong(request.getParameter("id"))); if (verfUser != null) { if( verfUser.verifyEmail(request.getParameter("hash")) ){ ZalleryEmail.sendNewUserRegistrationToAdmin(verfUser, db); verfUser.save(db); msgs.add(MessageType.INFO, "Your email has been successfully verified."); msgs.add(MessageType.WARNING, "The account is waiting account activation by an admin."); } else msgs.add(MessageType.ERROR, "Email verification failed!"); } else msgs.add(MessageType.ERROR, "Invalid user id: "+request.getParameter("id")); } include(JSP_FILE, request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException { UserMessage msgs = UserMessage.getUserMessage(request.getSession()); /* * Check inputs */ String firstName = (String)request.getAttribute(INPUT_ID_FIRST_NAME); String lastName = (String)request.getAttribute(INPUT_ID_LAST_NAME); String email = (String)request.getAttribute(INPUT_ID_EMAIL); String password = (String)request.getAttribute(INPUT_ID_PASSWORD); String passwordRe = (String)request.getAttribute(INPUT_ID_PASSWORD_REPEATE); if (firstName == null) msgs.add(MessageType.ERROR, lang.getString("error.not.found.first.name")); if (lastName == null) msgs.add(MessageType.ERROR, lang.getString("error.not.found.last.name")); if (email == null) msgs.add(MessageType.ERROR, lang.getString("error.not.found.email")); if (password == null) msgs.add(MessageType.ERROR, lang.getString("error.not.found.password")); if (passwordRe == null) msgs.add(MessageType.ERROR, lang.getString("error.not.found.password")); else if (passwordRe.equals(password)) msgs.add(MessageType.ERROR, lang.getString("error.incorrect.password.matching")); if(User.load(db, (String)request.getAttribute(INPUT_ID_EMAIL)) != null){ msgs.add(MessageType.ERROR, lang.getString("error.email_exists")); return; } /* * Create new user */ User user = new User(); user.setName(firstName + " " + lastName); user.setEmail(email); user.setPassword(password); user.save(db); ZalleryEmail.sendVerificationEmail( user ); request.getSession().setAttribute("user", user); logger.info("Registered new user: "+user.getName()+"."); msgs.add(MessageType.INFO, lang.getString("info.created.account") + " " + lang.getString("info.sent.email.verification")); forward("/login", request, response); } }