⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boardpermissioncacheinterceptor.java

📁 一个jsp写的bbs
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
              }
            }

            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 + -