|
What this is
Other links
The source code/* * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/user/UserModuleProcessor.java,v 1.73.2.1 2005/05/20 08:52:56 minhnn Exp $ * $Author: minhnn $ * $Revision: 1.73.2.1 $ * $Date: 2005/05/20 08:52:56 $ * * ==================================================================== * * Copyright (C) 2002-2005 by MyVietnam.net * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * All copyright notices regarding mvnForum MUST remain intact * in the scripts and in the outputted HTML. * The "powered by" text/logo with a link back to * http://www.mvnForum.com and http://www.MyVietnam.net in the * footer of the pages MUST remain visible when the pages * are viewed on the internet or intranet. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Support can be obtained from support forums at: * http://www.mvnForum.com/mvnforum/index * * Correspondence and Marketing Questions can be sent to: * info@MyVietnam.net * * @author: Minh Nguyen minhnn@MyVietnam.net * @author: Mai Nguyen mai.nh@MyVietnam.net */ package com.mvnforum.user; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.*; import com.mvnforum.*; import com.mvnforum.auth.*; import com.mvnforum.common.MVNCaptchaService; import net.myvietnam.mvncore.exception.*; import net.myvietnam.mvncore.filter.DisableHtmlTagFilter; import net.myvietnam.mvncore.util.ParamUtil; import net.myvietnam.mvncore.util.StringUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class UserModuleProcessor { private static Log log = LogFactory.getLog(UserModuleProcessor.class); private final String ORIGINAL_REQUEST = "mvnforum.user.OriginalRequest"; private HttpServlet mainServlet = null; private ServletContext servletContext = null; private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance(); private UserModuleURLMapHandler urlMapHandler = new UserModuleURLMapHandler(); private ForumWebHandler forumWebHandler = new ForumWebHandler(); private ThreadWebHandler threadWebHandler = new ThreadWebHandler(); private PostWebHandler postWebHandler = new PostWebHandler(); private AttachmentWebHandler attachmentWebHandler = new AttachmentWebHandler(); private MemberWebHandler memberWebHandler = new MemberWebHandler(); private CompanyWebHandler companyWebHandler = new CompanyWebHandler(); private WatchWebHandler watchWebHandler = new WatchWebHandler(); private FavoriteThreadWebHandler favoriteThreadWebHandler = new FavoriteThreadWebHandler(); private MessageWebHandler messageWebHandler = new MessageWebHandler(); private PmAttachmentWebHandler pmAttachmentWebHandler = new PmAttachmentWebHandler(); private MessageFolderWebHandler messageFolderWebHandler = new MessageFolderWebHandler(); public UserModuleProcessor(HttpServlet servlet) { mainServlet = servlet; servletContext = servlet.getServletContext(); } public String process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { long start = 0; String requestURI = StringUtil.getEmptyStringIfNull(request.getPathInfo()); String responseURI = null; OnlineUser onlineUser = null; if (log.isDebugEnabled()) { start = System.currentTimeMillis(); log.debug("UserModuleProcessor : requestURI = " + requestURI); } // step 1: some command need to be processed before we do the URI mapping (of the MODAL) // MODAL processing try { onlineUser = onlineUserManager.getOnlineUser(request); onlineUser.updateNewMessageCount(false); if (requestURI.equals("/index")) { if (MVNForumConfig.getEnablePortalLikeIndexPage()) { forumWebHandler.prepareListIndex(request, requestURI);//no permission } else { forumWebHandler.prepareList(request, requestURI);//no permission } } else if (requestURI.equals("/listforums")) { forumWebHandler.prepareList(request, requestURI);//no permission } else if (requestURI.equals("/listthreads")) { threadWebHandler.prepareList_limit(request); } else if (requestURI.equals("/listrecentthreads")) { threadWebHandler.prepareListRecentThreads_limit(request);//no permission } else if (requestURI.equals("/viewthread")) { postWebHandler.prepareViewThread(request); } else if (requestURI.equals("/printthread")) { postWebHandler.prepareViewThread(request); } else if (requestURI.equals("/deletethread")) { threadWebHandler.prepareDelete(request); } else if (requestURI.equals("/deletethreadprocess")) { threadWebHandler.processDelete(request); } else if (requestURI.equals("/movethread")) { threadWebHandler.prepareMoveThread(request); } else if (requestURI.equals("/movethreadprocess")) { threadWebHandler.processMoveThread(request); } else if (requestURI.equals("/editthreadstatus")) { threadWebHandler.prepareEditThreadStatus(request); } else if (requestURI.equals("/editthreadstatusprocess")) { threadWebHandler.processEditThreadStatus(request); } else if (requestURI.equals("/editthreadtype")) { threadWebHandler.prepareEditThreadType(request); } else if (requestURI.equals("/editthreadtypeprocess")) { threadWebHandler.processEditThreadType(request); } else if (requestURI.equals("/modcp")) { threadWebHandler.prepareModerationControlPanel(request); } else if (requestURI.equals("/listrecentpendingthreads")) { threadWebHandler.prepareListRecentDisabledThreads_limit(request); } else if (requestURI.equals("/listthreadswithpendingposts")) { threadWebHandler.prepareListEnableThreadsWithPendingPosts_inForum_limit(request); } else if (requestURI.equals("/listrecentthreadswithpendingposts")) { threadWebHandler.prepareListRecentEnableThreadsWithPendingPosts_limit(request); } else if (requestURI.equals("/moderatependingthreads")) { threadWebHandler.prepareModeratePendingThreads_inForum_limit(request); } else if (requestURI.equals("/moderatependingthreadsprocess")) { threadWebHandler.processModeratePendingThreads(request); } else if (requestURI.equals("/moderatependingposts")) { postWebHandler.prepareModeratePendingPosts_limit(request); } else if (requestURI.equals("/moderatependingpostsprocess")) { postWebHandler.processModeratePendingPosts(request); } else if (requestURI.equals("/listpendingthreadsxml")) { threadWebHandler.prepareListDisabledThreads_limit_xml(request); } else if (requestURI.equals("/addpost")) { postWebHandler.prepareAdd(request, response); } else if (requestURI.equals("/addpostprocess")) { postWebHandler.processAdd(request, response); } else if (requestURI.equals("/editpost")) { postWebHandler.prepareEdit(request); } else if (requestURI.equals("/updatepost")) { postWebHandler.processUpdate(request); } else if (requestURI.equals("/printpost")) { postWebHandler.preparePrintPost(request); } else if (requestURI.equals("/deletepost")) { postWebHandler.prepareDelete(request); } else if (requestURI.equals("/deletepostprocess")) { postWebHandler.processDelete(request); } else if (requestURI.equals("/addattachment")) { attachmentWebHandler.prepareAdd(request); } else if (requestURI.equals("/addattachmentprocess")) { attachmentWebHandler.processAdd(request, response); } else if (requestURI.equals("/getattachment")) { attachmentWebHandler.downloadAttachment(request, response); return null;//download attachment, no further process is needed } else if (requestURI.equals("/deleteattachment")) { attachmentWebHandler.prepareDelete(request); } else if (requestURI.equals("/deleteattachmentprocess")) { attachmentWebHandler.processDelete(request); } else if (requestURI.equals("/editattachment")) { attachmentWebHandler.prepareEdit(request); } else if (requestURI.equals("/editattachmentprocess")) { attachmentWebHandler.processEdit(request); } else if (requestURI.equals("/myfavoritethread")) { threadWebHandler.prepareList_inFavorite(request); } else if (requestURI.equals("/addfavoritethreadprocess")) { favoriteThreadWebHandler.processAdd(request); } else if (requestURI.equals("/deletefavoritethreadprocess")) { favoriteThreadWebHandler.processDelete(request); } else if (requestURI.equals("/registermember")) { memberWebHandler.prepareAdd(request); } else if (requestURI.equals("/registermemberprocess")) { memberWebHandler.processAdd(request, response);// no permission } else if (requestURI.equals("/viewmember")) { memberWebHandler.prepareView_forPublic(request);// no permission } else if (requestURI.equals("/listmembers")) { memberWebHandler.prepareListMembers_forPublic(request);// no permission } else if (requestURI.equals("/editmember")) { memberWebHandler.prepareEdit_forCurrentMember(request); } else if (requestURI.equals("/updatemember")) { memberWebHandler.processUpdate(request, response); } else if (requestURI.equals("/myprofile")) { memberWebHandler.prepareView_forCurrentMember(request); } else if (requestURI.equals("/changepassword")) { onlineUser.getPermission().ensureIsAuthenticated();// check if login } else if (requestURI.equals("/changepasswordprocess")) { memberWebHandler.processUpdatePassword(request); } else if (requestURI.equals("/changeemail")) { memberWebHandler.prepareEditEmail(request); } else if (requestURI.equals("/changeemailprocess")) { memberWebHandler.processUpdateEmail(request); } else if (requestURI.equals("/changesignature")) { memberWebHandler.prepareEditSignature(request); } else if (requestURI.equals("/changesignatureprocess")) { memberWebHandler.processUpdateSignature(request, response); } else if (requestURI.equals("/changeavatar")) { memberWebHandler.prepareEditAvatar(request); } else if (requestURI.equals("/uploadavatar")) { memberWebHandler.uploadAvatar(mainServlet.getServletConfig(), request); } else if (requestURI.equals("/updateavatar")) { memberWebHandler.updateMemberAvatar(request); } else if (requestURI.equals("/mywatch")) { watchWebHandler.prepareList(request); } else if (requestURI.equals("/addwatch")) { watchWebHandler.prepareAdd(request); } else if (requestURI.equals("/addwatchprocess")) { watchWebHandler.processAdd(request); } else if (requestURI.equals("/deletewatchprocess")) { watchWebHandler.processDelete(request); } else if (requestURI.equals("/mymessage")) { messageWebHandler.prepareList(request); } else if (requestURI.equals("/addmessage")) { messageWebHandler.prepareAdd(request, response); } else if (requestURI.equals("/addmessageprocess")) { messageWebHandler.processAdd(request, response); } else if (requestURI.equals("/viewmessage")) { messageWebHandler.prepareViewMessage(request); } else if (requestURI.equals("/sendmessageprocess")) { messageWebHandler.processSendMessage(request); } else if (requestURI.equals("/deletemessageprocess")) { messageWebHandler.processDelete(request); } else if (requestURI.equals("/processmessage")) { messageWebHandler.processMessage(request); } else if (requestURI.equals("/addmessageattachment")) { pmAttachmentWebHandler.prepareAdd(request); } else if (requestURI.equals("/addmessageattachmentprocess")) { pmAttachmentWebHandler.processAdd(request, response); } else if (requestURI.equals("/getpmattachment")) { pmAttachmentWebHandler.downloadAttachment(request, response); return null;//download attachment, no further process is needed } else if (requestURI.equals("/mymessagefolder")) { messageFolderWebHandler.prepareList(request); } else if (requestURI.equals("/addmessagefolder")) { messageFolderWebHandler.prepareAdd(request); } else if (requestURI.equals("/addmessagefolderprocess")) { messageFolderWebHandler.processAdd(request); } else if (requestURI.equals("/deletemessagefolder")) { messageFolderWebHandler.prepareDelete(request); } else if (requestURI.equals("/deletemessagefolderprocess")) { messageFolderWebHandler.processDelete(request); } else if (requestURI.equals("/updatefolderorder")) { messageFolderWebHandler.processUpdateOrder(request); } else if (requestURI.equals("/listcompanies")) { companyWebHandler.prepareListCompanies_forPublic(request); } else if (requestURI.equals("/companyhomepage")) { companyWebHandler.prepareView(request); } else if (requestURI.equals("/search")) { postWebHandler.prepareSearch(request); } else if (requestURI.equals("/searchprocess")) { postWebHandler.processSearch(request, response); } else if (requestURI.equals("/rsssummary")) { threadWebHandler.prepareRSSSummary(request); } else if (requestURI.equals("/atom")) { threadWebHandler.prepareListRSS(request); } else if (requestURI.equals("/rss")) { threadWebHandler.prepareListRSS(request); } else if (requestURI.equals("/rss2")) { threadWebHandler.prepareListRSS(request); } else if (requestURI.equals("/getmvncoreimage")) { MyUtil.writeMvnCoreImage(request, response); return null; } else if (requestURI.equals("/getmvnforumimage")) { MyUtil.writeMvnForumImage(request, response); return null; } else if (requestURI.equals("/captchaimage")) { MVNCaptchaService.getInstance().writeCaptchaImage(request, response); return null; } else if (requestURI.equals("/iforgotpasswords")) { memberWebHandler.prepareForgotPassword(request);//no permission } else if (requestURI.equals("/forgotpasswordprocess")) { memberWebHandler.forgotPassword(request);//no permission } else if (requestURI.equals("/resetpasswordprocess")) { memberWebHandler.resetPassword(request);//no permission } else if (requestURI.equals("/sendactivationcodeprocess")) { memberWebHandler.sendActivateCode(request);//no permission } else if (requestURI.equals("/activatememberprocess")) { memberWebHandler.activateMember(request);//no permission } else if (requestURI.equals("/listonlineusers")) { //@todo: move to WebHandler if (MVNForumConfig.getEnableOnlineUsers() == false) { throw new AssertionException("Cannot list online users because ONLINE_USERS feature is disabled by administrator."); } // This will ensure removing all time-out users (if there is) onlineUserManager.getOnlineUser(request); // the following 2 lines fix the bug that no online user found in the first time request Action action = new ActionInUserModule(request, requestURI);// may throw MissingURLMapEntryException onlineUserManager.updateOnlineUserAction(request, action); // now set the attribute //request.setAttribute("OnlineUserActions", onlineUserManager.getOnlineUserActions(0/*default*/));// no permission boolean duplicateUsers = MVNForumConfig.getEnableDuplicateOnlineUsers(); request.setAttribute("OnlineUserActions", onlineUserManager.getOnlineUserActions(0/*default*/, duplicateUsers));// no permission } else if (requestURI.equals("/loginprocess")) { if (MVNForumConfig.getEnableLogin() == false) { throw new AuthenticationException(NotLoginException.LOGIN_DISABLED); } onlineUserManager.processLogin(request, response); String url = ParamUtil.getParameter(request, "url"); if (url.length() > 0) { responseURI = url; } else { String originalRequest = ParamUtil.getAttribute(request.getSession(), ORIGINAL_REQUEST); if (originalRequest.length() > 0) { request.getSession().setAttribute(ORIGINAL_REQUEST, ""); responseURI = originalRequest; } } } else if (requestURI.equals("/logout")) { onlineUserManager.logout(request, response); request.setAttribute("Reason", "Logout successfully."); } else if (requestURI.equals("/deletecookieprocess")) { onlineUserManager.deleteCookie(request, response); } else if (requestURI.equals("/getavatar")) { memberWebHandler.getAvatar(request, response); return null;//download attachment, no further process is needed } } catch (AuthenticationException e) { // make sure not from login page, we cannot set original request in this situation // and also make sure the request's method must be GET to set the OriginalRequest boolean shouldSaveOriginalRequest = (e.getReason()==NotLoginException.NOT_LOGIN) || (e.getReason()==NotLoginException.NOT_ENOUGH_RIGHTS); if (shouldSaveOriginalRequest && (request.getMethod().equals("GET"))) { String url = UserModuleConfig.getUrlPattern() + requestURI + "?" + StringUtil.getEmptyStringIfNull(request.getQueryString()); request.getSession().setAttribute(ORIGINAL_REQUEST, url); } requestURI = "/login"; request.setAttribute("Reason", e.getReasonExplanation(onlineUser.getLocale())); } catch (Exception e) { if (e instanceof BadInputException) { // we log in WARN level if this is the exception from user input log.warn("Exception in UserModuleProcessor e = " + e.getMessage(), e); } else if (e instanceof AssertionException) { // we log in FATAL level if this is the exception from user input log.fatal("Exception in UserModuleProcessor e = " + e.getMessage(), e); } else { log.error("Exception in UserModuleProcessor [" + e.getClass().getName() + "] : " + e.getMessage(), e); } requestURI = "/error"; String message = StringUtil.getEmptyStringIfNull(e.getMessage()); if (message.length() == 0) { message = e.getClass().getName(); } request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(message)); } // step 2: map the URI (of the CONTROLLER) try { // NOTE 1: there is one situation when responseURI != null (after login successfully for the first time), // but since it will make a NEW request via sendRedirect, so we dont count // NOTE 2: there are 2 situation when requestURI is different from the original requestURI // that is /login and /error, because of this so we must pass the requestURI /* @todo Could below the MapHandler ??? */ Action action = new ActionInUserModule(request, requestURI);// may throw MissingURLMapEntryException onlineUserManager.updateOnlineUserAction(request, action); // now updateOnlineUserAction is ok, we go ahead if (responseURI == null) { URLMap map = urlMapHandler.getMap(requestURI, request, onlineUser.getLocaleName()); responseURI = map.getResponse(); }// if } catch (MissingURLMapEntryException e) { log.error("Exception: missing urlmap entry in forum module: requestURI = " + requestURI); responseURI = "/mvnplugin/mvnforum/user/error.jsp"; request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(e.getMessage())); } catch (Exception e) { // This will catch AuthenticationException, AssertionException, DatabaseException // in the method onlineUserManager.updateOnlineUserAction(request, action) responseURI = "/mvnplugin/mvnforum/user/error.jsp"; request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(e.getMessage())); } // step 3: forward or dispatch to the VIEW if (log.isDebugEnabled()) { long duration = System.currentTimeMillis() - start; log.debug("UserModuleProcessor : responseURI = " + responseURI + ". (" + duration + " ms)"); } return responseURI; /* if (responseURI.endsWith(".jsp")) { servletContext.getRequestDispatcher(responseURI).forward(request, response); } else { response.sendRedirect(ParamUtil.getContextPath() + responseURI); }*/ } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.