From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsCurrentIdentity.java |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsCurrentIdentity.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsCurrentIdentity.java
new file mode 100644
index 0000000..86e83c1
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsPermission/DmsCurrentIdentity.java
@@ -0,0 +1,76 @@
+package jnpf.dmsPermission;
+
+import jnpf.base.UserInfo;
+import jnpf.constant.GlobalConst;
+import jnpf.permission.RoleApi;
+import jnpf.permission.entity.RoleEntity;
+import jnpf.util.UserProvider;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.List;
+
+@Component
+@RequiredArgsConstructor
+public class DmsCurrentIdentity {
+    private final RoleApi roleApi;
+    private final DmsPermissionProperties properties;
+
+    public UserInfo requireUser() {
+        UserInfo user = UserProvider.getUser();
+        if (user == null || isBlank(user.getUserId())) {
+            throw DmsPermissionException.of(DmsPermissionError.AUTH_CONTEXT_REQUIRED,
+                    "缂哄皯鍙俊鐨勭粓绔敤鎴疯璇佷笂涓嬫枃");
+        }
+        return user;
+    }
+
+    public String tenantId() {
+        return tenantId(requireUser());
+    }
+
+    public String tenantId(UserInfo user) {
+        if (user == null || isBlank(user.getUserId())) {
+            throw DmsPermissionException.of(DmsPermissionError.AUTH_CONTEXT_REQUIRED,
+                    "缂哄皯鍙俊鐨勭粓绔敤鎴疯璇佷笂涓嬫枃");
+        }
+        return isBlank(user.getTenantId()) ? GlobalConst.DEFAULT_TENANT_VALUE : user.getTenantId().trim();
+    }
+
+    public String userId() {
+        return requireUser().getUserId().trim();
+    }
+
+    public boolean isPermissionAdministrator() {
+        UserInfo user = requireUser();
+        if (Boolean.TRUE.equals(user.getIsAdministrator())) {
+            return true;
+        }
+        List<String> roleIds = user.getRoleIds() == null ? Collections.<String>emptyList() : user.getRoleIds();
+        if (roleIds.isEmpty()) {
+            return false;
+        }
+        List<RoleEntity> roles = roleApi.getListByIds(roleIds);
+        if (roles == null) {
+            return false;
+        }
+        for (RoleEntity role : roles) {
+            if (role != null && properties.getAdminRoleCode().equals(role.getEnCode())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public void requirePermissionAdministrator() {
+        if (!isPermissionAdministrator()) {
+            throw DmsPermissionException.of(DmsPermissionError.ADMIN_REQUIRED,
+                    "闇�瑕佺郴缁熺鐞嗗憳鎴� " + properties.getAdminRoleCode() + " 瑙掕壊");
+        }
+    }
+
+    private boolean isBlank(String value) {
+        return value == null || value.trim().isEmpty();
+    }
+}

--
Gitblit v1.8.0