📄 boardpermissioncacheinterceptor.java
字号:
}
}
Set bspset = bmpMap[1].entrySet(); //版主特殊权限
Iterator bspit = bspset.iterator();
while (bspit.hasNext()) {
Map.Entry p = (Map.Entry) bspit.next();
boardSpecialPermission.put(p.getKey(), p.getValue());
}
}
}
up.getBoardPermissions().put(board.getId(), boardPermission);
up.getSpecialPermissions().put(board.getId(), boardSpecialPermission);
//userPermissionCache.add(us.getId(), up);
}
}
else {
up = new UserPermission();
boardPermission = new HashMap();
boardSpecialPermission = new HashMap();
Map[] maps = boardService.getBoardPermission(bid, us.getGroupID()); //取得版区用户组权限
Set pset = maps[0].entrySet();
Iterator it = pset.iterator();
while (it.hasNext()) {
Map.Entry p = (Map.Entry) it.next();
Permission permission = (Permission) p.getValue();
String[] actions = permission.getAction().split(",");
for (int i = 0; i < actions.length; i++) {
String[] resources = ( (String) p.getKey()).split(",");
boardPermission.put(BBSCSUtil.getActionMappingURL(resources[0], httpServletRequest) +
"?action=" + actions[i], p.getValue());
}
}
Set gbspset = maps[1].entrySet();
Iterator gbspit = gbspset.iterator();
while (gbspit.hasNext()) {
Map.Entry p = (Map.Entry) gbspit.next();
boardSpecialPermission.put(p.getKey(), p.getValue());
}
BoardMaster bm = (BoardMaster) board.getBoardMaster().get(us.getUserName());
if (bm != null) { //是斑竹
Map[] bmpMap = boardService.getBoardMasterPermission(bm.getRoleID()); //取得斑竹权限
Set bpset = bmpMap[0].entrySet(); //版主普通权限
Iterator bpit = bpset.iterator();
while (bpit.hasNext()) {
Map.Entry p = (Map.Entry) bpit.next();
Permission permission = (Permission) p.getValue();
String[] actions = permission.getAction().split(",");
for (int i = 0; i < actions.length; i++) {
String[] resources = ( (String) p.getKey()).split(",");
boardPermission.put(BBSCSUtil.getActionMappingURL(resources[0], httpServletRequest) +
"?action=" + actions[i], p.getValue());
}
}
Set bspset = bmpMap[1].entrySet(); //版主特殊权限
Iterator bspit = bspset.iterator();
while (bspit.hasNext()) {
Map.Entry p = (Map.Entry) bspit.next();
boardSpecialPermission.put(p.getKey(), p.getValue());
}
}
for (int i = 0; i < board.getParentIDs().size(); i++) {
Board pboard = boardService.getBoardByID( ( (Long) (board.getParentIDs().get(i))).longValue());
BoardMaster pbm = (BoardMaster) pboard.getBoardMaster().get(us.getUserName());
if (pbm != null && pbm.getOverChildPurview() == 1) {
Map[] bmpMap = boardService.getBoardMasterPermission(pbm.getRoleID()); //取得斑竹权限
Set bpset = bmpMap[0].entrySet(); //版主普通权限
Iterator bpit = bpset.iterator();
while (bpit.hasNext()) {
Map.Entry p = (Map.Entry) bpit.next();
Permission permission = (Permission) p.getValue();
String[] actions = permission.getAction().split(",");
for (int j = 0; j < actions.length; j++) {
String[] resources = ( (String) p.getKey()).split(",");
boardPermission.put(BBSCSUtil.getActionMappingURL(resources[0],
httpServletRequest) + "?action=" + actions[j], p.getValue());
}
}
Set bspset = bmpMap[1].entrySet(); //版主特殊权限
Iterator bspit = bspset.iterator();
while (bspit.hasNext()) {
Map.Entry p = (Map.Entry) bspit.next();
boardSpecialPermission.put(p.getKey(), p.getValue());
}
}
}
up.getBoardPermissions().put(board.getId(), boardPermission);
up.getSpecialPermissions().put(board.getId(), boardSpecialPermission);
userPermissionCache.add(us.getId(), up);
}
if (board.getNeedPasswd() == 1 && StringUtils.isNotBlank(board.getPasswd())) { //版区需要密码访问
if (!boardSpecialPermission.containsKey(new Long(Constant.SPERMISSION_INBOARD_NOT_NEEDPASSWD))) {
//System.out.println("user boardpass:" + us.getBoardPass());
if (StringUtils.isBlank(us.getBoardPass())) {
return actionMapping.findForward("boardPasswd");
}
else if (!board.getPasswd().equals(us.getBoardPass())) {
//版区需要密码,需要跳转
ActionMessages errors = new ActionMessages();
errors.add("error.board.passwd", new ActionMessage("error.board.passwd"));
ActionUtils.addErrors(httpServletRequest, errors);
return actionMapping.findForward("boardPasswd");
}
}
}
if (board.getIsAuth() == 1) { //版区需要授权访问
BoardMaster bm = (BoardMaster) board.getBoardMaster().get(us.getUserName());
if (bm == null &&
!boardSpecialPermission.containsKey(new Long(Constant.SPERMISSION_INBOARD_NOT_NEEDAUTH))) { //不是斑竹,并且没有不需要授权就可以进入的权限
//版区需要授权
BoardAuthUserService boardAuthUserService = (BoardAuthUserService) wc.getBean("boardAuthUserService");
if (boardAuthUserService.findBoardAuthUserByBidUid(bid, us.getId()) == null) {
//不是授权用户,需要跳转
if (ajax.equalsIgnoreCase("html")) {
//System.out.println("html");
ActionMessages errors = new ActionMessages();
errors.add("error.user.not.auth", new ActionMessage("error.user.not.auth"));
ActionUtils.addErrors(httpServletRequest, errors);
return actionMapping.findForward("error");
}
else if (ajax.equalsIgnoreCase("shtml")) {
ActionMessages errors = new ActionMessages();
errors.add("error.user.not.auth", new ActionMessage("error.user.not.auth"));
ActionUtils.addErrors(httpServletRequest, errors);
return actionMapping.findForward("htmlError");
}
else {
//System.out.println("xml");
AjaxMessagesXML ajaxMessagesXML = (AjaxMessagesXML) wc.getBean("ajaxMessagesXML");
ajaxMessagesXML.setMessage(Constant.CODEID_BOARDID_ERROR,
Constant.MESSAGE.getMessage(httpServletRequest.getLocale(),
"error.user.not.auth"));
httpServletRequest.setAttribute("xmlo", ajaxMessagesXML.getXmlo());
httpServletRequest.setAttribute("messagesDocument", ajaxMessagesXML.getMessagesDocument());
return actionMapping.findForward("ajaxjsp");
}
}
}
}
boolean havePermission = false;
String saction = StringUtils.trimToEmpty(httpServletRequest.getParameter("action"));
String actionURI = httpServletRequest.getRequestURI();
Permission permission = (Permission) boardPermission.get(actionURI + "?action=*");
if (permission != null) {
havePermission = true;
}
else {
permission = (Permission) boardPermission.get(actionURI + "?action=" + saction);
if (permission != null) {
havePermission = true;
}
else {
havePermission = false;
}
}
if (havePermission) {
return null;
}
else {
//System.out.println(ajax);
if (ajax.equalsIgnoreCase("html")) {
//System.out.println("html");
ActionMessages errors = new ActionMessages();
errors.add("error.noPermission", new ActionMessage("error.noPermission"));
ActionUtils.addErrors(httpServletRequest, errors);
return actionMapping.findForward("error");
}
else if (ajax.equalsIgnoreCase("shtml")) {
ActionMessages errors = new ActionMessages();
errors.add("error.noPermission", new ActionMessage("error.noPermission"));
ActionUtils.addErrors(httpServletRequest, errors);
return actionMapping.findForward("htmlError");
}
else {
//System.out.println("xml");
AjaxMessagesXML ajaxMessagesXML = (AjaxMessagesXML) wc.getBean("ajaxMessagesXML");
ajaxMessagesXML.setMessage(Constant.CODEID_NO_PERMISSION,
Constant.MESSAGE.getMessage(httpServletRequest.getLocale(),
"error.noPermission"));
httpServletRequest.setAttribute("xmlo", ajaxMessagesXML.getXmlo());
httpServletRequest.setAttribute("messagesDocument", ajaxMessagesXML.getMessagesDocument());
return actionMapping.findForward("ajaxjsp");
}
}
//return null;
}
/**
* afterAction
*
* @param action Action
* @param actionMapping ActionMapping
* @param actionForm ActionForm
* @param httpServletRequest HttpServletRequest
* @param httpServletResponse HttpServletResponse
* @return ActionForward
* @throws IOException
* @throws ServletException
* @todo Implement this net.sf.struts.saif.ActionHaveForwardInterceptor method
*/
public ActionForward afterAction(Action action, ActionMapping actionMapping, ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws IOException,
ServletException {
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -