Пример #1
0
  /**
   * 获得用户所有角色的权限集合.格式为R_roleID_TreeNodeID_OperationID,U_userId_TreeNodeID_OperationID
   * 调用springSecurityService
   */
  private Set<GrantedAuthority> obtainGrantedAuthorities(SystemUser user) {

    Session session = null;
    Connection connection = null;

    Set<TripleDTO> rolePrivilegeTriples = null;
    Set<TripleDTO> userPrivilegeTriples = null;
    Set<TripleDTO> adminPrivilegeTriples = null;
    try {
      session = sessionFactory.openSession();
      connection = session.connection();
      Set<Long> directRoles = springSecurityService.listDirectRoleNodes(user.getId(), connection);
      Set<Long> allRoles = springSecurityService.listParentNodes(directRoles, connection);
      userPrivilegeTriples = springSecurityService.getUserTriples(user.getId(), connection);
      rolePrivilegeTriples = springSecurityService.getRoleTriples(null, null, allRoles, connection);
      if (userService.isAdmin(user)) {
        Set<Long> directAdminNodes =
            springSecurityService.listDirectAdminNodes(user.getId(), connection);
        Set<Long> allAdminNodes = springSecurityService.listSubNodes(directAdminNodes, connection);
        adminPrivilegeTriples =
            springSecurityService.getAdminTriples(
                null, null, user.getId(), allAdminNodes, connection);
      }

    } catch (Exception e) {
      try {
        connection.rollback();
      } catch (SQLException e1) {

        e1.printStackTrace();
      }
      e.printStackTrace();

    } finally {
      if (session != null) session.close();
      try {
        if (connection != null) connection.close();
      } catch (SQLException e1) {

        e1.printStackTrace();
      }
    }

    // 格式化

    if (adminPrivilegeTriples == null) {
      return new AuthorityStringMaker(userPrivilegeTriples, rolePrivilegeTriples).makeAuthority();
    }

    return new AuthorityStringMaker(
            userPrivilegeTriples, rolePrivilegeTriples, adminPrivilegeTriples)
        .makeAuthority();
  }