Created zallery pages

This commit is contained in:
Ziver Koc 2018-07-23 16:55:28 +02:00
parent 8d5786d458
commit cd24ee74e3
31 changed files with 691 additions and 452 deletions

View file

@ -76,5 +76,6 @@
</library> </library>
</orderEntry> </orderEntry>
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" />
<orderEntry type="module" module-name="Zutil" />
</component> </component>
</module> </module>

View file

@ -24,9 +24,8 @@ import zall.bean.Media;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.manager.AuthenticationManager;
import zall.util.ZalleryEmail; import zall.util.ZalleryEmail;
import zutil.net.smtp.Email; import zall.util.UserMessage;
import zall.util.msg.UserMessage; import zall.util.UserMessage.MessageType;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;

View file

@ -0,0 +1,66 @@
package zall;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Logger;
public abstract class ZalleryServlet extends HttpServlet {
private static Logger logger = LogUtil.getLogger();
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) {
throw new ServletException(e);
} finally {
if (db != null) db.close();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
}
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) {
throw new ServletException(e);
} finally {
if (db != null) db.close();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
doGet(request, response, db);
}
public void include(String url, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/" + url);
if (dispatcher != null)
dispatcher.include(request, response);
}
public void forward(String url, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/" + url);
if (dispatcher != null)
dispatcher.forward(request, response);
}
}

View file

