Commit 9bfb5f62 authored by suntao's avatar suntao

权限

parent 27827bbd
......@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.List;
/**
......@@ -13,16 +14,33 @@ import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "permission")
public class Permission {
/**
* 主键id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long 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;
import javax.persistence.*;
import java.util.List;
import java.util.Set;
import java.util.function.UnaryOperator;
/**
......@@ -31,9 +32,16 @@ public class Role extends Primary implements UnaryOperator<Role> {
/**
* 授权列表
*/
@Convert(converter = PermissionListConverter.class)
@Column(name = "permissions")
private List<Permission> permissions;
//@Convert(converter = PermissionListConverter.class)
//@Column(name = "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
public Role apply(Role role) {
......
......@@ -8,6 +8,7 @@ import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.context.annotation.Configuration;
import java.util.Objects;
......@@ -28,7 +29,13 @@ public class ApplicationSecurityHandler implements SecurityHandler {
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 {
* @return
*/
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