📄 adminmoduleprocessor.java
字号:
/*
* Copyright (C) 2002 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 net.myvietnam.mvnplugin.mvnforum.admin;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import net.myvietnam.mvncore.exception.*;
import net.myvietnam.mvncore.util.*;
import net.myvietnam.mvnplugin.mvnforum.db.*;
import net.myvietnam.mvnplugin.mvnforum.URLMap;
import net.myvietnam.mvnplugin.mvnforum.auth.*;
public class AdminModuleProcessor {
private HttpServlet adminServlet = null;
private ServletContext servletContext = null;
private AdminURLMapHandler urlMapHandler = new AdminURLMapHandler();
private ForumWebHandler forumWebHandler = new ForumWebHandler();
private CategoryWebHandler categoryWebHandler = new CategoryWebHandler();
private MemberWebHandler memberWebHandler = new MemberWebHandler();
private GroupsWebHandler groupsWebHandler = new GroupsWebHandler();
private MemberGroupWebHandler memberGroupWebHandler = new MemberGroupWebHandler();
private GroupPermissionWebHandler groupPermissionWebHandler = new GroupPermissionWebHandler();
private GroupForumWebHandler groupForumWebHandler = new GroupForumWebHandler();
private GeneralAdminTasksWebHandler generalAdminTasksWebHandler = new GeneralAdminTasksWebHandler();
private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
public AdminModuleProcessor(HttpServlet servlet) {
adminServlet = servlet;
servletContext = servlet.getServletContext();
}
public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
long start = System.currentTimeMillis();
String requestURI = StringUtil.getEmptyStringIfNull(request.getPathInfo());
String responseURI = null;
System.out.println("AdminModuleProcessor : requestURI = " + requestURI);
// step 1: some command need to be processed before we do the URI mapping (of the MODAL)
try {
// always check for Authenticated User
OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
MVNForumPermission permission = onlineUser.getPermission();
if ( !requestURI.equals("") &&
!requestURI.equals("/") &&
!requestURI.equals("/login") &&
!requestURI.equals("/loginprocess") &&
!requestURI.equals("/logout")) {
permission.ensureIsAuthenticated();
}
if (requestURI.equals("/forummanagement")) {
permission.ensureCanAdminSystem();// need a lesser permission
} else if (requestURI.equals("/editforumpermission")) {
groupsWebHandler.prepareList(request);
} else if (requestURI.equals("/editgroupforumpermission")) {
groupForumWebHandler.prepareList(request);
} else if (requestURI.equals("/updategroupforumpermission")) {
groupForumWebHandler.processUpdate(request);
} else if (requestURI.equals("/addforumprocess")) {
forumWebHandler.processAdd(request);
} else if (requestURI.equals("/editforum")) {
forumWebHandler.prepareEdit(request);
} else if (requestURI.equals("/updateforum")) {
forumWebHandler.processUpdate(request);
} else if (requestURI.equals("/listforums")) {
forumWebHandler.prepareList(request);
} else if (requestURI.equals("/updateforumorder")) {
forumWebHandler.processUpdateForumOrder(request);
} else if (requestURI.equals("/addcategoryprocess")) {
categoryWebHandler.processAdd(request);
} else if (requestURI.equals("/editcategory")) {
categoryWebHandler.prepareEdit(request);
} else if (requestURI.equals("/updatecategory")) {
categoryWebHandler.processUpdate(request);
} else if (requestURI.equals("/listcategories")) {
categoryWebHandler.prepareList(request);
} else if (requestURI.equals("/updatecategoryorder")) {
categoryWebHandler.processUpdateCategoryOrder(request);
/*
} else if (requestURI.equals("/listrecentdisablemessage")) {
//messageWebHandler.listRecentDisableMessage(request);
} else if (requestURI.equals("/editpost")) {
//messageWebHandler.prepareEdit_forAdmin(request);
} else if (requestURI.equals("/updatepost")) {
//messageWebHandler.processUpdate_forAdmin(request);
*/
} else if (requestURI.equals("/usermanagement")) {
memberWebHandler.prepareListMembers_forPublic(request);
} else if (requestURI.equals("/addmemberprocess")) {
memberWebHandler.processAdd(request);
} else if (requestURI.equals("/addgroupprocess")) {
groupsWebHandler.processAdd(request);
} else if (requestURI.equals("/groupmanagement")) {
groupsWebHandler.prepareList(request);
} else if (requestURI.equals("/viewgroup")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/editgroupinfo")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/updategroupinfo")) {
groupsWebHandler.processUpdate(request);
} else if (requestURI.equals("/editgroupowner")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/updategroupowner")) {
groupsWebHandler.processUpdateGroupOwner(request);
} else if (requestURI.equals("/listmembergroup")) {
memberGroupWebHandler.prepareList_inGroup_limit(request);
} else if (requestURI.equals("/addmembergroup")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/addmembergroupprocess")) {
memberGroupWebHandler.processAdd(request);
} else if (requestURI.equals("/editgrouppermission")) {
groupPermissionWebHandler.prepareList(request);
} else if (requestURI.equals("/updategrouppermission")) {
groupPermissionWebHandler.processUpdate(request);
} else if (requestURI.equals("/index")) {
generalAdminTasksWebHandler.prepareShowIndex(request);
} else if (requestURI.equals("/testsystem")) {
generalAdminTasksWebHandler.prepareTestSystem(request);
} else if (requestURI.equals("/sendmail")) {
generalAdminTasksWebHandler.prepareSendMail(request);
} else if (requestURI.equals("/sendmailprocess")) {
generalAdminTasksWebHandler.sendMail(request);
} else if (requestURI.equals("/matrix")) {
/** @todo check and remove it */
//generalAdminTasksWebHandler.prepareShowAdminHomepage(request);
} else if (requestURI.equals("/loginprocess")) {
onlineUserManager.processLogin(request);
String originalRequest = ParamUtil.getAttribute(request.getSession(), "OriginalRequest");
if (originalRequest.length() > 0) {
request.getSession().setAttribute("OriginalRequest", "");
responseURI = originalRequest;
}
} else if (requestURI.equals("/logout")) {
onlineUserManager.logout(request);
request.setAttribute("Reason", "Logout successfully.");
}
} 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
/** @todo what if not enough right ??? */
if ((e.getReason() == NotLoginException.NOT_LOGIN) && (request.getMethod().equals("GET"))) {
String url = AdminModuleConfig.URL_PATTERN + requestURI + "?" + StringUtil.getEmptyStringIfNull(request.getQueryString());
request.getSession().setAttribute("OriginalRequest", url);
}
requestURI = "/login";
request.setAttribute("Reason", e.getReasonExplanation());
} catch (Exception e) {
e.printStackTrace();
requestURI = "/error";
request.getSession().setAttribute("ErrorMessage", StringUtil.getEmptyStringIfNull(e.getMessage()));
}
// step 2: map the URI (of the CONTROLLER)
try {
// See note in the ActionInUserModule
Action action = new ActionInAdminModule(request, requestURI);// may throw MissingURLMapEntryException
onlineUserManager.updateOnlineUserAction(request, action);
if (responseURI == null) {
URLMap map = urlMapHandler.getMap(requestURI, request);
responseURI = map.getResponse();
}
} catch (MissingURLMapEntryException e) {
System.out.println("Exception: missing urlmap entry in admin module");
responseURI = "/mvnplugin/mvnforum/admin/error.jsp";
request.getSession().setAttribute("ErrorMessage", 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", e.getMessage());
}
// step 3: forward or dispatch to the VIEW
long duration = System.currentTimeMillis() - start;
System.out.println("AdminModuleProcessor : responseURI = " + responseURI + ". (" + duration + " ms)\n");
if (responseURI.endsWith(".jsp")) {
servletContext.getRequestDispatcher(responseURI).forward(request, response);
} else {
response.sendRedirect(ParamUtil.getContextPath() + responseURI);
}
}// process method
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -