From 29cc9da9349c893905407a2b971c4d9d90811bc8 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 08 一月 2022 19:15:16 +0800
Subject: [PATCH] update hutool 引入改为 bom 依赖项引入
---
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 156 insertions(+), 0 deletions(-)
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
new file mode 100644
index 0000000..0e97b92
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
@@ -0,0 +1,156 @@
+package com.ruoyi.framework.web.service;
+
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Set;
+
+/**
+ * RuoYi棣栧垱 鑷畾涔夋潈闄愬疄鐜帮紝ss鍙栬嚜SpringSecurity棣栧瓧姣�
+ *
+ * @author ruoyi
+ */
+@Service("ss")
+public class PermissionService {
+ /**
+ * 鎵�鏈夋潈闄愭爣璇�
+ */
+ private static final String ALL_PERMISSION = "*:*:*";
+
+ /**
+ * 绠$悊鍛樿鑹叉潈闄愭爣璇�
+ */
+ private static final String SUPER_ADMIN = "admin";
+
+ private static final String ROLE_DELIMETER = ",";
+
+ private static final String PERMISSION_DELIMETER = ",";
+
+ /**
+ * 楠岃瘉鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
+ *
+ * @param permission 鏉冮檺瀛楃涓�
+ * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
+ */
+ public boolean hasPermi(String permission) {
+ if (StringUtils.isEmpty(permission)) {
+ return false;
+ }
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getMenuPermissions())) {
+ return false;
+ }
+ return hasPermissions(loginUser.getMenuPermissions(), permission);
+ }
+
+ /**
+ * 楠岃瘉鐢ㄦ埛鏄惁涓嶅叿澶囨煇鏉冮檺锛屼笌 hasPermi閫昏緫鐩稿弽
+ *
+ * @param permission 鏉冮檺瀛楃涓�
+ * @return 鐢ㄦ埛鏄惁涓嶅叿澶囨煇鏉冮檺
+ */
+ public boolean lacksPermi(String permission) {
+ return hasPermi(permission) != true;
+ }
+
+ /**
+ * 楠岃瘉鐢ㄦ埛鏄惁鍏锋湁浠ヤ笅浠绘剰涓�涓潈闄�
+ *
+ * @param permissions 浠� PERMISSION_NAMES_DELIMETER 涓哄垎闅旂鐨勬潈闄愬垪琛�
+ * @return 鐢ㄦ埛鏄惁鍏锋湁浠ヤ笅浠绘剰涓�涓潈闄�
+ */
+ public boolean hasAnyPermi(String permissions) {
+ if (StringUtils.isEmpty(permissions)) {
+ return false;
+ }
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getMenuPermissions())) {
+ return false;
+ }
+ Set<String> authorities = loginUser.getMenuPermissions();
+ for (String permission : permissions.split(PERMISSION_DELIMETER)) {
+ if (permission != null && hasPermissions(authorities, permission)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁鏌愪釜瑙掕壊
+ *
+ * @param role 瑙掕壊瀛楃涓�
+ * @return 鐢ㄦ埛鏄惁鍏峰鏌愯鑹�
+ */
+ public boolean hasRole(String role) {
+ if (StringUtils.isEmpty(role)) {
+ return false;
+ }
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (StringUtils.isNull(loginUser)) {
+ return false;
+ }
+ Set<String> rolePermissions = loginUser.getRolePermissions();
+ if (CollectionUtils.isEmpty(rolePermissions)) {
+ return false;
+ }
+ for (String roleKey : rolePermissions) {
+ if (SUPER_ADMIN.equals(roleKey) || roleKey.equals(StringUtils.trim(role))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 楠岃瘉鐢ㄦ埛鏄惁涓嶅叿澶囨煇瑙掕壊锛屼笌 isRole閫昏緫鐩稿弽銆�
+ *
+ * @param role 瑙掕壊鍚嶇О
+ * @return 鐢ㄦ埛鏄惁涓嶅叿澶囨煇瑙掕壊
+ */
+ public boolean lacksRole(String role) {
+ return hasRole(role) != true;
+ }
+
+ /**
+ * 楠岃瘉鐢ㄦ埛鏄惁鍏锋湁浠ヤ笅浠绘剰涓�涓鑹�
+ *
+ * @param roles 浠� ROLE_NAMES_DELIMETER 涓哄垎闅旂鐨勮鑹插垪琛�
+ * @return 鐢ㄦ埛鏄惁鍏锋湁浠ヤ笅浠绘剰涓�涓鑹�
+ */
+ public boolean hasAnyRoles(String roles) {
+ if (StringUtils.isEmpty(roles)) {
+ return false;
+ }
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (StringUtils.isNull(loginUser)) {
+ return false;
+ }
+ Set<String> rolePermissions = loginUser.getRolePermissions();
+ if (CollectionUtils.isEmpty(rolePermissions)) {
+ return false;
+ }
+ for (String role : roles.split(ROLE_DELIMETER)) {
+ for (String roleKey : rolePermissions) {
+ if (SUPER_ADMIN.equals(roleKey) || roleKey.equals(StringUtils.trim(role))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁鍖呭惈鏉冮檺
+ *
+ * @param permissions 鏉冮檺鍒楄〃
+ * @param permission 鏉冮檺瀛楃涓�
+ * @return 鐢ㄦ埛鏄惁鍏峰鏌愭潈闄�
+ */
+ private boolean hasPermissions(Set<String> permissions, String permission) {
+ return permissions.contains(ALL_PERMISSION) || permissions.contains(StringUtils.trim(permission));
+ }
+}
--
Gitblit v1.9.3