diff --git a/WebContent/page_register.jsp b/WebContent/page_register.jsp index 0b4ee7f..e680e38 100755 --- a/WebContent/page_register.jsp +++ b/WebContent/page_register.jsp @@ -17,24 +17,29 @@
- - + +
- - + +
- - + +
- - + + +
+
+ +
diff --git a/src/zall/ZalleryConstant.java b/src/zall/ZalleryConstant.java index 620558f..c67bf23 100755 --- a/src/zall/ZalleryConstant.java +++ b/src/zall/ZalleryConstant.java @@ -9,4 +9,9 @@ public interface ZalleryConstant { String SESSION_KEY_USER = "zal_user"; String SESSION_KEY_AUTH_HASH = "zal_session_hash"; + + /** Language Key Constants **/ + + String LANG_BASENAME = "zallery_lang"; + } diff --git a/src/zall/filter/AuthenticationFilter.java b/src/zall/filter/AuthenticationFilter.java index 4ccc582..e20367d 100755 --- a/src/zall/filter/AuthenticationFilter.java +++ b/src/zall/filter/AuthenticationFilter.java @@ -27,7 +27,7 @@ public class AuthenticationFilter implements Filter { User user = null; // continue the request via the filter pipeline if it is login page or it is a valid User - if (requestURI.equals(LOGIN_URI) || AuthenticationManager.valid(user)) { + if (requestURI.equals(LOGIN_URI) || AuthenticationManager.valid(user, (HttpServletRequest) request)) { chain.doFilter(request, response); } else { // do not continue the filter pipeline but respond back to client diff --git a/src/zall/lang/zallery_lang_en.properties b/src/zall/lang/zallery_lang_en.properties new file mode 100755 index 0000000..99c9ac2 --- /dev/null +++ b/src/zall/lang/zallery_lang_en.properties @@ -0,0 +1,4 @@ +error.email_exsists=An account with that email already exists! +error.first_name_missing="Please provide a valid First Name!" +info.verification_email_sent="A verification email has been sent, please click the link to continue." +info.account_created="Your account has successfully been created." \ No newline at end of file diff --git a/src/zall/servlet/RegisterServlet.java b/src/zall/servlet/RegisterServlet.java index 591c3aa..4d16c3d 100755 --- a/src/zall/servlet/RegisterServlet.java +++ b/src/zall/servlet/RegisterServlet.java @@ -1,21 +1,93 @@ package zall.servlet; -import javax.servlet.RequestDispatcher; +import zall.bean.User; +import zall.util.DbHttpServlet; +import zall.util.ZalleryEmail; +import zall.util.msg.UserMessage; +import zall.util.msg.UserMessage.MessageType; +import zutil.db.DBConnection; +import zutil.log.LogUtil; + import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.sql.SQLException; +import java.util.Locale; +import java.util.PropertyResourceBundle; +import java.util.ResourceBundle; +import java.util.logging.Logger; + +import static zall.ZalleryConstant.*; /** * */ @WebServlet(urlPatterns = "/register") -public class RegisterServlet extends HttpServlet { +public class RegisterServlet extends DbHttpServlet { + private static final Logger logger = LogUtil.getLogger(); + private static final String JSP_FILE = "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"; + + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { getServletContext().getRequestDispatcher("/"+JSP_FILE).include(req, resp); } + + protected void doGet(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws ServletException, IOException, SQLException { + UserMessage msgHandler = UserMessage.getUserMessage(req.getSession()); + ResourceBundle lang = PropertyResourceBundle.getBundle(LANG_BASENAME, Locale.getDefault()); + + /* + * Check inputs + */ + + String firstName = (String)req.getAttribute(INPUT_ID_FIRST_NAME); + String lastName = (String)req.getAttribute(INPUT_ID_LAST_NAME); + String email = (String)req.getAttribute(INPUT_ID_EMAIL); + String password = (String)req.getAttribute(INPUT_ID_PASSWORD); + String passwordRe = (String)req.getAttribute(INPUT_ID_PASSWORD_REPEATE); + + if (firstName == null) + msgHandler.add(MessageType.ERROR, lang.getString("error.first_name_missing")); + if (lastName == null) + msgHandler.add(MessageType.ERROR, lang.getString("error.last_name_missing")); + if (email == null) + msgHandler.add(MessageType.ERROR, lang.getString("error.email_missing")); + if (password == null) + msgHandler.add(MessageType.ERROR, lang.getString("error.password_missing")); + if (passwordRe == null) + msgHandler.add(MessageType.ERROR, lang.getString("error.password_missing")); + else if (passwordRe.equals(password)) + msgHandler.add(MessageType.ERROR, lang.getString("error.password_not_matching")); + + if(User.load(db, (String)req.getAttribute(INPUT_ID_EMAIL)) != null){ + msgHandler.add(MessageType.ERROR, lang.getString("error.email_exsists")); + return; + } + + /* + * Create new user + */ + + User user = new User(); + user.setName(firstName + " " + lastName); + user.setEmail(email); + user.setPassword(password); + user.save(db); + ZalleryEmail.sendVerificationEmail( user ); + req.getSession().setAttribute("user", user); + logger.info("Registered new user: "+user.getName()+"."); + msgHandler.add(MessageType.INFO, + lang.getString("info.account_created") + lang.getString("info.verification_email_sent")); + + getServletContext().getRequestDispatcher("/"+JSP_FILE).include(req, resp); + } }