diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java
index 690f74024..81abd325b 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IAuthStrategy.java
@@ -28,14 +28,14 @@ public interface IAuthStrategy {
throw new ServiceException("授权类型不正确!");
}
IAuthStrategy instance = SpringUtils.getBean(beanName);
- instance.validate(loginBody);
+ instance.validate();
return instance.login(clientId, loginBody, client);
}
/**
* 参数校验
*/
- void validate(LoginBody loginBody);
+ void validate();
/**
* 登录
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java
index edb12c925..6f22cfc5e 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java
@@ -2,6 +2,7 @@ package org.dromara.web.service.impl;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
@@ -12,12 +13,12 @@ import org.dromara.common.core.domain.model.LoginBody;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.LoginType;
import org.dromara.common.core.enums.UserStatus;
+import org.dromara.common.core.exception.user.AuthException;
import org.dromara.common.core.exception.user.CaptchaExpireException;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MessageUtils;
+import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.auth.EmailGroup;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
@@ -44,15 +45,26 @@ public class EmailAuthStrategy implements IAuthStrategy {
private final SysUserMapper userMapper;
@Override
- public void validate(LoginBody loginBody) {
- ValidatorUtils.validate(loginBody, EmailGroup.class);
+ public void validate() {
+ String email = ServletUtils.getParamFromBody("email");
+ String emailCode = ServletUtils.getParamFromBody("emailCode");
+ if (StringUtils.isBlank(email)) {
+ throw new AuthException("user.email.not.blank");
+ }
+ if (StringUtils.isBlank(emailCode)) {
+ throw new AuthException("email.code.not.blank");
+ }
+ // 校验邮箱是否合法
+ if (!Validator.isEmail(email, true)) {
+ throw new AuthException("user.email.not.valid");
+ }
}
@Override
public LoginVo login(String clientId, LoginBody loginBody, SysClient client) {
String tenantId = loginBody.getTenantId();
- String email = loginBody.getEmail();
- String emailCode = loginBody.getEmailCode();
+ String email = ServletUtils.getParamFromBody("email");
+ String emailCode = ServletUtils.getParamFromBody("emailCode");
// 通过邮箱查找用户
SysUserVo user = loadUserByEmail(tenantId, email);
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java
index 46bd5661f..d31f6d173 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java
@@ -3,23 +3,26 @@ package org.dromara.web.service.impl;
import cn.dev33.satoken.secure.BCrypt;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.constant.GlobalConstants;
+import org.dromara.common.core.constant.UserConstants;
import org.dromara.common.core.domain.model.LoginBody;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.LoginType;
import org.dromara.common.core.enums.UserStatus;
+import org.dromara.common.core.exception.user.AuthException;
import org.dromara.common.core.exception.user.CaptchaException;
import org.dromara.common.core.exception.user.CaptchaExpireException;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MessageUtils;
+import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.auth.PasswordGroup;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
@@ -48,8 +51,8 @@ public class PasswordAuthStrategy implements IAuthStrategy {
private final SysUserMapper userMapper;
@Override
- public void validate(LoginBody loginBody) {
- ValidatorUtils.validate(loginBody, PasswordGroup.class);
+ public void validate() {
+ ValidatorUtils.validate(ServletUtils.getParamBody());
}
@Override
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java
index 0ddb75350..4b90f9caa 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java
@@ -12,12 +12,12 @@ import org.dromara.common.core.domain.model.LoginBody;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.LoginType;
import org.dromara.common.core.enums.UserStatus;
+import org.dromara.common.core.exception.user.AuthException;
import org.dromara.common.core.exception.user.CaptchaExpireException;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MessageUtils;
+import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.auth.SmsGroup;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.tenant.helper.TenantHelper;
@@ -44,15 +44,22 @@ public class SmsAuthStrategy implements IAuthStrategy {
private final SysUserMapper userMapper;
@Override
- public void validate(LoginBody loginBody) {
- ValidatorUtils.validate(loginBody, SmsGroup.class);
+ public void validate() {
+ String phonenumber = ServletUtils.getParamFromBody("phonenumber");
+ String smsCode = ServletUtils.getParamFromBody("smsCode");
+ if (StringUtils.isBlank(phonenumber)) {
+ throw new AuthException("user.phonenumber.not.blank");
+ }
+ if (StringUtils.isBlank(smsCode)) {
+ throw new AuthException("sms.code.not.blank");
+ }
}
@Override
public LoginVo login(String clientId, LoginBody loginBody, SysClient client) {
String tenantId = loginBody.getTenantId();
- String phonenumber = loginBody.getPhonenumber();
- String smsCode = loginBody.getSmsCode();
+ String phonenumber = ServletUtils.getParamFromBody("phonenumber");
+ String smsCode = ServletUtils.getParamFromBody("smsCode");
// 通过手机号查找用户
SysUserVo user = loadUserByPhonenumber(tenantId, phonenumber);
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java
index 2b055df06..2c7842b37 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java
@@ -17,10 +17,11 @@ import org.dromara.common.core.domain.model.LoginBody;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.UserStatus;
import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.exception.user.AuthException;
import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.MessageUtils;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.auth.SocialGroup;
+import org.dromara.common.core.utils.ServletUtils;
+import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.social.config.properties.SocialProperties;
import org.dromara.common.social.utils.SocialUtils;
@@ -53,8 +54,19 @@ public class SocialAuthStrategy implements IAuthStrategy {
@Override
- public void validate(LoginBody loginBody) {
- ValidatorUtils.validate(loginBody, SocialGroup.class);
+ public void validate() {
+ String source = ServletUtils.getParamFromBody("source");
+ String socialCode = ServletUtils.getParamFromBody("socialCode");
+ String socialState = ServletUtils.getParamFromBody("socialState");
+ if (StringUtils.isBlank(source)) {
+ throw new AuthException("social.source.not.blank");
+ }
+ if (StringUtils.isBlank(socialCode)) {
+ throw new AuthException("social.code.not.blank");
+ }
+ if (StringUtils.isBlank(socialState)) {
+ throw new AuthException("social.state.not.blank");
+ }
}
/**
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java
index 5016e5bc4..926eaf898 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java
@@ -9,9 +9,10 @@ import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.domain.model.LoginBody;
import org.dromara.common.core.domain.model.XcxLoginUser;
import org.dromara.common.core.enums.UserStatus;
+import org.dromara.common.core.exception.user.AuthException;
import org.dromara.common.core.utils.MessageUtils;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.auth.WechatGroup;
+import org.dromara.common.core.utils.ServletUtils;
+import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.SysClient;
import org.dromara.system.domain.vo.SysUserVo;
@@ -33,14 +34,17 @@ public class XcxAuthStrategy implements IAuthStrategy {
private final SysLoginService loginService;
@Override
- public void validate(LoginBody loginBody) {
- ValidatorUtils.validate(loginBody, WechatGroup.class);
+ public void validate() {
+ String xcxCode = ServletUtils.getParamFromBody("xcxCode");
+ if (StringUtils.isBlank(xcxCode)) {
+ throw new AuthException("xcx.code.not.blank");
+ }
}
@Override
public LoginVo login(String clientId, LoginBody loginBody, SysClient client) {
// xcxCode 为 小程序调用 wx.login 授权后获取
- String xcxCode = loginBody.getXcxCode();
+ String xcxCode = ServletUtils.getParamFromBody("xcxCode");
// todo 以下自行实现
// 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid
String openid = "";
diff --git a/ruoyi-admin/src/main/resources/i18n/messages.properties b/ruoyi-admin/src/main/resources/i18n/messages.properties
index c8635612a..c111fdbe7 100644
--- a/ruoyi-admin/src/main/resources/i18n/messages.properties
+++ b/ruoyi-admin/src/main/resources/i18n/messages.properties
@@ -1,58 +1,61 @@
-#错误消息
-not.null=* 必须填写
-user.jcaptcha.error=验证码错误
-user.jcaptcha.expire=验证码已失效
-user.not.exists=对不起, 您的账号:{0} 不存在.
-user.password.not.match=用户不存在/密码错误
-user.password.retry.limit.count=密码输入错误{0}次
-user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
-user.password.delete=对不起,您的账号:{0} 已被删除
-user.blocked=对不起,您的账号:{0} 已禁用,请联系管理员
-role.blocked=角色已封禁,请联系管理员
-user.logout.success=退出成功
-length.not.valid=长度必须在{min}到{max}个字符之间
-user.username.not.blank=用户名不能为空
-user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
-user.username.length.valid=账户长度必须在{min}到{max}个字符之间
-user.password.not.blank=用户密码不能为空
-user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间
-user.password.not.valid=* 5-50个字符
-user.email.not.valid=邮箱格式错误
-user.email.not.blank=邮箱不能为空
-user.phonenumber.not.blank=用户手机号不能为空
-user.mobile.phone.number.not.valid=手机号格式错误
-user.login.success=登录成功
-user.register.success=注册成功
-user.register.save.error=保存用户 {0} 失败,注册账号已存在
-user.register.error=注册失败,请联系系统管理人员
-user.notfound=请重新登录
-user.forcelogout=管理员强制退出,请重新登录
-user.unknown.error=未知错误,请重新登录
-auth.grant.type.error=认证权限类型错误
-auth.grant.type.blocked=认证权限类型已禁用
-auth.grant.type.not.blank=认证权限类型不能为空
-auth.clientid.not.blank=认证客户端id不能为空
-##文件上传消息
-upload.exceed.maxSize=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{0}MB!
-upload.filename.exceed.length=上传的文件名最长{0}个字符
-##权限
-no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
-no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
-no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
-no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
-no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
-no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
-repeat.submit.message=不允许重复提交,请稍候再试
-rate.limiter.message=访问过于频繁,请稍候再试
-sms.code.not.blank=短信验证码不能为空
-sms.code.retry.limit.count=短信验证码输入错误{0}次
-sms.code.retry.limit.exceed=短信验证码输入错误{0}次,帐户锁定{1}分钟
-email.code.not.blank=邮箱验证码不能为空
-email.code.retry.limit.count=邮箱验证码输入错误{0}次
-email.code.retry.limit.exceed=邮箱验证码输入错误{0}次,帐户锁定{1}分钟
-xcx.code.not.blank=小程序code不能为空
-##租户
-tenant.number.not.blank=租户编号不能为空
-tenant.not.exists=对不起, 您的租户不存在,请联系管理员
-tenant.blocked=对不起,您的租户已禁用,请联系管理员
-tenant.expired=对不起,您的租户已过期,请联系管理员
+#\u9519\u8BEF\u6D88\u606F
+not.null=* \u5FC5\u987B\u586B\u5199
+user.jcaptcha.error=\u9A8C\u8BC1\u7801\u9519\u8BEF
+user.jcaptcha.expire=\u9A8C\u8BC1\u7801\u5DF2\u5931\u6548
+user.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u8D26\u53F7\uFF1A{0} \u4E0D\u5B58\u5728.
+user.password.not.match=\u7528\u6237\u4E0D\u5B58\u5728/\u5BC6\u7801\u9519\u8BEF
+user.password.retry.limit.count=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
+user.password.retry.limit.exceed=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F
+user.password.delete=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u8D26\u53F7\uFF1A{0} \u5DF2\u88AB\u5220\u9664
+user.blocked=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u8D26\u53F7\uFF1A{0} \u5DF2\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+role.blocked=\u89D2\u8272\u5DF2\u5C01\u7981\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+user.logout.success=\u9000\u51FA\u6210\u529F
+length.not.valid=\u957F\u5EA6\u5FC5\u987B\u5728{min}\u5230{max}\u4E2A\u5B57\u7B26\u4E4B\u95F4
+user.username.not.blank=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
+user.username.not.valid=* 2\u523020\u4E2A\u6C49\u5B57\u3001\u5B57\u6BCD\u3001\u6570\u5B57\u6216\u4E0B\u5212\u7EBF\u7EC4\u6210\uFF0C\u4E14\u5FC5\u987B\u4EE5\u975E\u6570\u5B57\u5F00\u5934
+user.username.length.valid=\u8D26\u6237\u957F\u5EA6\u5FC5\u987B\u5728{min}\u5230{max}\u4E2A\u5B57\u7B26\u4E4B\u95F4
+user.password.not.blank=\u7528\u6237\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
+user.password.length.valid=\u7528\u6237\u5BC6\u7801\u957F\u5EA6\u5FC5\u987B\u5728{min}\u5230{max}\u4E2A\u5B57\u7B26\u4E4B\u95F4
+user.password.not.valid=* 5-50\u4E2A\u5B57\u7B26
+user.email.not.valid=\u90AE\u7BB1\u683C\u5F0F\u9519\u8BEF
+user.email.not.blank=\u90AE\u7BB1\u4E0D\u80FD\u4E3A\u7A7A
+user.phonenumber.not.blank=\u7528\u6237\u624B\u673A\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+user.mobile.phone.number.not.valid=\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF
+user.login.success=\u767B\u5F55\u6210\u529F
+user.register.success=\u6CE8\u518C\u6210\u529F
+user.register.save.error=\u4FDD\u5B58\u7528\u6237 {0} \u5931\u8D25\uFF0C\u6CE8\u518C\u8D26\u53F7\u5DF2\u5B58\u5728
+user.register.error=\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u8054\u7CFB\u7CFB\u7EDF\u7BA1\u7406\u4EBA\u5458
+user.notfound=\u8BF7\u91CD\u65B0\u767B\u5F55
+user.forcelogout=\u7BA1\u7406\u5458\u5F3A\u5236\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55
+user.unknown.error=\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55
+auth.grant.type.error=\u8BA4\u8BC1\u6743\u9650\u7C7B\u578B\u9519\u8BEF
+auth.grant.type.blocked=\u8BA4\u8BC1\u6743\u9650\u7C7B\u578B\u5DF2\u7981\u7528
+auth.grant.type.not.blank=\u8BA4\u8BC1\u6743\u9650\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
+auth.clientid.not.blank=\u8BA4\u8BC1\u5BA2\u6237\u7AEFid\u4E0D\u80FD\u4E3A\u7A7A
+##\u6587\u4EF6\u4E0A\u4F20\u6D88\u606F
+upload.exceed.maxSize=\u4E0A\u4F20\u7684\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA\u9650\u5236\u7684\u6587\u4EF6\u5927\u5C0F\uFF01
\u5141\u8BB8\u7684\u6587\u4EF6\u6700\u5927\u5927\u5C0F\u662F\uFF1A{0}MB\uFF01
+upload.filename.exceed.length=\u4E0A\u4F20\u7684\u6587\u4EF6\u540D\u6700\u957F{0}\u4E2A\u5B57\u7B26
+##\u6743\u9650
+no.permission=\u60A8\u6CA1\u6709\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.create.permission=\u60A8\u6CA1\u6709\u521B\u5EFA\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.update.permission=\u60A8\u6CA1\u6709\u4FEE\u6539\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.delete.permission=\u60A8\u6CA1\u6709\u5220\u9664\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.export.permission=\u60A8\u6CA1\u6709\u5BFC\u51FA\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.view.permission=\u60A8\u6CA1\u6709\u67E5\u770B\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+repeat.submit.message=\u4E0D\u5141\u8BB8\u91CD\u590D\u63D0\u4EA4\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5
+rate.limiter.message=\u8BBF\u95EE\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5
+sms.code.not.blank=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u4E0D\u80FD\u4E3A\u7A7A
+sms.code.retry.limit.count=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
+sms.code.retry.limit.exceed=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F
+email.code.not.blank=\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0D\u80FD\u4E3A\u7A7A
+email.code.retry.limit.count=\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
+email.code.retry.limit.exceed=\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F
+xcx.code.not.blank=\u5C0F\u7A0B\u5E8Fcode\u4E0D\u80FD\u4E3A\u7A7A
+social.source.not.blank=\u7B2C\u4E09\u65B9\u767B\u5F55\u5E73\u53F0\u4E0D\u80FD\u4E3A\u7A7A
+social.code.not.blank=\u7B2C\u4E09\u65B9\u767B\u5F55code\u4E0D\u80FD\u4E3A\u7A7A
+social.state.not.blank=\u7B2C\u4E09\u65B9\u767B\u5F55socialState\u4E0D\u80FD\u4E3A\u7A7A
+##\u79DF\u6237
+tenant.number.not.blank=\u79DF\u6237\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+tenant.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u79DF\u6237\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+tenant.blocked=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u79DF\u6237\u5DF2\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+tenant.expired=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u79DF\u6237\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
index 355da8432..8abb8a0f1 100644
--- a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
+++ b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
@@ -1,4 +1,4 @@
-#错误消息
+#\u9519\u8BEF\u6D88\u606F
not.null=* Required fill in
user.jcaptcha.error=Captcha error
user.jcaptcha.expire=Captcha invalid
@@ -6,9 +6,9 @@ user.not.exists=Sorry, your account: {0} does not exist
user.password.not.match=User does not exist/Password error
user.password.retry.limit.count=Password input error {0} times
user.password.retry.limit.exceed=Password input error {0} times, account locked for {1} minutes
-user.password.delete=Sorry, your account:{0} has been deleted
+user.password.delete=Sorry, your account\uFF1A{0} has been deleted
user.blocked=Sorry, your account: {0} has been disabled. Please contact the administrator
-role.blocked=Role disabled,please contact administrators
+role.blocked=Role disabled\uFF0Cplease contact administrators
user.logout.success=Exit successful
length.not.valid=The length must be between {min} and {max} characters
user.username.not.blank=Username cannot be blank
@@ -26,22 +26,22 @@ user.register.success=Register successful
user.register.save.error=Failed to save user {0}, The registered account already exists
user.register.error=Register failed, please contact system administrator
user.notfound=Please login again
-user.forcelogout=The administrator is forced to exit,please login again
+user.forcelogout=The administrator is forced to exit\uFF0Cplease login again
user.unknown.error=Unknown error, please login again
auth.grant.type.error=Auth grant type error
auth.grant.type.blocked=Auth grant type disabled
auth.grant.type.not.blank=Auth grant type cannot be blank
auth.clientid.not.blank=Auth clientid cannot be blank
-##文件上传消息
-upload.exceed.maxSize=The uploaded file size exceeds the limit file size!
the maximum allowed file size is:{0}MB!
+##\u6587\u4EF6\u4E0A\u4F20\u6D88\u606F
+upload.exceed.maxSize=The uploaded file size exceeds the limit file size\uFF01
the maximum allowed file size is\uFF1A{0}MB\uFF01
upload.filename.exceed.length=The maximum length of uploaded file name is {0} characters
-##权限
-no.permission=You do not have permission to the data,please contact your administrator to add permissions [{0}]
-no.create.permission=You do not have permission to create data,please contact your administrator to add permissions [{0}]
-no.update.permission=You do not have permission to modify data,please contact your administrator to add permissions [{0}]
-no.delete.permission=You do not have permission to delete data,please contact your administrator to add permissions [{0}]
-no.export.permission=You do not have permission to export data,please contact your administrator to add permissions [{0}]
-no.view.permission=You do not have permission to view data,please contact your administrator to add permissions [{0}]
+##\u6743\u9650
+no.permission=You do not have permission to the data\uFF0Cplease contact your administrator to add permissions [{0}]
+no.create.permission=You do not have permission to create data\uFF0Cplease contact your administrator to add permissions [{0}]
+no.update.permission=You do not have permission to modify data\uFF0Cplease contact your administrator to add permissions [{0}]
+no.delete.permission=You do not have permission to delete data\uFF0Cplease contact your administrator to add permissions [{0}]
+no.export.permission=You do not have permission to export data\uFF0Cplease contact your administrator to add permissions [{0}]
+no.view.permission=You do not have permission to view data\uFF0Cplease contact your administrator to add permissions [{0}]
repeat.submit.message=Repeat submit is not allowed, please try again later
rate.limiter.message=Visit too frequently, please try again later
sms.code.not.blank=Sms code cannot be blank
@@ -51,7 +51,10 @@ email.code.not.blank=Email code cannot be blank
email.code.retry.limit.count=Email code input error {0} times
email.code.retry.limit.exceed=Email code input error {0} times, account locked for {1} minutes
xcx.code.not.blank=Mini program code cannot be blank
-##租户
+social.source.not.blank=social source cannot be blank
+social.code.not.blank=social code cannot be blank
+social.state.not.blank=social state cannot be blank
+##\u79DF\u6237
tenant.number.not.blank=Tenant number cannot be blank
tenant.not.exists=Sorry, your tenant does not exist. Please contact the administrator
tenant.blocked=Sorry, your tenant is disabled. Please contact the administrator
diff --git a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
index c8635612a..c111fdbe7 100644
--- a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
+++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
@@ -1,58 +1,61 @@
-#错误消息
-not.null=* 必须填写
-user.jcaptcha.error=验证码错误
-user.jcaptcha.expire=验证码已失效
-user.not.exists=对不起, 您的账号:{0} 不存在.
-user.password.not.match=用户不存在/密码错误
-user.password.retry.limit.count=密码输入错误{0}次
-user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定{1}分钟
-user.password.delete=对不起,您的账号:{0} 已被删除
-user.blocked=对不起,您的账号:{0} 已禁用,请联系管理员
-role.blocked=角色已封禁,请联系管理员
-user.logout.success=退出成功
-length.not.valid=长度必须在{min}到{max}个字符之间
-user.username.not.blank=用户名不能为空
-user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头
-user.username.length.valid=账户长度必须在{min}到{max}个字符之间
-user.password.not.blank=用户密码不能为空
-user.password.length.valid=用户密码长度必须在{min}到{max}个字符之间
-user.password.not.valid=* 5-50个字符
-user.email.not.valid=邮箱格式错误
-user.email.not.blank=邮箱不能为空
-user.phonenumber.not.blank=用户手机号不能为空
-user.mobile.phone.number.not.valid=手机号格式错误
-user.login.success=登录成功
-user.register.success=注册成功
-user.register.save.error=保存用户 {0} 失败,注册账号已存在
-user.register.error=注册失败,请联系系统管理人员
-user.notfound=请重新登录
-user.forcelogout=管理员强制退出,请重新登录
-user.unknown.error=未知错误,请重新登录
-auth.grant.type.error=认证权限类型错误
-auth.grant.type.blocked=认证权限类型已禁用
-auth.grant.type.not.blank=认证权限类型不能为空
-auth.clientid.not.blank=认证客户端id不能为空
-##文件上传消息
-upload.exceed.maxSize=上传的文件大小超出限制的文件大小!
允许的文件最大大小是:{0}MB!
-upload.filename.exceed.length=上传的文件名最长{0}个字符
-##权限
-no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
-no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
-no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
-no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
-no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
-no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
-repeat.submit.message=不允许重复提交,请稍候再试
-rate.limiter.message=访问过于频繁,请稍候再试
-sms.code.not.blank=短信验证码不能为空
-sms.code.retry.limit.count=短信验证码输入错误{0}次
-sms.code.retry.limit.exceed=短信验证码输入错误{0}次,帐户锁定{1}分钟
-email.code.not.blank=邮箱验证码不能为空
-email.code.retry.limit.count=邮箱验证码输入错误{0}次
-email.code.retry.limit.exceed=邮箱验证码输入错误{0}次,帐户锁定{1}分钟
-xcx.code.not.blank=小程序code不能为空
-##租户
-tenant.number.not.blank=租户编号不能为空
-tenant.not.exists=对不起, 您的租户不存在,请联系管理员
-tenant.blocked=对不起,您的租户已禁用,请联系管理员
-tenant.expired=对不起,您的租户已过期,请联系管理员
+#\u9519\u8BEF\u6D88\u606F
+not.null=* \u5FC5\u987B\u586B\u5199
+user.jcaptcha.error=\u9A8C\u8BC1\u7801\u9519\u8BEF
+user.jcaptcha.expire=\u9A8C\u8BC1\u7801\u5DF2\u5931\u6548
+user.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u8D26\u53F7\uFF1A{0} \u4E0D\u5B58\u5728.
+user.password.not.match=\u7528\u6237\u4E0D\u5B58\u5728/\u5BC6\u7801\u9519\u8BEF
+user.password.retry.limit.count=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
+user.password.retry.limit.exceed=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F
+user.password.delete=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u8D26\u53F7\uFF1A{0} \u5DF2\u88AB\u5220\u9664
+user.blocked=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u8D26\u53F7\uFF1A{0} \u5DF2\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+role.blocked=\u89D2\u8272\u5DF2\u5C01\u7981\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+user.logout.success=\u9000\u51FA\u6210\u529F
+length.not.valid=\u957F\u5EA6\u5FC5\u987B\u5728{min}\u5230{max}\u4E2A\u5B57\u7B26\u4E4B\u95F4
+user.username.not.blank=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
+user.username.not.valid=* 2\u523020\u4E2A\u6C49\u5B57\u3001\u5B57\u6BCD\u3001\u6570\u5B57\u6216\u4E0B\u5212\u7EBF\u7EC4\u6210\uFF0C\u4E14\u5FC5\u987B\u4EE5\u975E\u6570\u5B57\u5F00\u5934
+user.username.length.valid=\u8D26\u6237\u957F\u5EA6\u5FC5\u987B\u5728{min}\u5230{max}\u4E2A\u5B57\u7B26\u4E4B\u95F4
+user.password.not.blank=\u7528\u6237\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
+user.password.length.valid=\u7528\u6237\u5BC6\u7801\u957F\u5EA6\u5FC5\u987B\u5728{min}\u5230{max}\u4E2A\u5B57\u7B26\u4E4B\u95F4
+user.password.not.valid=* 5-50\u4E2A\u5B57\u7B26
+user.email.not.valid=\u90AE\u7BB1\u683C\u5F0F\u9519\u8BEF
+user.email.not.blank=\u90AE\u7BB1\u4E0D\u80FD\u4E3A\u7A7A
+user.phonenumber.not.blank=\u7528\u6237\u624B\u673A\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+user.mobile.phone.number.not.valid=\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF
+user.login.success=\u767B\u5F55\u6210\u529F
+user.register.success=\u6CE8\u518C\u6210\u529F
+user.register.save.error=\u4FDD\u5B58\u7528\u6237 {0} \u5931\u8D25\uFF0C\u6CE8\u518C\u8D26\u53F7\u5DF2\u5B58\u5728
+user.register.error=\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u8054\u7CFB\u7CFB\u7EDF\u7BA1\u7406\u4EBA\u5458
+user.notfound=\u8BF7\u91CD\u65B0\u767B\u5F55
+user.forcelogout=\u7BA1\u7406\u5458\u5F3A\u5236\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55
+user.unknown.error=\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55
+auth.grant.type.error=\u8BA4\u8BC1\u6743\u9650\u7C7B\u578B\u9519\u8BEF
+auth.grant.type.blocked=\u8BA4\u8BC1\u6743\u9650\u7C7B\u578B\u5DF2\u7981\u7528
+auth.grant.type.not.blank=\u8BA4\u8BC1\u6743\u9650\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
+auth.clientid.not.blank=\u8BA4\u8BC1\u5BA2\u6237\u7AEFid\u4E0D\u80FD\u4E3A\u7A7A
+##\u6587\u4EF6\u4E0A\u4F20\u6D88\u606F
+upload.exceed.maxSize=\u4E0A\u4F20\u7684\u6587\u4EF6\u5927\u5C0F\u8D85\u51FA\u9650\u5236\u7684\u6587\u4EF6\u5927\u5C0F\uFF01
\u5141\u8BB8\u7684\u6587\u4EF6\u6700\u5927\u5927\u5C0F\u662F\uFF1A{0}MB\uFF01
+upload.filename.exceed.length=\u4E0A\u4F20\u7684\u6587\u4EF6\u540D\u6700\u957F{0}\u4E2A\u5B57\u7B26
+##\u6743\u9650
+no.permission=\u60A8\u6CA1\u6709\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.create.permission=\u60A8\u6CA1\u6709\u521B\u5EFA\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.update.permission=\u60A8\u6CA1\u6709\u4FEE\u6539\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.delete.permission=\u60A8\u6CA1\u6709\u5220\u9664\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.export.permission=\u60A8\u6CA1\u6709\u5BFC\u51FA\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+no.view.permission=\u60A8\u6CA1\u6709\u67E5\u770B\u6570\u636E\u7684\u6743\u9650\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650 [{0}]
+repeat.submit.message=\u4E0D\u5141\u8BB8\u91CD\u590D\u63D0\u4EA4\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5
+rate.limiter.message=\u8BBF\u95EE\u8FC7\u4E8E\u9891\u7E41\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5
+sms.code.not.blank=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u4E0D\u80FD\u4E3A\u7A7A
+sms.code.retry.limit.count=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
+sms.code.retry.limit.exceed=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F
+email.code.not.blank=\u90AE\u7BB1\u9A8C\u8BC1\u7801\u4E0D\u80FD\u4E3A\u7A7A
+email.code.retry.limit.count=\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
+email.code.retry.limit.exceed=\u90AE\u7BB1\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F
+xcx.code.not.blank=\u5C0F\u7A0B\u5E8Fcode\u4E0D\u80FD\u4E3A\u7A7A
+social.source.not.blank=\u7B2C\u4E09\u65B9\u767B\u5F55\u5E73\u53F0\u4E0D\u80FD\u4E3A\u7A7A
+social.code.not.blank=\u7B2C\u4E09\u65B9\u767B\u5F55code\u4E0D\u80FD\u4E3A\u7A7A
+social.state.not.blank=\u7B2C\u4E09\u65B9\u767B\u5F55socialState\u4E0D\u80FD\u4E3A\u7A7A
+##\u79DF\u6237
+tenant.number.not.blank=\u79DF\u6237\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
+tenant.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u79DF\u6237\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+tenant.blocked=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u79DF\u6237\u5DF2\u7981\u7528\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
+tenant.expired=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u79DF\u6237\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginBody.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginBody.java
index 71e499178..68ab5bda7 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginBody.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginBody.java
@@ -1,10 +1,8 @@
package org.dromara.common.core.domain.model;
-import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.dromara.common.core.constant.UserConstants;
-import org.dromara.common.core.validate.auth.*;
import org.hibernate.validator.constraints.Length;
/**
@@ -22,16 +20,6 @@ public class LoginBody {
@NotBlank(message = "{auth.clientid.not.blank}")
private String clientId;
- /**
- * 客户端key
- */
- private String clientKey;
-
- /**
- * 客户端秘钥
- */
- private String clientSecret;
-
/**
* 授权类型
*/
@@ -46,15 +34,15 @@ public class LoginBody {
/**
* 用户名
*/
- @NotBlank(message = "{user.username.not.blank}", groups = {PasswordGroup.class})
- @Length(min = UserConstants.USERNAME_MIN_LENGTH, max = UserConstants.USERNAME_MAX_LENGTH, message = "{user.username.length.valid}", groups = {PasswordGroup.class})
+ @NotBlank(message = "{user.username.not.blank}")
+ @Length(min = UserConstants.USERNAME_MIN_LENGTH, max = UserConstants.USERNAME_MAX_LENGTH, message = "{user.username.length.valid}")
private String username;
/**
* 用户密码
*/
- @NotBlank(message = "{user.password.not.blank}", groups = {PasswordGroup.class})
- @Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}", groups = {PasswordGroup.class})
+ @NotBlank(message = "{user.password.not.blank}")
+ @Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}")
private String password;
/**
@@ -67,52 +55,4 @@ public class LoginBody {
*/
private String uuid;
- /**
- * 手机号
- */
- @NotBlank(message = "{user.phonenumber.not.blank}", groups = {SmsGroup.class})
- private String phonenumber;
-
- /**
- * 短信code
- */
- @NotBlank(message = "{sms.code.not.blank}", groups = {SmsGroup.class})
- private String smsCode;
-
- /**
- * 邮箱
- */
- @NotBlank(message = "{user.email.not.blank}", groups = {EmailGroup.class})
- @Email(message = "{user.email.not.valid}")
- private String email;
-
- /**
- * 邮箱code
- */
- @NotBlank(message = "{email.code.not.blank}", groups = {EmailGroup.class})
- private String emailCode;
-
- /**
- * 小程序code
- */
- @NotBlank(message = "{xcx.code.not.blank}", groups = {WechatGroup.class})
- private String xcxCode;
-
- /**
- * 第三方登录平台
- */
- @NotBlank(message = "{social.source.not.blank}" , groups = {SocialGroup.class})
- private String source;
-
- /**
- * 第三方登录code
- */
- @NotBlank(message = "{social.code.not.blank}" , groups = {SocialGroup.class})
- private String socialCode;
-
- /**
- * 第三方登录socialState
- */
- @NotBlank(message = "{social.state.not.blank}" , groups = {SocialGroup.class})
- private String socialState;
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/user/AuthException.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/user/AuthException.java
new file mode 100644
index 000000000..185611b90
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/exception/user/AuthException.java
@@ -0,0 +1,21 @@
+package org.dromara.common.core.exception.user;
+
+import org.dromara.common.core.exception.base.BaseException;
+
+import java.io.Serial;
+
+/**
+ * 认证异常类
+ *
+ * @author Michelle.Chung
+ */
+public class AuthException extends BaseException {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ public AuthException(String code, Object... args) {
+ super("auth", code, args, null);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
index a1316eb85..ded061cb7 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ServletUtils.java
@@ -3,6 +3,8 @@ package org.dromara.common.core.utils;
import cn.hutool.core.convert.Convert;
import cn.hutool.extra.servlet.JakartaServletUtil;
import cn.hutool.http.HttpStatus;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@@ -19,10 +21,7 @@ import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
/**
* 客户端工具类
@@ -99,6 +98,39 @@ public class ServletUtils extends JakartaServletUtil {
return params;
}
+ /**
+ * 获取请求体
+ *
+ * @return json
+ */
+ public static JSONObject getParamBody() {
+ String body = ServletUtils.getBody(Objects.requireNonNull(ServletUtils.getRequest()));
+ return StringUtils.isBlank(body) ? new JSONObject() : new JSONObject(body);
+ }
+
+ /**
+ * 获取请求体 json 参数值
+ *
+ * @param key json key
+ * @return 参数值
+ */
+ public static String getParamFromBody(String key) {
+ return getParamFromBody(key, String.class);
+ }
+
+ /**
+ * 获取请求体 json 参数值
+ *
+ * @param key json key
+ * @param clazz 参数类
+ * @param 参数类型
+ * @return 参数值
+ */
+ public static T getParamFromBody(String key, Class clazz) {
+ JSONObject body = getParamBody();
+ return !JSONUtil.isNull(body) ? body.get(key, clazz) : null;
+ }
+
/**
* 获取request
*/
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/EmailGroup.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/EmailGroup.java
deleted file mode 100644
index 345a8e7cb..000000000
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/EmailGroup.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.dromara.common.core.validate.auth;
-
-/**
- * @author Michelle.Chung
- */
-public interface EmailGroup {
-}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/PasswordGroup.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/PasswordGroup.java
deleted file mode 100644
index b2c06b80d..000000000
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/PasswordGroup.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.dromara.common.core.validate.auth;
-
-/**
- * @author Michelle.Chung
- */
-public interface PasswordGroup {
-}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/SmsGroup.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/SmsGroup.java
deleted file mode 100644
index e6fc65769..000000000
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/SmsGroup.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.dromara.common.core.validate.auth;
-
-/**
- * @author Michelle.Chung
- */
-public interface SmsGroup {
-}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/SocialGroup.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/SocialGroup.java
deleted file mode 100644
index 2b19ffe30..000000000
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/SocialGroup.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package org.dromara.common.core.validate.auth;
-
-public interface SocialGroup {
-}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/WechatGroup.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/WechatGroup.java
deleted file mode 100644
index 1955de217..000000000
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/auth/WechatGroup.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.dromara.common.core.validate.auth;
-
-/**
- * @author Michelle.Chung
- */
-public interface WechatGroup {
-}
diff --git a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java
index 0c636c255..d1e33aca6 100644
--- a/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java
+++ b/ruoyi-common/ruoyi-common-social/src/main/java/org/dromara/common/social/utils/SocialUtils.java
@@ -8,6 +8,7 @@ import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser;
import me.zhyd.oauth.request.*;
import org.dromara.common.core.domain.model.LoginBody;
+import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.social.config.properties.SocialLoginConfigProperties;
import org.dromara.common.social.config.properties.SocialProperties;
@@ -24,10 +25,13 @@ public class SocialUtils {
@SuppressWarnings("unchecked")
public static AuthResponse loginAuth(LoginBody loginBody, SocialProperties socialProperties) throws AuthException {
- AuthRequest authRequest = getAuthRequest(loginBody.getSource(), socialProperties);
+ String source = ServletUtils.getParamFromBody("source");
+ String socialCode = ServletUtils.getParamFromBody("socialCode");
+ String socialState = ServletUtils.getParamFromBody("socialState");
+ AuthRequest authRequest = getAuthRequest(source, socialProperties);
AuthCallback callback = new AuthCallback();
- callback.setCode(loginBody.getSocialCode());
- callback.setState(loginBody.getSocialState());
+ callback.setCode(socialCode);
+ callback.setState(socialState);
return authRequest.login(callback);
}