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