#
vincentlu
2025-02-14 5aa4b94f532df3c68115c7b8f7b037cdd2e4612a
#
10个文件已修改
136 ■■■■ 已修改文件
rsf-admin/src/api/auth/index.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/config/authProvider.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/login/Login.jsx 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/login/Register.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/BusinessRes.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/AuthController.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/TenantController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/param/LoginParam.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/service/TenantService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/service/impl/TenantServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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) {
rsf-admin/src/config/authProvider.js
@@ -7,14 +7,14 @@
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 (code === 200) {
      const { accessToken, user, tenant } = data;
    if (user && accessToken) {
      const userToPersist = {
        avatar: avatar,
@@ -27,12 +27,9 @@
      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: () => {
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"
                        }}
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
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";
}
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) {
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')")
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;
}
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);
}
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();
    }
}