Refactored the code, addded google translator, and fixed some bugs

This commit is contained in:
Ziver Koc 2012-06-14 20:39:22 +00:00
parent 36cee77790
commit ed1505254d
20 changed files with 844 additions and 370 deletions

View file

@ -0,0 +1,41 @@
package zall.action;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
public class LoginAction extends ZalleryAction{
private static final Logger logger = LogUtil.getLogger();
public LoginAction() {
super("login");
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException {
user = User.load(request, response, db, request.getParameter("email"), request.getParameter("password") );
if( user != null ){
logger.info("Used user input to auth \""+user.getName()+"\"");
session.setAttribute("user", user);
if( out != null )
out.println("{ }");
}
else if(out != null) out.println("{ \"error\":\"Wrong username or password!\"}");
else msgs.add(MessageType.ERROR, "Wrong username or password!");
}
}

View file

@ -0,0 +1,51 @@
package zall.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.ZalleryAjax;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
public class RegisterAction extends ZalleryAction{
private static final Logger logger = LogUtil.getLogger();
public RegisterAction() {
super("register");
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
if( request.getParameter("email") == null ){
msgs.add(MessageType.ERROR, "Please provide a valid email!");
return;
}
if( User.emailExists(request.getParameter("email"), db) ){
msgs.add(MessageType.ERROR, "An account with that email already exists!");
return;
}
user = new User();
user.setEmail( request.getParameter("email") );
user.setPassword( request.getParameter("password") );
user.setName( request.getParameter("name") );
user.save(db);
ZalleryAjax.sendEmailVerification( user );
logger.info("Registered new user: "+user.getName()+".");
session.setAttribute("user", user);
if(out != null) out.println("{ \"id\":"+user.getId()+" }");
else msgs.add(MessageType.INFO, "Your account has successfully been created. A verification email has been sent to your email, please click the link to continue.");
}
}

View file

@ -0,0 +1,44 @@
package zall.action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zutil.db.DBConnection;
public abstract class ZalleryAction {
private final String actionId;
private final boolean requireUser;
public ZalleryAction(String actionId){
this(actionId, false);
}
public ZalleryAction(String actionId, boolean requireUser){
this.actionId = actionId;
this.requireUser = requireUser;
}
public abstract void handleRequest(
DBConnection db,
HttpServletRequest request,
HttpServletResponse response,
HttpSession session,
PrintWriter out,
User user,
UserMessage msgs) throws Exception;
public String getActionId(){
return actionId;
}
public boolean requireUser(){
return requireUser;
}
}

View file

@ -0,0 +1,49 @@
package zall.action.media;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Comment;
import zall.bean.Media;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class CommentAction extends ZalleryAction{
public CommentAction() {
super("comment", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Comments for media
if( request.getParameter("id") == null || request.getParameter("type") == null ){
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
long id = Long.parseLong(request.getParameter("id"));
Media media = Media.load(db, request.getParameter("type"), id);
Comment cm = new Comment();
cm.setUser( user );
cm.setMessage( request.getParameter("msg") );
media.addComment( cm );
media.save( db );
if( out != null ) out.println("{ }");
else msgs.add(MessageType.INFO, "Comment saved.");
}
}

View file

@ -0,0 +1,79 @@
package zall.action.media;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Folder;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
public class CreateFolderAction extends ZalleryAction{
private static final Logger logger = LogUtil.getLogger();
public CreateFolderAction() {
super("mkdir", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Create Folder
String path = request.getParameter("dir");
Folder folder = Folder.load(db, path, user);
logger.info( "Creating new folder: /"+user.getName()+"/"+path );
// parent folder
if( folder == null ){
String[] dirs = path.split("/");
Folder parent = Folder.loadRoot(db, user);
if( user.isSuperUser() && path.charAt(0) == '/' )
path = "";
else{
path = "/{NAME}";
// Get root folder
parent = Folder.load(db, path, user); // Get user root folder
if( parent == null ){ // Create root folder
parent = Folder.loadRoot(db, user); // get root folder
folder = new Folder();
folder.setUser( user );
folder.setParent( parent );
folder.setName( "{NAME}" );
folder.save( db );
parent = folder;
}
}
for(String dir : dirs){
if( dir.trim().isEmpty() ) // skip empty names
continue;
path += "/"+dir;
folder = Folder.load(db, path, user);
if(folder == null){ // create folder
folder = new Folder();
folder.setUser( user );
folder.setParent( parent );
folder.setName( dir );
folder.save( db );
}
parent = folder;
}
if(out != null) out.print( "{\"id\":"+folder.getId()+", \"name\":\""+folder.getPath()+"\"}" );
else msgs.add(MessageType.INFO, "Folder '"+path+"' has been successfully created.!");
}
else if(out != null) out.println("{\"error\":\"The folder '"+path+"' already exists!\"}");
else msgs.add(MessageType.ERROR, "The folder '"+path+"' already exists!");
return;
}
}

View file

@ -0,0 +1,54 @@
package zall.action.media;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Media;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class ModifyMediaAction extends ZalleryAction{
public ModifyMediaAction() {
super("modmedia", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Edit media information
if( request.getParameter("id") == null || request.getParameter("type") == null ){
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
long id = Long.parseLong(request.getParameter("id"));
Media media = Media.load(db, request.getParameter("type"), id);
if( media != null ){
if( user.canEdit(media) ){
media.setTitle( request.getParameter("title") );
media.setDescription( request.getParameter("description") );
media.save(db);
if(out != null) out.println("{}");
else msgs.add(MessageType.INFO, "Item edited successfully.");
}
else if(out != null) out.println("{ \"error\": \"You are not authorize to modify this item!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize to modify this item!");
}
else if(out != null) out.println("{ \"error\": \"No such item!\"}");
else msgs.add(MessageType.ERROR, "The item does not exist!");
}
}

View file

@ -0,0 +1,54 @@
package zall.action.media;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Folder;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class RemoveFolderAction extends ZalleryAction{
public RemoveFolderAction() {
super("rmdir", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
//Remove Media
if( request.getParameter("id") == null){
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
long id = Long.parseLong(request.getParameter("id"));
Folder folder = Folder.load(db, id);
if( folder != null ){
if( !folder.isEmpty(db) ){
if(out != null) out.println("{ \"error\": \"Folder is not empty!\"}");
else msgs.add(MessageType.ERROR, "Folder is not empty!");
} else if( user.canEdit(folder) ){
folder.delete( db );
if(out != null) out.println("{}");
else msgs.add(MessageType.INFO, "Folder removed successfully.");
}
else if(out != null) out.println("{ \"error\": \"You are not authorize to delete this folder!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize to delete this folder!");
}
else if(out != null) out.println("{ \"error\": \"No such folder!\"}");
else msgs.add(MessageType.ERROR, "The folder does not exist!");
}
}

View file

@ -0,0 +1,52 @@
package zall.action.media;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Media;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class RemoveMediaAction extends ZalleryAction{
public RemoveMediaAction() {
super("rmmedia", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Remove media
if( request.getParameter("id") == null || request.getParameter("type") == null ){
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
long id = Long.parseLong(request.getParameter("id"));
Media media = Media.load(db, request.getParameter("type"), id);
if( media != null ){
if( user.canEdit(media) ){
media.delete( db );
if(out != null) out.println("{}");
else msgs.add(MessageType.INFO, "Item removed successfully.");
}
else if(out != null) out.println("{ \"error\": \"You are not authorize to delete the item!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize to delete the item!");
}
else if(out != null) out.println("{ \"error\": \"No such item!\"}");
else msgs.add(MessageType.ERROR, "The item does not exist!");
}
}

View file

@ -0,0 +1,55 @@
package zall.action.media;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.Folder;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class TogglePrivateAction extends ZalleryAction{
public TogglePrivateAction() {
super("mkprivate", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Toggle folder private
if( request.getParameter("id") == null){
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
long id = Long.parseLong(request.getParameter("id"));
Folder folder = Folder.load(db, id);
if( folder != null ){
if( user.canEdit(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

@ -0,0 +1,65 @@
package zall.action.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.Zallery;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.Email;
import zall.util.Email.ContentType;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class ModifyUserAction extends ZalleryAction{
public ModifyUserAction() {
super("moduserstat", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Administration things of users
if( user.isSuperUser() ){
User target_user = User.load(db, Long.parseLong( request.getParameter("id") ) );
// Enable user
if( request.getParameter("enable") != null ){
target_user.setEnabled( true );
// Email the user about the activation
Email email = new Email("admin@koc.se", target_user.getEmail());
email.setSubject("Account activation at "+Zallery.getWebsiteName());
email.setContentType(ContentType.HTML);
email.setMessage("Your account has now been activated by an admin. You can now login and use the site. " +
"<a href='"+Zallery.getWebsiteURL()+"'>"+Zallery.getWebsiteURL()+"</a>");
}
// Disable user, can not disable one self!
else if( request.getParameter("disable") != null && !user.equals( target_user ) )
target_user.setEnabled( false );
// Promote user to Admin
else if( request.getParameter("setadmin") != null )
target_user.setSuperUser( true );
// Degrade Admin to normal user, can not degrade one self!
else if( request.getParameter("unadmin") != null && !user.equals( target_user ) )
target_user.setSuperUser( false );
else{
if( out != null ) out.println("{ }");
return;
}
target_user.save(db);
if( out != null )
out.println("{ }");
else
msgs.add(MessageType.INFO, "Account changes saved.");
return;
}
}
}

View file

@ -0,0 +1,63 @@
package zall.action.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.ZalleryAjax;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class ModifyUserStatusAction extends ZalleryAction{
public ModifyUserStatusAction() {
super("moduser", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
User target_user = null;
if( request.getParameter("id") != null )
target_user = User.load(db, Long.parseLong( request.getParameter("id") ) );
else // set target user to the logged in user
target_user = user;
if( user.canEdit(target_user) ){
if( request.getParameter("email") != null )
target_user.setEmail( request.getParameter("email") );
if( request.getParameter("password") != null ){
if( target_user.getPassword() == null )
target_user.setPassword( request.getParameter("password") );
else if( request.getParameter("oldPassword") != null )
if( target_user.equalsPassword(request.getParameter("oldPassword")) )
target_user.setPassword( request.getParameter("password") );
else{
if(out != null) out.println("{ \"error\": \"Wrong password!\"}");
else msgs.add(MessageType.ERROR, "Wrong password!");
return;
}
}
if( request.getParameter("name") != null )
target_user.setName( request.getParameter("name") );
target_user.save(db);
if( !user.isEmailVerified() )
ZalleryAjax.sendEmailVerification( target_user );
if( out != null )
out.println("{ }");
else
msgs.add(MessageType.INFO, "Settings saved successfully.");
}
else if(out != null) out.println("{ \"error\": \"You are not authorize to change these values!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize to change these values!");
}
}

View file

@ -0,0 +1,53 @@
package zall.action.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class RemoveUserAction extends ZalleryAction{
public RemoveUserAction() {
super("rmuser", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
// Remove user
User target_user = null;
if( request.getParameter("id") != null )
target_user = User.load(db, Long.parseLong( request.getParameter("id") ) );
else {
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
if( target_user != null ){
if( user.isSuperUser() ){
target_user.delete(db);
if( out != null ) out.println("{ }");
else msgs.add(MessageType.INFO, "User removed successfully.");
}
else if(out != null) out.println("{ \"error\": \"You are not authorize to delete that user!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize to delete that user!");
}
else {
if(out != null) out.println("{ \"error\": \"No such user!\"}");
else msgs.add(MessageType.ERROR, "No such user!");
}
}
}

View file

@ -0,0 +1,57 @@
package zall.action.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.ZalleryAjax;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
public class SendVerificationEmailAction extends ZalleryAction{
private static final Logger logger = LogUtil.getLogger();
public SendVerificationEmailAction() {
super("sendverfemail", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
User target_user = null;
if( request.getParameter("id") != null )
target_user = User.load(db, Long.parseLong( request.getParameter("id") ) );
else {
if(out != null) out.println("{ \"error\": \"Missing parameters!\"}");
else msgs.add(MessageType.ERROR, "Missing parameters!");
return;
}
if( target_user != null ){
if( user.isSuperUser() ){
ZalleryAjax.sendEmailVerification(target_user);
logger.info("Verification email sent successfully to: "+user.getEmail());
if( out != null ) out.println("{ }");
else msgs.add(MessageType.INFO, "Verification email sent successfully.");
}
else if(out != null) out.println("{ \"error\": \"You are not authorize send verification emails!\"}");
else msgs.add(MessageType.ERROR, "You are not authorize send verification emails!");
}
else {
if(out != null) out.println("{ \"error\": \"No such user!\"}");
else msgs.add(MessageType.ERROR, "No such user!");
}
}
}

View file

@ -0,0 +1,45 @@
package zall.action.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import zall.ZalleryAjax;
import zall.action.ZalleryAction;
import zall.bean.User;
import zall.util.msg.UserMessage;
import zall.util.msg.UserMessage.MessageType;
import zutil.db.DBConnection;
public class VerifyEmailAction extends ZalleryAction{
public VerifyEmailAction() {
super("verfemail", true);
}
@Override
public void handleRequest(DBConnection db, HttpServletRequest request, HttpServletResponse response, HttpSession session,
PrintWriter out, User user, UserMessage msgs) throws SQLException, IOException {
User verfuser = User.load(db, Long.parseLong(request.getParameter("id")));
if( verfuser.verifyEmail(request.getParameter("hash")) ){
if( verfuser.isEnabled() )
if(out != null) out.println("{ }");
else msgs.add(MessageType.INFO, "Your email has been successfully verified");
else {
ZalleryAjax.sendEmailNewUserToAdmin(verfuser, db);
if(out != null) out.println("{ }");
else msgs.add(MessageType.INFO, "Your email has been successfully verified, the account is waiting account activation by an admin.");
}
verfuser.save(db);
}
else if(out != null) out.println("{ \"error\":\"Invalid email verification hash!\" }");
else msgs.add(MessageType.ERROR, "Invalid email verification hash!");
}
}