From a65bd96b5beaa4e24605df53e2d7845c3f3852bd Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 10 二月 2025 10:08:32 +0800
Subject: [PATCH] #

---
 rsf-admin/src/layout/TenantTip.jsx                                                        |   28 ++++++++++++++
 rsf-admin/src/config/authProvider.js                                                      |    5 +-
 rsf-admin/src/themes/rcsTheme.js                                                          |   13 ++++++
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java     |    4 +
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/LoginResult.java |    2 +
 rsf-admin/src/themes/themes.jsx                                                           |   10 ++--
 rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java       |    5 ++
 rsf-server/src/main/resources/application.yml                                             |    3 +
 rsf-admin/src/layout/AppBarToolbar.jsx                                                    |    3 +
 rsf-admin/src/page/settings/index.jsx                                                     |   11 +++++
 rsf-server/src/main/resources/application-dev.yml                                         |    2 
 11 files changed, 74 insertions(+), 12 deletions(-)

diff --git a/rsf-admin/src/config/authProvider.js b/rsf-admin/src/config/authProvider.js
index 1c440e7..38cf41d 100644
--- a/rsf-admin/src/config/authProvider.js
+++ b/rsf-admin/src/config/authProvider.js
@@ -7,7 +7,7 @@
 const AuthProvider = {
   // login
   login: async ({ username, password, tenantId }) => {
-    const { accessToken, user } = await login({
+    const { accessToken, user, tenant } = await login({
       username: username,
       password: password,
       tenantId: tenantId,
@@ -18,7 +18,8 @@
         avatar: avatar,
         fullName: user.nickname,
         id: user.id,
-        username: user.username
+        username: user.username,
+        tenant: tenant,
       }
       setToken(accessToken);
       localStorage.setItem("user", JSON.stringify(userToPersist));
diff --git a/rsf-admin/src/layout/AppBarToolbar.jsx b/rsf-admin/src/layout/AppBarToolbar.jsx
index ea23bef..45cf9db 100644
--- a/rsf-admin/src/layout/AppBarToolbar.jsx
+++ b/rsf-admin/src/layout/AppBarToolbar.jsx
@@ -1,11 +1,12 @@
 import { LoadingIndicator, LocalesMenuButton } from 'react-admin';
-
 import { ThemeSwapper } from '../themes/ThemeSwapper';
+import { TenantTip } from './TenantTip';
 
 export const AppBarToolbar = () => (
     <>
         <LocalesMenuButton />
         <ThemeSwapper />
         <LoadingIndicator />
+        <TenantTip />
     </>
 );
diff --git a/rsf-admin/src/layout/TenantTip.jsx b/rsf-admin/src/layout/TenantTip.jsx
new file mode 100644
index 0000000..e9feb6b
--- /dev/null
+++ b/rsf-admin/src/layout/TenantTip.jsx
@@ -0,0 +1,28 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import { useGetIdentity } from 'react-admin';
+import { Stack, Grid, Box, Typography, Chip, useTheme } from '@mui/material';
+import GroupIcon from '@mui/icons-material/Group';
+
+export const TenantTip = (props) => {
+    const { identity, isLoading, error } = useGetIdentity();
+
+    return (
+        <>
+            <Box sx={{
+                mr: 1,
+                ml: 2,
+            }}>
+                <Chip
+                    icon={<GroupIcon />}
+                    label={identity?.tenant ?? 'Unknown'}
+                    variant="outlined"
+                    sx={{
+                        borderRadius: '10px',
+                        cursor: 'pointer',
+                        paddingLeft: "0.3rem",
+                    }}
+                />
+            </Box>
+        </>
+    )
+}
\ No newline at end of file
diff --git a/rsf-admin/src/page/settings/index.jsx b/rsf-admin/src/page/settings/index.jsx
index bb4a869..ff3f665 100644
--- a/rsf-admin/src/page/settings/index.jsx
+++ b/rsf-admin/src/page/settings/index.jsx
@@ -55,8 +55,17 @@
                             onChange={(event, newValue) => {
                                 setValue(newValue);
                             }}
-                            indicatorColor="secondary"
+                            indicatorColor="primary"
                             textColor="inherit"
+                            TabIndicatorProps={{
+                                style: {
+                                    left: 0,
+                                    right: 'auto',
+                                    width: '5px',
+                                    borderRadius: '2px',
+                                    opacity: .8,
+                                }
+                            }}
                             sx={{
                                 borderRight: 1,
                                 borderColor: 'divider',
diff --git a/rsf-admin/src/themes/rcsTheme.js b/rsf-admin/src/themes/rcsTheme.js
index 41fe76f..e5e24d8 100644
--- a/rsf-admin/src/themes/rcsTheme.js
+++ b/rsf-admin/src/themes/rcsTheme.js
@@ -101,6 +101,19 @@
                 elevation: 1,
             },
         },
+        MuiChip: {
+            styleOverrides: {
+                outlined: {
+                    '.MuiAppBar-root &': {
+                        color: '#ffffff',
+                        borderColor: '#ffffff',
+                        '& .MuiChip-icon': {
+                            color: '#ffffff',
+                        },
+                    },
+                },
+            },
+        },
         //     MuiLinearProgress: {
         //         styleOverrides: {
         //             colorPrimary: {
diff --git a/rsf-admin/src/themes/themes.jsx b/rsf-admin/src/themes/themes.jsx
index 0cbd2c9..6442335 100644
--- a/rsf-admin/src/themes/themes.jsx
+++ b/rsf-admin/src/themes/themes.jsx
@@ -15,11 +15,11 @@
 import { rcsLightTheme, rcsDarkTheme } from './rcsTheme';
 
 export const themes = [
-    { name: 'rcs', light: rcsLightTheme, dark: rcsDarkTheme },
+    { name: 'default', light: rcsLightTheme, dark: rcsDarkTheme },
     { name: 'soft', light: softLightTheme, dark: softDarkTheme },
-    { name: 'default', light: defaultLightTheme, dark: defaultDarkTheme },
+    // { name: 'default', light: defaultLightTheme, dark: defaultDarkTheme },
     { name: 'nano', light: nanoLightTheme, dark: nanoDarkTheme },
-    { name: 'radiant', light: radiantLightTheme, dark: radiantDarkTheme },
-    { name: 'house', light: houseLightTheme, dark: houseDarkTheme },
-    { name: 'chiptune', light: chiptuneTheme },
+    // { name: 'radiant', light: radiantLightTheme, dark: radiantDarkTheme },
+    // { name: 'house', light: houseLightTheme, dark: houseDarkTheme },
+    // { name: 'chiptune', light: chiptuneTheme },
 ];
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java
index 8709c73..4a636f4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java
@@ -30,4 +30,9 @@
      */
     private String tokenKey;
 
+    /**
+     * 瓒呯骇绠$悊鍛�
+     */
+    private String superUsername;
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java
index 7639897..47c1739 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java
@@ -12,6 +12,7 @@
 import com.vincent.rsf.server.system.controller.result.LoginResult;
 import com.vincent.rsf.server.system.controller.result.MenuVo;
 import com.vincent.rsf.server.system.entity.Menu;
+import com.vincent.rsf.server.system.entity.Tenant;
 import com.vincent.rsf.server.system.entity.User;
 import com.vincent.rsf.server.system.entity.UserLogin;
 import com.vincent.rsf.server.system.service.*;
@@ -66,7 +67,8 @@
         String accessToken = JwtUtil.buildToken(new JwtSubject(username, user.getTenantId()),
                 configProperties.getTokenExpireTime(), configProperties.getTokenKey());
         userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, tenantId, null, request);
-        return R.ok("Login Success").add(new LoginResult(accessToken, user));
+        Tenant tenant = tenantService.getById(user.getTenantId());
+        return R.ok("Login Success").add(new LoginResult(accessToken, user, tenant.getName()));
     }
 
     @GetMapping("/tenant/list")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/LoginResult.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/LoginResult.java
index b0618aa..767f2e6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/LoginResult.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/LoginResult.java
@@ -21,4 +21,6 @@
 
     private User user;
 
+    private String tenant;
+
 }
diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml
index 87745e5..890851d 100644
--- a/rsf-server/src/main/resources/application-dev.yml
+++ b/rsf-server/src/main/resources/application-dev.yml
@@ -51,4 +51,4 @@
   max: 30
   min: 10
   timeout: 5000
-  index: 11
+  index: 11
\ No newline at end of file
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index 3166709..6156a60 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -28,4 +28,5 @@
     path: logs/@pom.artifactId@
 
 config:
-  token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2
\ No newline at end of file
+  token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2
+  super-username: root
\ No newline at end of file

--
Gitblit v1.9.1