#
vincentlu
2025-02-12 8a2b58138c9f8fafe68e9f5bef0a80348595000a
#
1个文件已添加
10个文件已修改
89 ■■■■■ 已修改文件
rsf-admin/src/App.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/api/auth/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/login/Login.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/login/Register.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/login/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/SystemInfoVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/application.yml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/App.jsx
@@ -21,6 +21,7 @@
import { themes } from './themes/themes';
import { SPA_NAME, SPA_VERSION, DEFAULT_THEME_NAME, DEFAULT_THEME_MODE, DATA_PROVIDER_SPRING } from "./config/setting";
import ResourceContent from "./page/ResourceContent";
import { getSystemInfo } from '@/api/auth';
const i18nProvider = polyglotI18nProvider(
  locale => {
@@ -50,6 +51,12 @@
  const lightTheme = themes.find(theme => theme.name === themeName)?.light;
  const darkTheme = themes.find(theme => theme.name === themeName)?.dark;
  useEffect(() => {
    getSystemInfo().then(data => {
      localStorage.setItem("system", JSON.stringify(data));
    })
  }, []);
  return (
    <>
      <Admin
rsf-admin/src/api/auth/index.js
@@ -1,5 +1,13 @@
import request from '../../utils/request';
export async function getSystemInfo() {
    const res = await request.get('/system/info');
    if (res.data.code === 200) {
        return res.data.data;
    }
    return Promise.reject(new Error(res.data.msg));
}
export async function tenants(_params) {
    const res = await request.get('/tenant/list', _params);
    if (res.data.code === 200) {
rsf-admin/src/page/login/Login.jsx
@@ -26,7 +26,7 @@
    const notify = useNotify();
    const login = useLogin();
    const location = useLocation();
    const { tenantList } = props;
    const { systemInfo, tenantList } = props;
    const { control, handleSubmit, watch, setValue, getValues } = useForm();
rsf-admin/src/page/login/Register.jsx
@@ -26,7 +26,7 @@
    const notify = useNotify();
    const login = useLogin();
    const location = useLocation();
    const { tab, tenantList } = props;
    const { systemInfo, tenantList } = props;
    const { control, watch, handleSubmit, setValue } = useForm();
rsf-admin/src/page/login/index.jsx
@@ -17,7 +17,7 @@
    useNotify,
} from 'react-admin';
import { LOGIN_BACKGROUND } from '@/config/setting';
import { tenants } from '@/api/auth';
import { getSystemInfo, tenants } from '@/api/auth';
import Login from "./Login";
import Register from "./Register";
@@ -27,11 +27,15 @@
    const isSmallScreen = useMediaQuery(theme.breakpoints.down('md'));
    const [tab, setTab] = useState(0)
    const [systemInfo, setSystemInfo] = useState({});
    const [tenantList, setTenantList] = useState([]);
    const formPosition = isSmallScreen ? 'middle' : 'right'
    useEffect(() => {
        getSystemInfo().then(data => {
            setSystemInfo(data);
        })
        tenants().then(data => {
            setTenantList(data);
        })
@@ -100,8 +104,8 @@
                    <Tab label={translate('page.login.tab.register')} sx={{ fontSize: '.8em' }} />
                </Tabs>
                {tab === 0 && <Login tenantList={tenantList} />}
                {tab === 1 && <Register tenantList={tenantList} />}
                {tab === 0 && <Login systemInfo={systemInfo} tenantList={tenantList} />}
                {tab === 1 && <Register systemInfo={systemInfo} tenantList={tenantList} />}
                <Box mb={1} sx={{ textAlign: 'center' }}>
                    <Typography variant="caption" align="center">{translate("page.login.footer")}</Typography>
rsf-common/src/main/java/com/vincent/rsf/common/enums/SystemModeType.java
@@ -1,6 +1,6 @@
package com.vincent.rsf.common.enums;
public enum SystemMode {
public enum SystemModeType {
    ONLINE,
    OFFLINE,
rsf-server/src/main/java/com/vincent/rsf/server/common/config/ConfigProperties.java
@@ -1,5 +1,6 @@
package com.vincent.rsf.server.common.config;
import com.vincent.rsf.common.enums.SystemModeType;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@@ -35,9 +36,19 @@
    private String tokenKey;
    /**
     * 系统名称
     */
    private String systemName;
    /**
     * 系统版本
     */
    private String systemVersion;
    /**
     * 系统模式( ONLINE / OFFLINE )
     */
    private String mode;
    private String systemMode;
    /**
     * 超级管理员
@@ -48,4 +59,8 @@
        return Arrays.stream(superUsername.split(",")).collect(Collectors.toList());
    }
    public SystemModeType getSystemMode() {
        return SystemModeType.valueOf(systemMode);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
@@ -36,6 +36,7 @@
    public static final String[] FILTER_PATH = new String[]{
            "/demo/**",
            "/test/**",
            "/system/info",
            "/tenant/list",
            "/login",
            "/druid/**",
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java
@@ -1,16 +1,19 @@
package com.vincent.rsf.server.system.controller;
import com.vincent.rsf.common.enums.SystemModeType;
import com.vincent.rsf.common.utils.Utils;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.common.config.ConfigProperties;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.service.EmailService;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.system.controller.param.LoginParam;
import com.vincent.rsf.server.system.controller.param.UpdatePasswordParam;
import com.vincent.rsf.server.system.controller.result.LoginResult;
import com.vincent.rsf.server.system.controller.result.MenuVo;
import com.vincent.rsf.server.system.controller.result.SystemInfoVo;
import com.vincent.rsf.server.system.entity.Menu;
import com.vincent.rsf.server.system.entity.Tenant;
import com.vincent.rsf.server.system.entity.User;
@@ -20,6 +23,7 @@
import com.vincent.rsf.server.system.service.TenantService;
import com.vincent.rsf.server.system.service.UserLoginService;
import com.vincent.rsf.server.system.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -48,10 +52,14 @@
    private RoleMenuService roleMenuService;
    @Resource
    private TenantService tenantService;
    @Autowired
    private EmailService emailService;
    @PostMapping("/login")
    public R login(@RequestBody LoginParam param, HttpServletRequest request) {
//        System.out.println(userService.encodePassword("123456"));
//        emailService.sendVerificationEmail("t1341870251@gmail.com", "123456");
        String username = param.getUsername();
        Long tenantId = param.getTenantId();
        User user = userService.getByUsername(username, tenantId);
@@ -71,6 +79,16 @@
        return R.ok("Sign In Success").add(new LoginResult(accessToken, user, tenant.getName()));
    }
    @GetMapping("/system/info")
    public R systemInfo() {
        SystemModeType systemMode = configProperties.getSystemMode();
        SystemInfoVo infoVo = new SystemInfoVo();
        infoVo.setName(configProperties.getSystemName());
        infoVo.setVersion(configProperties.getSystemVersion());
        infoVo.setMode(systemMode.toString());
        return R.ok(infoVo);
    }
    @GetMapping("/tenant/list")
    public R tenantList() {
        return R.ok().add(tenantService.list());
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/result/SystemInfoVo.java
New file
@@ -0,0 +1,18 @@
package com.vincent.rsf.server.system.controller.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SystemInfoVo {
    private String name;
    private String version;
    private String mode;
}
rsf-server/src/main/resources/application.yml
@@ -28,6 +28,8 @@
    path: logs/@pom.artifactId@
config:
  system-name: @pom.artifactId@
  system-version: @pom.version@
  system-mode: OFFLINE
  token-key: KUHSMcYQ4lePt3r6bckz0P13cBJyoonYqInThvQlUnbsFCIcCcZZAbWZ6UNFztYNYPhGdy6eyb8WdIz8FU2Cz396TyTJk3NI2rtXMHBOehRb4WWJ4MdYVVg2oWPyqRQ2
  mode: OFFLINE
  super-username: root