diff --git a/src/zall/Zallery.java b/src/zall/Zallery.java index c5c31c3..73e3cfb 100755 --- a/src/zall/Zallery.java +++ b/src/zall/Zallery.java @@ -1,31 +1,18 @@ package zall; -import java.io.File; -import java.io.IOException; -import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import zall.bean.Folder; -import zall.bean.Image; -import zall.bean.Media; -import zall.bean.User; -import zall.manager.AuthenticationManager; import zall.util.ZalleryEmail; -import zall.util.UserMessage; -import zall.util.UserMessage.MessageType; import zutil.db.DBConnection; import zutil.log.LogUtil; @@ -36,6 +23,9 @@ public class Zallery extends HttpServlet{ public static String WEBSITE_NAME = "Example.com"; public static String WEBSITE_URL = "http://example.com"; + public static String WEBSITE_EMAIL = "admin@example.com"; + public static String WEBSITE_EMAIL_NICE = "Example.com Admin"; + public static String SMTP_HOST = "localhost"; public static String ROOT_PATH = ""; public static String DATA_PATH = ""; @@ -56,12 +46,15 @@ public class Zallery extends HttpServlet{ if ("C:\\\\data".equals(context.lookup("java:comp/env/DATA_PATH"))) throw new ServletException("Zallery has not been properly configured, set proper configuration in Zallery.xml context file."); - WEBSITE_NAME = (String)context.lookup("java:comp/env/WEBSITE_NAME"); - WEBSITE_URL = (String)context.lookup("java:comp/env/WEBSITE_URL"); + WEBSITE_NAME = (String)context.lookup("java:comp/env/WEBSITE_NAME"); + WEBSITE_URL = (String)context.lookup("java:comp/env/WEBSITE_URL"); if( WEBSITE_URL.charAt(WEBSITE_URL.length()-1) != '/') WEBSITE_URL += "/"; - ZalleryEmail.setSMTPHost( (String)context.lookup("java:comp/env/SMTP_HOST") ); - DATA_PATH = (String)context.lookup("java:comp/env/DATA_PATH"); + + WEBSITE_EMAIL = (String)context.lookup("java:comp/env/WEBSITE_EMAIL"); + WEBSITE_EMAIL_NICE = (String)context.lookup("java:comp/env/WEBSITE_EMAIL_NICE"); + SMTP_HOST = (String)context.lookup("java:comp/env/WEBSITE_EMAIL_NICE"); + DATA_PATH = (String)context.lookup("java:comp/env/DATA_PATH"); LogUtil.setLevel("zall", Level.FINEST); //LogUtil.setLevel("zutil", Level.FINEST); diff --git a/src/zall/ZalleryServlet.java b/src/zall/ZalleryServlet.java index 1ff3b65..a91a6b6 100644 --- a/src/zall/ZalleryServlet.java +++ b/src/zall/ZalleryServlet.java @@ -24,9 +24,7 @@ public abstract class ZalleryServlet extends HttpServlet { public final void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { DBConnection db = null; try { - include("header.jsp", request, response); doGet(request, response, db = Zallery.getDB()); - include("footer.jsp", request, response); } catch (ServletException e) { throw e; } catch (Exception e) { @@ -42,9 +40,7 @@ public abstract class ZalleryServlet extends HttpServlet { public final void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException { DBConnection db = null; try { - include("header.jsp", request, response); doPost(request, response, db = Zallery.getDB()); - include("footer.jsp", request, response); } catch (ServletException e) { throw e; } catch (Exception e) { diff --git a/src/zall/filter/AuthenticationFilter.java b/src/zall/filter/AuthenticationFilter.java index e20367d..a7dc4e5 100755 --- a/src/zall/filter/AuthenticationFilter.java +++ b/src/zall/filter/AuthenticationFilter.java @@ -8,10 +8,9 @@ import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.Objects; /** - * This filter will check if user is valid if not will redirect to /login page + * This filter will check if user is isValid if not will redirect to /login page */ @WebFilter(urlPatterns = "/") public class AuthenticationFilter implements Filter { @@ -26,8 +25,8 @@ public class AuthenticationFilter implements Filter { String requestURI = ((HttpServletRequest) request).getRequestURI(); 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, (HttpServletRequest) request)) { + // continue the request via the filter pipeline if it is login page or it is a isValid User + if (requestURI.equals(LOGIN_URI) || AuthenticationManager.isValid(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 index 800c783..d91d9ce 100755 --- a/src/zall/lang/zallery_lang_en.properties +++ b/src/zall/lang/zallery_lang_en.properties @@ -16,4 +16,12 @@ error.not.found.last.name=Please provide a valid last name! error.not.found.email=Please provide a valid email! error.not.found.password=Please provide a valid password! error.incorrect.password.matching=Provided passwords do not match! -error.email_exists=An account with that email already exists! \ No newline at end of file +error.email_exists=An account with that email already exists! +email.activation.title=Account activation at +email.activation.body=Your account has now been activated. You can now login and use the site. +email.activation.request.title=New user activation request at +email.activation.request.body=A new user has registered for an account at +email.registration.title=Registration at +email.registration.body1=You receive this message because you have requested an account at +email.registration.body2=Please click the link below to verify your email address: +email.registration.body3=You will have to wait for an admin to activate your account after you have verified your email. \ No newline at end of file diff --git a/src/zall/manager/AuthenticationManager.java b/src/zall/manager/AuthenticationManager.java index 1677d6d..6ab84ec 100755 --- a/src/zall/manager/AuthenticationManager.java +++ b/src/zall/manager/AuthenticationManager.java @@ -55,9 +55,9 @@ public class AuthenticationManager { } /** - * @return true if the user has a valid authentication session + * @return true if the user has a isValid authentication session */ - public static boolean valid(User user, HttpServletRequest request) { + public static boolean isValid(User user, HttpServletRequest request) { if(user == null) return false; if(!user.isEnabled()) diff --git a/src/zall/page/GalleryServlet.java b/src/zall/page/GalleryServlet.java index c49e1ec..a525502 100755 --- a/src/zall/page/GalleryServlet.java +++ b/src/zall/page/GalleryServlet.java @@ -22,7 +22,7 @@ import java.util.logging.Logger; public class GalleryServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - public static final String JSP_FILE = "gallery.jsp"; + public static final String JSP_FILE = "page_gallery.jsp"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException { diff --git a/src/zall/page/LoginServlet.java b/src/zall/page/LoginServlet.java index 708c8ee..36f8083 100755 --- a/src/zall/page/LoginServlet.java +++ b/src/zall/page/LoginServlet.java @@ -19,7 +19,7 @@ import java.util.logging.Logger; public class LoginServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - private static final String JSP_FILE = "register.jsp"; + private static final String JSP_FILE = "page_login.jsp"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException { @@ -44,5 +44,7 @@ public class LoginServlet extends ZalleryServlet { else { msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.incorrect.user_or_pass")); } + + doGet(request, response, db); } } diff --git a/src/zall/page/MediaServlet.java b/src/zall/page/MediaServlet.java index 3700373..3d30fcb 100755 --- a/src/zall/page/MediaServlet.java +++ b/src/zall/page/MediaServlet.java @@ -22,7 +22,7 @@ import java.util.logging.Logger; public class MediaServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - private static final String JSP_FILE = "media.jsp"; + private static final String JSP_FILE = "page_media.jsp"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException { diff --git a/src/zall/page/ProfileServlet.java b/src/zall/page/ProfileServlet.java index ed9ea97..663add1 100755 --- a/src/zall/page/ProfileServlet.java +++ b/src/zall/page/ProfileServlet.java @@ -19,7 +19,7 @@ import java.util.logging.Logger; public class ProfileServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - private static final String JSP_FILE = "profile.jsp"; + private static final String JSP_FILE = "page_profile.jsp"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException, SQLException { @@ -42,7 +42,7 @@ public class ProfileServlet extends ZalleryServlet { } - public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException { - + public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException { + doGet(request, response, db); } } diff --git a/src/zall/page/RegisterServlet.java b/src/zall/page/RegisterServlet.java index 62ea8b8..d41ae4d 100755 --- a/src/zall/page/RegisterServlet.java +++ b/src/zall/page/RegisterServlet.java @@ -2,8 +2,10 @@ 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; @@ -18,7 +20,7 @@ import java.util.logging.Logger; public class RegisterServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - private static final String JSP_FILE = "register.jsp"; + 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"; @@ -27,7 +29,26 @@ public class RegisterServlet extends ZalleryServlet { private static final String INPUT_ID_PASSWORD_REPEATE = "password-re"; - public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException { + 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); } @@ -46,20 +67,20 @@ public class RegisterServlet extends ZalleryServlet { String passwordRe = (String)request.getAttribute(INPUT_ID_PASSWORD_REPEATE); if (firstName == null) - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.not.found.first.name")); + msgs.add(MessageType.ERROR, lang.getString("error.not.found.first.name")); if (lastName == null) - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.not.found.last.name")); + msgs.add(MessageType.ERROR, lang.getString("error.not.found.last.name")); if (email == null) - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.not.found.email")); + msgs.add(MessageType.ERROR, lang.getString("error.not.found.email")); if (password == null) - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.not.found.password")); + msgs.add(MessageType.ERROR, lang.getString("error.not.found.password")); if (passwordRe == null) - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.not.found.password")); + msgs.add(MessageType.ERROR, lang.getString("error.not.found.password")); else if (passwordRe.equals(password)) - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.incorrect.password.matching")); + msgs.add(MessageType.ERROR, lang.getString("error.incorrect.password.matching")); if(User.load(db, (String)request.getAttribute(INPUT_ID_EMAIL)) != null){ - msgs.add(UserMessage.MessageType.ERROR, lang.getString("error.email_exists")); + msgs.add(MessageType.ERROR, lang.getString("error.email_exists")); return; } @@ -75,9 +96,9 @@ public class RegisterServlet extends ZalleryServlet { ZalleryEmail.sendVerificationEmail( user ); request.getSession().setAttribute("user", user); logger.info("Registered new user: "+user.getName()+"."); - msgs.add(UserMessage.MessageType.INFO, + msgs.add(MessageType.INFO, lang.getString("info.created.account") + " " + lang.getString("info.sent.email.verification")); - include(JSP_FILE, request, response); + forward("/login", request, response); } } diff --git a/src/zall/page/SlideshowServlet.java b/src/zall/page/SlideshowServlet.java index d805b15..66c2a57 100755 --- a/src/zall/page/SlideshowServlet.java +++ b/src/zall/page/SlideshowServlet.java @@ -18,7 +18,7 @@ import java.util.logging.Logger; public class SlideshowServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - private static final String JSP_FILE = "slideshow.jsp"; + private static final String JSP_FILE = "page_slideshow.jsp"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException { diff --git a/src/zall/page/UserListServlet.java b/src/zall/page/UserListServlet.java index e1ee786..ffadb8d 100755 --- a/src/zall/page/UserListServlet.java +++ b/src/zall/page/UserListServlet.java @@ -18,7 +18,7 @@ import java.util.logging.Logger; public class UserListServlet extends ZalleryServlet { private static Logger logger = LogUtil.getLogger(); - private static final String JSP_FILE = "users.jsp"; + private static final String JSP_FILE = "page_users.jsp"; public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException { diff --git a/src/zall/transcoder/ZalleryTranscoder.java b/src/zall/transcoder/ZalleryTranscoder.java index 77941c0..cec3bc7 100755 --- a/src/zall/transcoder/ZalleryTranscoder.java +++ b/src/zall/transcoder/ZalleryTranscoder.java @@ -10,6 +10,7 @@ import java.util.logging.Logger; import javax.imageio.ImageIO; import javax.servlet.ServletConfig; +import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import com.xuggle.mediatool.IMediaReader; @@ -37,7 +38,7 @@ import zutil.StringUtil; import zutil.db.DBConnection; import zutil.log.LogUtil; - +@WebServlet(value = "/transcoder", loadOnStartup = 1) public class ZalleryTranscoder extends HttpServlet{ private static final Logger logger = LogUtil.getLogger(); private static final long serialVersionUID = 1L; @@ -48,11 +49,11 @@ public class ZalleryTranscoder extends HttpServlet{ public void init( ServletConfig config ){ try{ - transcodingQueue = new LinkedList