Commit 9bfb5f62 authored by suntao's avatar suntao

权限

parent 27827bbd
...@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; ...@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.List; import java.util.List;
/** /**
...@@ -13,16 +14,33 @@ import java.util.List; ...@@ -13,16 +14,33 @@ import java.util.List;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Entity
@Table(name = "permission")
public class Permission { public class Permission {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/** /**
* 授权ID * 授权ID
*/ */
private String id; @Column(name = "name")
private String name;
/**
* 权限描述
*/
@Column(name = "desc")
private String desc;
/** /**
* 权利 * 权利 读 写 修改 删除 暂时不用
*/ */
private List<Authority> authorities; //@Convert(converter = PermissionListConverter.class)
//@Column(name = "permissions")
//private List<Authority> authorities;
} }
...@@ -5,6 +5,7 @@ import lombok.Data; ...@@ -5,6 +5,7 @@ import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.function.UnaryOperator; import java.util.function.UnaryOperator;
/** /**
...@@ -31,9 +32,16 @@ public class Role extends Primary implements UnaryOperator<Role> { ...@@ -31,9 +32,16 @@ public class Role extends Primary implements UnaryOperator<Role> {
/** /**
* 授权列表 * 授权列表
*/ */
@Convert(converter = PermissionListConverter.class) //@Convert(converter = PermissionListConverter.class)
@Column(name = "permissions") //@Column(name = "permissions")
private List<Permission> permissions; //private List<Permission> permissions;
/**
* 用户角色列表
*/
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name = "role_permission_mapping", joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "permission_id"))
private Set<Permission> permissions;
@Override @Override
public Role apply(Role role) { public Role apply(Role role) {
......
...@@ -8,6 +8,7 @@ import cn.quantgroup.cashloanflowboss.core.Application; ...@@ -8,6 +8,7 @@ import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert; import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus; import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import org.aopalliance.intercept.MethodInvocation; import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import java.util.Objects; import java.util.Objects;
...@@ -28,7 +29,13 @@ public class ApplicationSecurityHandler implements SecurityHandler { ...@@ -28,7 +29,13 @@ public class ApplicationSecurityHandler implements SecurityHandler {
Assert.isNull(principal, ApplicationStatus.AUTHENTICATION_FAILURE); Assert.isNull(principal, ApplicationStatus.AUTHENTICATION_FAILURE);
// 如果是超级管理员跳过权限验证 // 如果是超级管理员跳过权限验证
return principal.isSuperAdministrator() || principal.getRoles().stream().anyMatch(role -> Stream.iterate(role, Role::getParent).anyMatch(_role -> this.checkAuthority(authorityId, _role))); boolean superAdministrator = principal.isSuperAdministrator();
boolean anyMatch = principal.getRoles().stream().anyMatch(role -> {
Stream<Role> iterate = Stream.iterate(role, Role::getParent);
return Objects.nonNull(iterate) && iterate.anyMatch(_role -> this.checkAuthority(authorityId, _role));
});
return superAdministrator || anyMatch;
} }
...@@ -40,7 +47,7 @@ public class ApplicationSecurityHandler implements SecurityHandler { ...@@ -40,7 +47,7 @@ public class ApplicationSecurityHandler implements SecurityHandler {
* @return * @return
*/ */
private boolean checkAuthority(String authorityId, Role role) { private boolean checkAuthority(String authorityId, Role role) {
return Objects.nonNull(role.getPermissions()) && role.getPermissions().parallelStream().anyMatch(permission -> permission.getId().equals(authorityId)); return Objects.nonNull(role) && CollectionUtils.isNotEmpty(role.getPermissions()) && role.getPermissions().parallelStream().anyMatch(permission -> permission.getName().equals(authorityId));
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment