From 5aa4b94f532df3c68115c7b8f7b037cdd2e4612a Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期五, 14 二月 2025 09:48:41 +0800
Subject: [PATCH] #

---
 rsf-admin/src/api/auth/index.js                                                            |    5 -
 rsf-admin/src/config/authProvider.js                                                       |   35 +++++------
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java      |   34 +++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BusinessRes.java             |    8 ++
 rsf-admin/src/page/login/Register.jsx                                                      |   10 ++
 rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TenantServiceImpl.java |    8 +-
 rsf-admin/src/page/login/Login.jsx                                                         |   52 +++++++++--------
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TenantController.java    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/LoginParam.java    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/system/service/TenantService.java          |    2 
 10 files changed, 82 insertions(+), 76 deletions(-)

diff --git a/rsf-admin/src/api/auth/index.js b/rsf-admin/src/api/auth/index.js
index 99d1cf5..9642a8b 100644
--- a/rsf-admin/src/api/auth/index.js
+++ b/rsf-admin/src/api/auth/index.js
@@ -18,10 +18,7 @@
 
 export async function login(_params) {
     const res = await request.post('/login', _params);
-    if (res.data.code === 200) {
-        return res.data.data;
-    }
-    return Promise.reject(new Error(res.data.msg));
+    return res.data;
 }
 
 export async function register(_params) {
diff --git a/rsf-admin/src/config/authProvider.js b/rsf-admin/src/config/authProvider.js
index ee3f976..97820b0 100644
--- a/rsf-admin/src/config/authProvider.js
+++ b/rsf-admin/src/config/authProvider.js
@@ -7,32 +7,29 @@
 const AuthProvider = {
   // login
   login: async ({ username, password, tenantId }) => {
-    const { accessToken, user, tenant } = await login({
+    const { code, msg, data } = await login({
       username: username,
       password: password,
       tenantId: tenantId,
-    }).catch((error) => {
-      console.error(error);
-    });
+    })
 
-    if (user && accessToken) {
-      const userToPersist = {
-        avatar: avatar,
-        fullName: user.nickname,
-        id: user.id,
-        username: user.username,
-        tenant: tenant,
+    if (code === 200) {
+      const { accessToken, user, tenant } = data;
+      if (user && accessToken) {
+        const userToPersist = {
+          avatar: avatar,
+          fullName: user.nickname,
+          id: user.id,
+          username: user.username,
+          tenant: tenant,
+        }
+        setToken(accessToken);
+        localStorage.setItem("user", JSON.stringify(userToPersist));
+        return Promise.resolve();
       }
-      setToken(accessToken);
-      localStorage.setItem("user", JSON.stringify(userToPersist));
-      return Promise.resolve();
     }
 
-    return Promise.reject(
-      new HttpError("Unauthorized", 401, {
-        message: "Invalid username or password",
-      }),
-    );
+    return Promise.reject({ code, msg, data });
   },
   // logout
   logout: () => {
diff --git a/rsf-admin/src/page/login/Login.jsx b/rsf-admin/src/page/login/Login.jsx
index b70c721..b86c9d4 100644
--- a/rsf-admin/src/page/login/Login.jsx
+++ b/rsf-admin/src/page/login/Login.jsx
@@ -28,7 +28,7 @@
     const location = useLocation();
     const { systemInfo, tenantList } = props;
 
-    const { control, handleSubmit, watch, setValue, getValues } = useForm();
+    const { control, handleSubmit, watch, setValue, getValues, setError, clearErrors } = useForm();
 
     const [loading, setLoading] = useState(false);
     const [showPassword, setShowPassword] = useState(false);
@@ -53,26 +53,24 @@
         login(
             data,
             location.state ? (location.state).nextPathname : '/'
-        ).catch((error) => {
+        ).catch((res) => {
             setLoading(false);
-            notify(
-                typeof error === 'string'
-                    ? error
-                    : typeof error === 'undefined' || !error.message
-                        ? 'ra.auth.sign_in_error'
-                        : error.message,
-                {
-                    type: 'error',
-                    messageArgs: {
-                        _:
-                            typeof error === 'string'
-                                ? error
-                                : error && error.message
-                                    ? error.message
-                                    : undefined,
-                    },
-                }
-            );
+            const { code, msg, data } = res;
+            if (code === 10003) {
+                setError('username', {
+                    message: msg
+                })
+            } else if (code === 10004) {
+                setError('username', {
+                    message: msg
+                })
+            } else if (code === 10001) {
+                setError('password', {
+                    message: msg
+                })
+            } else {
+                notify(msg, { type: 'error', messageArgs: { _: msg } });
+            }
         });
     };
 
@@ -85,7 +83,7 @@
                 component="form" onSubmit={handleSubmit(onSubmit)} noValidate
             >
                 <Stack spacing={2}>
-                    <Controller
+                    {/* <Controller
                         name="tenantId"
                         control={control}
                         rules={{ required: true }}
@@ -113,14 +111,14 @@
                                 />
                             );
                         }}
-                    />
+                    /> */}
 
                     <Controller
                         name="username"
                         control={control}
                         defaultValue=""
                         rules={{ required: true }}
-                        render={({ field }) => (
+                        render={({ field, fieldState: { error } }) => (
                             <TextField
                                 {...field}
                                 label={translate("page.login.username")}
@@ -128,6 +126,8 @@
                                 disabled={loading}
                                 autoFocus
                                 autoComplete="off"
+                                error={!!error}
+                                helperText={error?.message || ""}
                             />
                         )}
                     />
@@ -137,7 +137,7 @@
                         control={control}
                         defaultValue=""
                         rules={{ required: true }}
-                        render={({ field }) => (
+                        render={({ field, fieldState: { error } }) => (
                             <TextField
                                 {...field}
                                 label={translate("page.login.password")}
@@ -145,6 +145,8 @@
                                 variant="standard"
                                 disabled={loading}
                                 autoComplete="off"
+                                error={!!error}
+                                helperText={error?.message || ""}
                                 InputProps={{
                                     endAdornment: (
                                         <InputAdornment position="end">
@@ -168,7 +170,7 @@
                     <Button
                         type="submit"
                         variant="contained"
-                        disabled={loading || !(tenantId && username && password)}
+                        disabled={loading || !(true && username && password)}
                         sx={{
                             // backgroundColor: "#3D4BA7"
                         }}
diff --git a/rsf-admin/src/page/login/Register.jsx b/rsf-admin/src/page/login/Register.jsx
index e8a0822..9fa0a5c 100644
--- a/rsf-admin/src/page/login/Register.jsx
+++ b/rsf-admin/src/page/login/Register.jsx
@@ -103,14 +103,20 @@
 
     // register
     const onSubmit = (params) => {
-        // console.log(params);
         setLoading(true);
         register(params).then(res => {
             setLoading(false);
             const { code, msg, data } = res;
             if (code === 200) {
-                console.log(data);
                 notify(msg, { type: 'success', messageArgs: { _: msg } });
+                // to login
+                login(
+                    params,
+                    location.state ? (location.state).nextPathname : '/'
+                ).catch(({ code, msg }) => {
+                    setLoading(false);
+                    notify(msg, { type: 'error', messageArgs: { _: msg } });
+                });
             } else if (code === 10002) {
                 setError("username", {
                     message: msg
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BusinessRes.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BusinessRes.java
index 46c7329..cebfa19 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BusinessRes.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BusinessRes.java
@@ -4,8 +4,12 @@
 
 public class BusinessRes implements BaseRes {
 
-    public final static String INVALID_PASSWORD = "10001 - The Current Password Was Incorrect";
+    public final static String INVALID_PASSWORD = "10001 - The current password was incorrect";
 
-    public final static String USERNAME_EXIST = "10002 - The username already exist";
+    public final static String USERNAME_EXIST = "10002 - Username already exist";
+
+    public final static String USERNAME_NOT_EXIST = "10003 - Username doesn't exist";
+
+    public final static String USERNAME_FROZEN = "10004 - Account frozen";
 
 }
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 efef6cd..b38af13 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
@@ -1,6 +1,5 @@
 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.BaseRes;
 import com.vincent.rsf.framework.common.Cools;
@@ -39,8 +38,7 @@
 import java.util.stream.Collectors;
 
 /**
- * 璁よ瘉鎺у埗鍣�
- *
+ * Authority Controller
  * Created by vincent on 1/30/2024
  */
 @RestController
@@ -63,22 +61,20 @@
 
     @PostMapping("/login")
     public R login(@RequestBody LoginParam param, HttpServletRequest request) {
-//        System.out.println(userService.encodePassword("123456"));
         String username = param.getUsername();
-        Long tenantId = param.getTenantId();
-        User user = userService.getByUsername(username, tenantId);
+        User user = userService.getByUsername(username, null);
         if (user == null) {
-            return R.error("Username Does Not Exist");
+            return R.parse(BusinessRes.USERNAME_NOT_EXIST);
         }
         if (!user.getStatus().equals(StatusType.ENABLE.val)) {
-            return R.error("Account Frozen");
+            return R.parse(BusinessRes.USERNAME_FROZEN);
         }
         if (!userService.comparePassword(user.getPassword(), param.getPassword())) {
-            return R.error("Invalid Password");
+            return R.parse(BusinessRes.INVALID_PASSWORD);
         }
         String accessToken = JwtUtil.buildToken(new JwtSubject(username, user.getTenantId()),
                 configProperties.getTokenExpireTime(), configProperties.getTokenKey());
-        userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, tenantId, null, request);
+        userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, user.getTenantId(), null, request);
         Tenant tenant = tenantService.getById(user.getTenantId());
         return R.ok("Sign In Success").add(new LoginResult(accessToken, user, tenant.getName()));
     }
@@ -121,7 +117,6 @@
                 return R.error("The verification code is incorrect.");
             }
         }
-
         // register
         TenantInitParam initParam = new TenantInitParam();
         initParam.setEmail(param.getEmail());
@@ -129,21 +124,26 @@
         initParam.setPassword(param.getPassword());
         initParam.setName(param.getUsername());
         initParam.setFlag(param.getUsername());
-        if (!tenantService.initTenant(initParam)) {
+        Long tenantId = tenantService.initTenant(initParam);
+        if (null == tenantId) {
             throw new CoolException("Failed to register");
         }
-
         redisService.delete(EmailType.REGISTER_VERIFY.toString(), param.getEmail());
-        return R.ok();
+        // token
+        User user = userService.getByUsername(param.getUsername(), tenantId);
+        String accessToken = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()),
+                configProperties.getTokenExpireTime(), configProperties.getTokenKey());
+        userLoginService.saveAsync(user.getId(), accessToken, UserLogin.TYPE_LOGIN, tenantId, null, request);
+        Tenant tenant = tenantService.getById(user.getTenantId());
+        return R.ok().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());
+        infoVo.setMode(configProperties.getSystemMode().toString());
         return R.ok(infoVo);
     }
 
@@ -191,7 +191,7 @@
     @PostMapping("/auth/reset/password")
     public R resetPassword(@RequestBody UpdatePasswordParam param) {
         if (Cools.isEmpty(param.getOldPassword(), param.getNewPassword())) {
-            return R.error("Parameters Cannot Be Empty");
+            return R.parse(BaseRes.PARAM);
         }
         Long userId = getLoginUserId();
         if (userId == null) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TenantController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TenantController.java
index f1676da..8388caa 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TenantController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TenantController.java
@@ -68,7 +68,7 @@
     @OperationLog("Init Tenant")
     @PostMapping("/tenant/init")
     public R init(@RequestBody TenantInitParam param) {
-        return tenantService.initTenant(param) ? R.ok("Initialize Success") : R.parse(BaseRes.PARAM);
+        return null != tenantService.initTenant(param) ? R.ok("Initialize Success") : R.parse(BaseRes.PARAM);
     }
 
     @PreAuthorize("hasAuthority('system:tenant:update')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/LoginParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/LoginParam.java
index 20cff7c..65cd62a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/LoginParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/LoginParam.java
@@ -16,6 +16,6 @@
 
     private String password;
 
-    private Long tenantId;
+//    private Long tenantId;
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TenantService.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TenantService.java
index 29679ae..2757646 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TenantService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/TenantService.java
@@ -6,6 +6,6 @@
 
 public interface TenantService extends IService<Tenant> {
 
-    Boolean initTenant(TenantInitParam param);
+    Long initTenant(TenantInitParam param);
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TenantServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TenantServiceImpl.java
index ea68f4a..c5c6ff7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TenantServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TenantServiceImpl.java
@@ -40,13 +40,13 @@
 
     @Override
     @Transactional
-    public Boolean initTenant(TenantInitParam param) {
+    public Long initTenant(TenantInitParam param) {
         // valid ----------------------------
         if (null == param) {
-            return false;
+            return null;
         }
         if (Cools.isEmpty(param.getName(), param.getFlag(), param.getUsername(), param.getPassword())) {
-            return false;
+            return null;
         }
 
         if (null != userService.getByUsername(param.getUsername(), null)) {
@@ -133,7 +133,7 @@
             }
         }
 
-        return true;
+        return tenant.getId();
     }
 
 }

--
Gitblit v1.9.1