|
@@ -1,14 +1,12 @@
|
|
|
-package com.backendsys.config.Security.utils;
|
|
|
+package com.backendsys.modules.common.config.security.utils;
|
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
-import com.backendsys.config.Security.entity.SecurityUserInfo;
|
|
|
+import com.backendsys.modules.common.config.security.entity.SecurityUserInfo;
|
|
|
+import com.backendsys.modules.common.enums.MatchType;
|
|
|
import io.jsonwebtoken.Claims;
|
|
|
import io.jsonwebtoken.Jwts;
|
|
|
-import org.springframework.context.ApplicationContext;
|
|
|
-import org.springframework.context.support.ClassPathXmlApplicationContext;
|
|
|
-import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.security.core.Authentication;
|
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
|
@@ -17,7 +15,6 @@ import javax.crypto.spec.SecretKeySpec;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
import java.util.Base64;
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
|
|
|
public class SecurityUtil {
|
|
|
|
|
@@ -60,18 +57,33 @@ public class SecurityUtil {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 判断是否具备权限,或者是超级管理员
|
|
|
+ * 判断是否具备权限 (单个)
|
|
|
*/
|
|
|
public static Boolean hasPermission(String permission) {
|
|
|
SecurityUserInfo userInfo = getUserInfo();
|
|
|
List<String> modules = userInfo.getModules();
|
|
|
return modules.contains(permission);
|
|
|
}
|
|
|
- public static Boolean hasPermissions(List<String> permissions) {
|
|
|
+ /**
|
|
|
+ * 判断是否具备用户权限 (多个) (默认 AND)
|
|
|
+ * - SecurityUtil.hasPermissions(Arrays.asList("3.2.1", "3.2.2"))
|
|
|
+ * - SecurityUtil.hasPermissions(Arrays.asList("3.2.1", "3.2.2"), MatchType.OR)
|
|
|
+ */
|
|
|
+ public static Boolean hasPermissions(List<String> permissions, MatchType matchType) {
|
|
|
SecurityUserInfo userInfo = getUserInfo();
|
|
|
List<String> modules = userInfo.getModules();
|
|
|
- return permissions.stream().allMatch(modules::contains);
|
|
|
+ if (matchType.equals(MatchType.AND)) {
|
|
|
+ return permissions.stream().allMatch(modules::contains);
|
|
|
+ } else if (matchType.equals(MatchType.OR)) {
|
|
|
+ return permissions.stream().anyMatch(modules::contains);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
+ public static Boolean hasPermissions(List<String> permissions) {
|
|
|
+ return hasPermissions(permissions, MatchType.AND);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 判断是否超级管理员
|
|
|
*/
|