From 92a75a7b157e6fd6423df17cfd32015017bdb8c9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 14 八月 2026 09:21:58 +0800
Subject: [PATCH] update
---
backend/src/main/java/com/tourguide/security/AppUserPrincipal.java | 25 ++++++++++++++++++++-----
1 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/backend/src/main/java/com/tourguide/security/AppUserPrincipal.java b/backend/src/main/java/com/tourguide/security/AppUserPrincipal.java
index c98d80d..8c63209 100644
--- a/backend/src/main/java/com/tourguide/security/AppUserPrincipal.java
+++ b/backend/src/main/java/com/tourguide/security/AppUserPrincipal.java
@@ -5,7 +5,8 @@
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import java.util.Collections;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
public class AppUserPrincipal {
@@ -13,22 +14,36 @@
private final String username;
private final String role;
private final ClientType clientType;
+ private final List<String> menuCodes;
public AppUserPrincipal(Long userId, String username, String role, ClientType clientType) {
+ this(userId, username, role, clientType, Collections.<String>emptyList());
+ }
+
+ public AppUserPrincipal(Long userId, String username, String role, ClientType clientType,
+ Collection<String> menuCodes) {
this.userId = userId;
this.username = username;
this.role = role;
this.clientType = clientType;
+ this.menuCodes = new ArrayList<String>(menuCodes);
}
public Long getUserId() { return userId; }
public String getUsername() { return username; }
public String getRole() { return role; }
public ClientType getClientType() { return clientType; }
+ public List<String> getMenuCodes() { return Collections.unmodifiableList(menuCodes); }
public List<GrantedAuthority> getAuthorities() {
- if (clientType == ClientType.ADMIN && !"ADMIN".equals(role)) {
- return Arrays.<GrantedAuthority>asList(
- new SimpleGrantedAuthority("ROLE_ADMIN"),
- new SimpleGrantedAuthority("ROLE_" + role));
+ if (clientType == ClientType.ADMIN) {
+ List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
+ authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
+ if (!"ADMIN".equals(role)) {
+ authorities.add(new SimpleGrantedAuthority("ROLE_" + role));
+ }
+ for (String menuCode : menuCodes) {
+ authorities.add(new SimpleGrantedAuthority("PERM_" + menuCode));
+ }
+ return authorities;
}
return Collections.<GrantedAuthority>singletonList(new SimpleGrantedAuthority("ROLE_" + role));
}
--
Gitblit v1.7.1