package com.basic.x01.base; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import com.basic.x01.system.model.TSysUser; import com.basic.x01.systemMenu.MenuFilter; import com.basic.x01.systemMenu.MenuItem; import com.basic.x01.systemMenu.MenuUtil; import framework.base.FrameBaseController; /** * 全部控制器的基类,提供控制器的工具 * * @company 北京贝思科技术有限公司 * @author liuyajun, 8384503@qq.com * @date 2016年1月13日 * @time 上午8:32:35 */ @Controller public class BaseController extends FrameBaseController { public final static String SESSION_LOGINED_USER_KEY = "SESSION_LOGINED_USER_KEY"; public TSysUser getLoingedUser(){ return (TSysUser)this.getRequest().getSession().getAttribute(SESSION_LOGINED_USER_KEY); } public static TSysUser getLoingedUser(HttpServletRequest req){ return (TSysUser)req.getSession().getAttribute(SESSION_LOGINED_USER_KEY); } public String getCurrentActionId(){ return (String)this.getRequest().getAttribute("currentRequestActionId"); } /** * 检查权限 * @param actions 英文逗号分隔的actionId串 * @return true 有权限 */ public boolean checkAccess(String actions){ boolean check = checkAccess(this.getRequest(), actions); this.getRequest().setAttribute(actions, check?"y":"n"); return check; } /** * 检查权限 * @param req * @param actions 英文逗号分隔的actionId串 * @return true 有权限 */ public static boolean checkAccess(HttpServletRequest req, String actions) { if(req ==null || actions==null || actions.trim().length() ==0){ return false; } TSysUser user = BaseController.getLoingedUser(req); if(user==null){ return false; } //如果正常进来,这里一定有actionList @SuppressWarnings("unchecked") List actionList = (List)req.getAttribute( MenuFilter.FRAME_REQUEST_ACTION_LIST); if(actionList==null || actionList.size()==0){ return false; } String[] actionArray = actions.trim().replace(" ", "") .split(","); for(String actionId : actionArray){ if(actionId==null || actionId.trim().length()==0){ continue; } MenuItem menu = MenuUtil.getMenuItemByActionId(actionId); if(menu==null){ continue; } if(MenuFilter.checkActionTree(actionList, menu)){ return true; } } return false; } }