From 1cc68d21b415ca886e6c945545e5b445cf583897 Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Sat, 4 Dec 2021 11:20:13 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BC=98=E5=8C=96=E9=89=B4?= =?UTF-8?q?=E6=9D=83=E5=AE=9E=E4=BD=93=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=9D=83=E9=99=90=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/flyfish/framework/domain/po/User.java | 5 +++++ .../framework/domain/AdminUserDetails.java | 16 ++++++++++++++++ .../domain/authorized/AuthorizedDomain.java | 18 +++++++++++++----- .../domain/authorized/AuthorizedQo.java | 2 +- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/flyfish-data/src/main/java/com/flyfish/framework/domain/po/User.java b/flyfish-data/src/main/java/com/flyfish/framework/domain/po/User.java index c296839..120d927 100644 --- a/flyfish-data/src/main/java/com/flyfish/framework/domain/po/User.java +++ b/flyfish-data/src/main/java/com/flyfish/framework/domain/po/User.java @@ -91,6 +91,11 @@ public class User extends AuditDomain implements IUser { @Transient private Object detail; + /** + * 当前用户的鉴权标记 + */ + private String authority; + /** * 错误次数,防止恶意登录 */ diff --git a/flyfish-user/src/main/java/com/flyfish/framework/domain/AdminUserDetails.java b/flyfish-user/src/main/java/com/flyfish/framework/domain/AdminUserDetails.java index 1dc7a11..cc846b4 100644 --- a/flyfish-user/src/main/java/com/flyfish/framework/domain/AdminUserDetails.java +++ b/flyfish-user/src/main/java/com/flyfish/framework/domain/AdminUserDetails.java @@ -2,6 +2,7 @@ package com.flyfish.framework.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.flyfish.framework.domain.base.Domain; import com.flyfish.framework.domain.base.IUser; import com.flyfish.framework.domain.po.Department; import com.flyfish.framework.domain.po.Role; @@ -9,9 +10,11 @@ import com.flyfish.framework.domain.po.User; import com.flyfish.framework.enums.UserStatus; import com.flyfish.framework.enums.UserType; import com.flyfish.framework.utils.CopyUtils; +import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -112,6 +115,12 @@ public class AdminUserDetails implements UserDetails, IUser { */ private String openId; + /** + * 当前用户的鉴权标记 + */ + @Getter(AccessLevel.NONE) + private String authority; + /** * 查询冗余,标记用户信息 */ @@ -150,4 +159,11 @@ public class AdminUserDetails implements UserDetails, IUser { public User toUser() { return CopyUtils.copyProps(this, new User()); } + + public String getAuthority() { + if (StringUtils.isBlank(authority)) { + authority = departments.stream().findFirst().map(Domain::getId).orElse(null); + } + return authority; + } } diff --git a/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedDomain.java b/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedDomain.java index d7e8258..086a7a5 100644 --- a/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedDomain.java +++ b/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedDomain.java @@ -1,18 +1,26 @@ package com.flyfish.framework.domain.authorized; +import com.flyfish.framework.context.UserContext; import com.flyfish.framework.domain.base.AuditDomain; -import lombok.Getter; +import com.flyfish.framework.domain.po.User; import lombok.Setter; +import org.apache.commons.lang3.StringUtils; /** * 带鉴权的实体,主要以部门隔绝 - * - * @param */ -@Getter @Setter -public abstract class AuthorizedDomain> extends AuditDomain { +public abstract class AuthorizedDomain extends AuditDomain { // 作用域id,一般是部门。用户存储时插入 private String authorizeId; + + public String getAuthorizeId() { + if (StringUtils.isNotBlank(authorizeId)) { + return authorizeId; + } else { + return UserContext.sharedContext().map(UserContext::currentUser) + .map(User::getAuthority).orElse(null); + } + } } diff --git a/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedQo.java b/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedQo.java index 5ac1597..bcb5269 100644 --- a/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedQo.java +++ b/flyfish-user/src/main/java/com/flyfish/framework/domain/authorized/AuthorizedQo.java @@ -21,7 +21,7 @@ import java.util.stream.Collectors; */ @Getter @Setter -public abstract class AuthorizedQo> extends NameLikeQo { +public abstract class AuthorizedQo extends NameLikeQo { // 部门服务 private DepartmentService departmentService;