@ -9,18 +9,19 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import zall.bean.User; import zall.bean.User;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;
public class LoginAction extends ZalleryAction{ public class LoginAction extends ZalleryAction{
private static final Logger logger = LogUtil.getLogger(); private static final Logger logger = LogUtil.getLogger();
public LoginAction() { public LoginAction() {
super("login"); super("login");
} }
@Override @Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session, public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,

View file

@ -11,8 +11,8 @@ import javax.servlet.http.HttpSession;
import zall.bean.User; import zall.bean.User;
import zall.util.ZalleryEmail; import zall.util.ZalleryEmail;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;

View file

@ -7,7 +7,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import zall.bean.User; import zall.bean.User;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public abstract class ZalleryAction { public abstract class ZalleryAction {

View file

@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Comment; import zall.bean.Comment;
import zall.bean.Media; import zall.bean.Media;
import zall.bean.User; import zall.bean.User;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class CommentAction extends ZalleryAction{ public class CommentAction extends ZalleryAction{

View file

@ -12,8 +12,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction; import zall.action.ZalleryAction;
import zall.bean.Folder; import zall.bean.Folder;
import zall.bean.User; import zall.bean.User;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;

View file

@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Media; import zall.bean.Media;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.manager.AuthenticationManager;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class ModifyMediaAction extends ZalleryAction{ public class ModifyMediaAction extends ZalleryAction{

View file

@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Folder; import zall.bean.Folder;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.manager.AuthenticationManager;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class RemoveFolderAction extends ZalleryAction{ public class RemoveFolderAction extends ZalleryAction{

View file

@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.Media; import zall.bean.Media;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.manager.AuthenticationManager;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class RemoveMediaAction extends ZalleryAction{ public class RemoveMediaAction extends ZalleryAction{

View file

@ -11,12 +11,11 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction; import zall.action.ZalleryAction;
import zall.bean.Folder; import zall.bean.Folder;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.util.UserMessage;
import zall.util.msg.UserMessage; import zall.util.UserMessage.MessageType;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class TogglePrivateAction extends ZalleryAction{ public class TogglePrivateAction extends ZalleryAction {
public TogglePrivateAction() { public TogglePrivateAction() {
super("mkprivate", true); super("mkprivate", true);
@ -26,31 +25,14 @@ public class TogglePrivateAction extends ZalleryAction{
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session, public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException { PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Toggle folder private // Toggle folder private
if( request.getParameter("id") == null){ if (request.getParameter("id") == null) {
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}"); if (out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!"); else msgs.add(MessageType.ERROR, "Missing parameters!");
return; return;
} }
long id = Long.parseLong(request.getParameter("id")); long id = Long.parseLong(request.getParameter("id"));
Folder folder = Folder.load(db, id); Folder folder = Folder.load(db, id);
if( folder != null ){
if( AuthenticationManager.canEdit(user, folder) ){
folder.setPrivate( !folder.isPrivate() );
folder.save(db);
if(out != null) out.println("{}");
else{
if(folder.isPrivate()) msgs.add(MessageType.INFO, "Folder is now private (not visible to other users).");
else msgs.add(MessageType.INFO, "Folder is now public (can be viewed by other users).");
}
}
else if(out != null) out.println("{ \"error\": \"You are not authorize to edit this folder!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize to edit this folder!");
}
else if(out != null) out.println("{ \"error\": \"No such folder!\"}");
else msgs.add(MessageType.ERROR, "The folder does not exist!");
}
}
} }

View file

@ -8,14 +8,11 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import zall.Zallery;
import zall.action.ZalleryAction; import zall.action.ZalleryAction;
import zall.bean.User; import zall.bean.User;
import zall.util.ZalleryEmail; import zall.util.ZalleryEmail;
import zutil.net.smtp.Email; import zall.util.UserMessage;
import zutil.net.smtp.Email.ContentType; import zall.util.UserMessage.MessageType;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class ModifyUserAction extends ZalleryAction{ public class ModifyUserAction extends ZalleryAction{

View file

@ -12,8 +12,8 @@ import zall.action.ZalleryAction;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.manager.AuthenticationManager;
import zall.util.ZalleryEmail; import zall.util.ZalleryEmail;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class ModifyUserStatusAction extends ZalleryAction{ public class ModifyUserStatusAction extends ZalleryAction{

View file

@ -10,8 +10,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction; import zall.action.ZalleryAction;
import zall.bean.User; import zall.bean.User;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class RemoveUserAction extends ZalleryAction{ public class RemoveUserAction extends ZalleryAction{

View file

@ -12,8 +12,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction; import zall.action.ZalleryAction;
import zall.bean.User; import zall.bean.User;
import zall.util.ZalleryEmail; import zall.util.ZalleryEmail;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;

View file

@ -11,8 +11,8 @@ import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction; import zall.action.ZalleryAction;
import zall.bean.User; import zall.bean.User;
import zall.util.ZalleryEmail; import zall.util.ZalleryEmail;
import zall.util.msg.UserMessage; import zall.util.UserMessage;
import zall.util.msg.UserMessage.MessageType; import zall.util.UserMessage.MessageType;
import zutil.db.DBConnection; import zutil.db.DBConnection;
public class VerifyEmailAction extends ZalleryAction{ public class VerifyEmailAction extends ZalleryAction{

View file

@ -5,7 +5,6 @@ import zall.ZalleryConstant;
import zall.bean.Folder; import zall.bean.Folder;
import zall.bean.Media; import zall.bean.Media;
import zall.bean.User; import zall.bean.User;
import zall.util.msg.UserMessage;
import zutil.Hasher; import zutil.Hasher;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import zutil.log.LogUtil; import zutil.log.LogUtil;

View file

@ -0,0 +1,83 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.Folder;
import zall.bean.Media;
import zall.util.UserMessage;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Logger;
@WebServlet("/gallery")
public class GalleryServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException {
Folder folder;
if (request.getParameter("folder") != null && !request.getParameter("folder").equalsIgnoreCase("null"))
folder = Folder.load(db, Long.parseLong(request.getParameter("folder")));
else {
folder = Folder.loadRoot(db, user);
// Setup new root folder
if (folder == null) {
folder = Folder.genRoot();
folder.save(db);
}
}
List<Media> list = Media.load(db, folder);
List<Folder> subFolders = Folder.loadSubFolders(db, folder, user);
//session.setAttribute("user", user);
request.setAttribute("folder", folder);
request.setAttribute("subfolders", subFolders);
request.setAttribute("media", list);
include("header.jsp", request, response);
include("gallery.jsp", request, response);
include("footer.jsp", request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException {
UserMessage msgs = UserMessage.getUserMessage(request.getSession());
long id = Long.parseLong(request.getParameter("id"));
if (request.getParameter("id") == null) {
msgs.add(UserMessage.MessageType.ERROR, "Missing parameters!");
return;
}
long id = Long.parseLong(request.getParameter("id"));
Folder folder = Folder.load(db, id);
switch (request.getParameter("action")) {
// -----------------------------------------
// Toggle private mode
// -----------------------------------------
case "private":
if (folder != null) {
if (user.canEdit(folder)) {
folder.setPrivate(!folder.isPrivate());
folder.save(db);
if (folder.isPrivate())
msgs.add(UserMessage.MessageType.INFO, "Folder is now private (not visible to other users).");
else
msgs.add(UserMessage.MessageType.INFO, "Folder is now public (can be viewed by other users).");
} else
msgs.add(UserMessage.MessageType.ERROR, "You are not authorize to edit this folder!");
} else
msgs.add(UserMessage.MessageType.ERROR, "The folder does not exist!");
break;
}
}
}

48
src/zall/page/LoginServlet.java Executable file
View file

@ -0,0 +1,48 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.User;
import zall.manager.AuthenticationManager;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Logger;
import static zall.ZalleryConstant.SESSION_KEY_USER;
@WebServlet("/login")
public class LoginServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
private static final String JSP_FILE = "register.jsp";
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException {
include(JSP_FILE, request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, ServletException, IOException {
User user = AuthenticationManager.authenticate(db,
request.getParameter("email"),
request.getParameter("password"));
// Successfull login
if (user != null) {
user.registerOnHost(request, response, db, true );
request.getSession().setAttribute(SESSION_KEY_USER, user);
forward("/", request, response);
}
// Failed login
else {
include(JSP_FILE, request, response);
}
}
}

View file

@ -1,9 +1,8 @@
package zall.servlet; package zall.page;
import zall.ZalleryConstant; import zall.ZalleryServlet;
import zall.bean.User; import zall.bean.User;
import zall.manager.AuthenticationManager; import zall.manager.AuthenticationManager;
import zall.util.DbHttpServlet;
import zutil.db.DBConnection; import zutil.db.DBConnection;
import javax.servlet.annotation.WebServlet; import javax.servlet.annotation.WebServlet;
@ -18,9 +17,9 @@ import static zall.ZalleryConstant.SESSION_KEY_USER;
* *
*/ */
@WebServlet(urlPatterns = "/logout") @WebServlet(urlPatterns = "/logout")
public class LogoutServlet extends DbHttpServlet { public class LogoutServlet extends ZalleryServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws SQLException, IOException { public void doGet(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws SQLException, IOException {
User user = (User) req.getSession().getAttribute(SESSION_KEY_USER); User user = (User) req.getSession().getAttribute(SESSION_KEY_USER);
AuthenticationManager.reset(db, user); AuthenticationManager.reset(db, user);

93
src/zall/page/MediaServlet.java Executable file
View file

@ -0,0 +1,93 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.Comment;
import zall.bean.Media;
import zall.util.UserMessage;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
@WebServlet("/media")
public class MediaServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
UserMessage msgs = UserMessage.getUserMessage(request.getSession());
if (request.getParameter("id") == null && request.getParameter("type") == null) {
msgs.add(UserMessage.MessageType.ERROR, "Missing parameters!");
return;
}
try {
int id = Integer.parseInt(request.getParameter("id"));
Media media = Media.load(db, request.getParameter("type"), id);
request.setAttribute("media", media);
} catch (NumberFormatException e) {
logger.log(Level.FINE, "", e);
}
include("header.jsp", request, response);
include("media.jsp", request, response);
include("footer.jsp", request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException {
UserMessage msgs = UserMessage.getUserMessage(request.getSession());
long id = Long.parseLong(request.getParameter("id"));
if (request.getParameter("id") == null || request.getParameter("type") == null) {
msgs.add(UserMessage.MessageType.ERROR, "Missing parameters!");
return;
}
Media media = Media.load(db, request.getParameter("type"), id);
switch (request.getParameter("action")) {
// -----------------------------------------
// Comment
// -----------------------------------------
case "comment":
Comment cm = new Comment();
cm.setUser(user);
cm.setMessage(request.getParameter("msg"));
media.addComment(cm);
media.save(db);
msgs.add(UserMessage.MessageType.INFO, "Comment saved.");
break;
// -----------------------------------------
// Modify media
// -----------------------------------------
case "modify":
if (media != null) {
if (user.canEdit(media)) {
media.setTitle(request.getParameter("title"));
media.setDescription(request.getParameter("description"));
media.save(db);
msgs.add(UserMessage.MessageType.INFO, "Item edited successfully.");
} else
msgs.add(UserMessage.MessageType.ERROR, "You are not authorize to modify this item!");
} else
msgs.add(UserMessage.MessageType.ERROR, "The item does not exist!");
break;
}
}
}

View file

@ -0,0 +1,51 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.User;
import zall.util.UserMessage;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Logger;
@WebServlet("/profile")
public class ProfileServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException{
UserMessage msgs = UserMessage.getUserMessage(request.getSession());
try{
if(request.getParameter("id") != null){
User profile_user = User.load(db, Long.parseLong( request.getParameter("id") ));
if(user.canEdit(profile_user)){
request.setAttribute("profile_user", profile_user);
} else {
msgs.add(UserMessage.MessageType.ERROR, "You do not have permission to edit the user.");
}
} else {
request.setAttribute("profile_user", user);
}
include("header.jsp", request, response);
include("profile.jsp", request, response);
include("footer.jsp", request, response);
} catch (Exception e) {
logger.severe(e.getMessage());
throw new ServletException(e);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException {
}
}

View file

@ -0,0 +1,89 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.User;
import zall.util.ZalleryEmail;
import zall.util.UserMessage;
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.Locale;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import java.util.logging.Logger;
import static zall.ZalleryConstant.LANG_BASENAME;
@WebServlet("/register")
public class RegisterServlet extends ZalleryServlet {
private static 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";
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException {
include(JSP_FILE, request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, IOException, ServletException {
UserMessage msgHandler = UserMessage.getUserMessage(request.getSession());
ResourceBundle lang = PropertyResourceBundle.getBundle(LANG_BASENAME, Locale.getDefault());
/*
* 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)
msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.first_name_missing"));
if (lastName == null)
msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.last_name_missing"));
if (email == null)
msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.email_missing"));
if (password == null)
msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.password_missing"));
if (passwordRe == null)
msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.password_missing"));
else if (passwordRe.equals(password))
msgHandler.add(UserMessage.MessageType.ERROR, lang.getString("error.password_not_matching"));
if(User.load(db, (String)request.getAttribute(INPUT_ID_EMAIL)) != null){
msgHandler.add(UserMessage.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 );
request.getSession().setAttribute("user", user);
logger.info("Registered new user: "+user.getName()+".");
msgHandler.add(UserMessage.MessageType.INFO,
lang.getString("info.account_created") + lang.getString("info.verification_email_sent"));
include(JSP_FILE, request, response);
}
}

View file

@ -0,0 +1,35 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.Image;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Logger;
@WebServlet("/slideshow")
public class SlideshowServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
Image image = Image.load(db, Integer.parseInt(request.getParameter("id")));
request.setAttribute("image", image);
List<Image> list = Image.loadFolder(db, image.getFolder());
request.setAttribute("image", image);
request.setAttribute("images", list);
include("header.jsp", request, response);
include("slideshow.jsp", request, response);
include("footer.jsp", request, response);
}
}

View file

@ -0,0 +1,31 @@
package zall.page;
import zall.ZalleryServlet;
import zall.bean.User;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Logger;
@WebServlet("/register")
public class UserListServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
List<User> users = User.load(db);
request.setAttribute("users", users);
include("header.jsp", request, response);
include("users.jsp", request, response);
include("footer.jsp", request, response);
}
}

View file

@ -1,49 +0,0 @@
package zall.servlet;
import zall.bean.User;
import zall.manager.AuthenticationManager;
import zall.util.DbHttpServlet;
import zutil.db.DBConnection;
import javax.servlet.RequestDispatcher;
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 static zall.ZalleryConstant.SESSION_KEY_USER;
/**
*
*/
@WebServlet(urlPatterns = "/login")
public class LoginServlet extends DbHttpServlet {
private static final String JSP_FILE = "login.jsp";
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
getServletContext().getRequestDispatcher("/" + JSP_FILE).include(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp, DBConnection db) throws ServletException, IOException, SQLException {
User user = AuthenticationManager.authenticate(db,
req.getParameter("email"),
req.getParameter("password"));
// Successfull login
if (user != null) {
user.registerOnHost(req, resp, db, true );
req.getSession().setAttribute(SESSION_KEY_USER, user);
getServletContext().getRequestDispatcher("/").forward(req, resp);
}
// Failed login
else {
getServletContext().getRequestDispatcher("/" + JSP_FILE).include(req, resp);
}
}
}

View file

@ -1,93 +0,0 @@
package zall.servlet;
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.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 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);
}
}

View file

@ -1,69 +0,0 @@
package zall.util;
import zall.bean.Folder;
import zall.bean.Image;
import zall.bean.Media;
import zall.bean.User;
import zall.manager.AuthenticationManager;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
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.*;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
public abstract class DbHttpServlet extends HttpServlet{
private static Logger logger = LogUtil.getLogger();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DBConnection db = null;
try{
doGet(request, response, db = getDB());
} catch (SQLException e) {
throw new IOException(e);
} finally{
if(db != null) db.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db)
throws ServletException, IOException, SQLException { }
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DBConnection db = null;
try{
doPost(request, response, db = getDB());
} catch (SQLException e) {
throw new IOException(e);
} finally{
if(db != null) db.close();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db)
throws ServletException, IOException, SQLException { }
public static DBConnection getDB() throws ServletException{
try {
return new DBConnection("jdbc/mysql");
} catch (Exception e) {
throw new ServletException(e);
}
}
}

View file

@ -1,147 +1,147 @@
package zall.util.msg; package zall.util;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Queue; import java.util.Queue;
import java.util.logging.Logger; import java.util.logging.Logger;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import zutil.log.LogUtil; import zutil.log.LogUtil;
/** /**
* This class represents all the messages to a single user. * This class represents all the messages to a single user.
* The class is implemented as an Iterator. * The class is implemented as an Iterator.
* *
* <XMP> * <XMP>
* Example HTML: * Example HTML:
* *
<SCRIPT type="text/javascript"> <SCRIPT type="text/javascript">
jQuery(document).ready(function(){ jQuery(document).ready(function(){
jQuery(".message").click(function(){ jQuery(".message").click(function(){
jQuery(this).animate({ jQuery(this).animate({
opacity: 0 opacity: 0
}, 300).animate({ }, 300).animate({
height: 0, height: 0,
border: 0 border: 0
}, 300, function(){ }, 300, function(){
jQuery(this).css("display","none"); jQuery(this).css("display","none");
}); });
}); });
}); });
</SCRIPT> </SCRIPT>
<div class="menu"> <div class="menu">
<div class="message" style="border: 2px solid #E6E600; padding: 0px; margin: 5px; background: #FFFF99 none repeat scroll 0%; font-size: 11px; color: black; border-radius: 7px;"> <div class="message" style="border: 2px solid #E6E600; padding: 0px; margin: 5px; background: #FFFF99 none repeat scroll 0%; font-size: 11px; color: black; border-radius: 7px;">
<center><b>Warning:</b></center> <center><b>Warning:</b></center>
</div> </div>
<div class="message" style="border: 2px solid #FF0000; padding: 0px; margin: 5px; background: #FFDDCC none repeat scroll 0%; font-size: 11px; color: black; border-radius: 7px;"> <div class="message" style="border: 2px solid #FF0000; padding: 0px; margin: 5px; background: #FFDDCC none repeat scroll 0%; font-size: 11px; color: black; border-radius: 7px;">
<center><b>Error:</b></center> <center><b>Error:</b></center>
</div> </div>
<div class="message" style="border: 2px solid #039C00; padding: 0px; margin: 5px; background: #9BFB66 none repeat scroll 0%; font-size: 11px; color: black; border-radius: 7px;"> <div class="message" style="border: 2px solid #039C00; padding: 0px; margin: 5px; background: #9BFB66 none repeat scroll 0%; font-size: 11px; color: black; border-radius: 7px;">
<center><b>Info:</b></center> <center><b>Info:</b></center>
</div> </div>
</div> </div>
* *
* </XMP> * </XMP>
* *
* @author Ziver * @author Ziver
*/ */
public class UserMessage{ public class UserMessage{
public static final Logger logger = LogUtil.getLogger(); public static final Logger logger = LogUtil.getLogger();
public static final String SESSION_USERMESSAGE_KEY = "AJAX_USER_MESSAGES"; public static final String SESSION_USERMESSAGE_KEY = "AJAX_USER_MESSAGES";
/** /**
* Is the different types of messages * Is the different types of messages
*/ */
public enum MessageType{ public enum MessageType{
ERROR, WARNING, INFO ERROR, WARNING, INFO
} }
/** /**
* This class represents a single message to a user * This class represents a single message to a user
*/ */
protected class Message{ protected class Message{
MessageType type; MessageType type;
String msg; String msg;
} }
/** is the queue that contains the messages **/ /** is the queue that contains the messages **/
private Queue<Message> msg_queue; private Queue<Message> msg_queue;
/** is the current message **/ /** is the current message **/
private Message current; private Message current;
public UserMessage(){ public UserMessage(){
msg_queue = new LinkedList<Message>(); msg_queue = new LinkedList<>();
} }
//******** Queue methods //******** Queue methods
/** /**
* Adds a new message to the queue * Adds a new message to the queue
* *
* @param type is the type of the message * @param type is the type of the message
* @param msg is the message itself * @param msg is the message itself
*/ */
public void add(MessageType type, String msg){ public void add(MessageType type, String msg){
Message m = new Message(); Message m = new Message();
m.type = type; m.type = type;
m.msg = msg; m.msg = msg;
msg_queue.add( m ); msg_queue.add( m );
logger.finer("Queueing(Size: "+msg_queue.size()+") user message: "+type+"= \""+msg+"\""); logger.finer("Queueing(Size: "+msg_queue.size()+") user message: "+type+"= \""+msg+"\"");
} }
/** /**
* @return if there is more messages in the queue * @return if there is more messages in the queue
*/ */
public boolean hasNext(){ public boolean hasNext(){
return msg_queue.size() != 0; return msg_queue.size() != 0;
} }
/** /**
* Polls a new message from the Queue * Polls a new message from the Queue
* *
* @return if the poll was successful * @return if the poll was successful
*/ */
public boolean next(){ public boolean next(){
boolean tmp = hasNext(); boolean tmp = hasNext();
current = msg_queue.poll(); current = msg_queue.poll();
return tmp; return tmp;
} }
public int size(){ public int size(){
return msg_queue.size(); return msg_queue.size();
} }
public void clear(){ public void clear(){
msg_queue.clear(); msg_queue.clear();
} }
//******** Message Methods //******** Message Methods
/** /**
* @return the type of the current message * @return the type of the current message
*/ */
public MessageType getType(){ public MessageType getType(){
return current.type; return current.type;
} }
/** /**
* @return the message of the current one * @return the message of the current one
*/ */
public String getMessage(){ public String getMessage(){
return current.msg; return current.msg;
} }
//******** Static methods //******** Static methods
public static UserMessage getUserMessage(HttpSession session){ public static UserMessage getUserMessage(HttpSession session){
if( session.getAttribute(SESSION_USERMESSAGE_KEY) == null ){ if( session.getAttribute(SESSION_USERMESSAGE_KEY) == null ){
UserMessage msg = new UserMessage(); UserMessage msg = new UserMessage();
msg.setSession( session ); msg.setSession( session );
return msg; return msg;
} }
return (UserMessage) session.getAttribute(SESSION_USERMESSAGE_KEY); return (UserMessage) session.getAttribute(SESSION_USERMESSAGE_KEY);
} }
public void setSession(HttpSession session) { public void setSession(HttpSession session) {
session.setAttribute(SESSION_USERMESSAGE_KEY, this); session.setAttribute(SESSION_USERMESSAGE_KEY, this);
} }
} }

View file

@ -1,24 +0,0 @@
package zall.util.msg;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* This class reads a get request and returns all messages
* to that user as JSON.
*
* @author Ziver
*/
public class AjaxUserMessageServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
/**
* Ajax request
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
}
}