liuxiaolong
2019-05-09 0d1d88cdb668e75ea8609417ac18ae19947e9525
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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<String> actionList = (List<String>)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;
    }
 
}