update 优化 重构登录策略增加扩展性降低复杂度
| | |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.RegisterBody; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.core.domain.model.SocialLoginBody; |
| | | import org.dromara.common.core.utils.*; |
| | | import org.dromara.common.json.utils.JsonUtils; |
| | | import org.dromara.common.social.config.properties.SocialLoginConfigProperties; |
| | | import org.dromara.common.social.config.properties.SocialProperties; |
| | | import org.dromara.common.social.utils.SocialUtils; |
| | |
| | | /** |
| | | * ç»å½æ¹æ³ |
| | | * |
| | | * @param loginBody ç»å½ä¿¡æ¯ |
| | | * @param body ç»å½ä¿¡æ¯ |
| | | * @return ç»æ |
| | | */ |
| | | @PostMapping("/login") |
| | | public R<LoginVo> login(@Validated @RequestBody LoginBody loginBody) { |
| | | public R<LoginVo> login(@Validated @RequestBody String body) { |
| | | LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class); |
| | | ValidatorUtils.validate(loginBody); |
| | | // ææç±»åå客æ·ç«¯id |
| | | String clientId = loginBody.getClientId(); |
| | | String grantType = loginBody.getGrantType(); |
| | |
| | | // æ ¡éªç§æ· |
| | | loginService.checkTenant(loginBody.getTenantId()); |
| | | // ç»å½ |
| | | return R.ok(IAuthStrategy.login(loginBody, client)); |
| | | return R.ok(IAuthStrategy.login(body, client, grantType)); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @PostMapping("/social/callback") |
| | | public R<Void> socialCallback(@RequestBody LoginBody loginBody) { |
| | | public R<Void> socialCallback(@RequestBody SocialLoginBody loginBody) { |
| | | // è·åç¬¬ä¸æ¹ç»å½ä¿¡æ¯ |
| | | AuthResponse<AuthUser> response = SocialUtils.loginAuth(loginBody, socialProperties); |
| | | AuthResponse<AuthUser> response = SocialUtils.loginAuth( |
| | | loginBody.getSource(), loginBody.getSocialCode(), |
| | | loginBody.getSocialState(), socialProperties); |
| | | AuthUser authUserData = response.getData(); |
| | | // 夿ææååºæ¯å¦æå |
| | | if (!response.ok()) { |
| | |
| | | package org.dromara.web.service; |
| | | |
| | | |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.system.domain.SysClient; |
| | |
| | | /** |
| | | * ç»å½ |
| | | */ |
| | | static LoginVo login(LoginBody loginBody, SysClient client) { |
| | | static LoginVo login(String body, SysClient client, String grantType) { |
| | | // ææç±»åå客æ·ç«¯id |
| | | String clientId = loginBody.getClientId(); |
| | | String grantType = loginBody.getGrantType(); |
| | | String clientId = client.getClientId(); |
| | | String beanName = grantType + BASE_NAME; |
| | | if (!SpringUtils.containsBean(beanName)) { |
| | | throw new ServiceException("ææç±»å䏿£ç¡®!"); |
| | | } |
| | | IAuthStrategy instance = SpringUtils.getBean(beanName); |
| | | instance.validate(loginBody); |
| | | return instance.login(clientId, loginBody, client); |
| | | return instance.login(clientId, body, client); |
| | | } |
| | | |
| | | /** |
| | | * åæ°æ ¡éª |
| | | */ |
| | | void validate(LoginBody loginBody); |
| | | |
| | | /** |
| | | * ç»å½ |
| | | */ |
| | | LoginVo login(String clientId, LoginBody loginBody, SysClient client); |
| | | LoginVo login(String clientId, String body, SysClient client); |
| | | |
| | | } |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.EmailLoginBody; |
| | | 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.utils.MessageUtils; |
| | | 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.json.utils.JsonUtils; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | |
| | | private final SysUserMapper userMapper; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, EmailGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | public LoginVo login(String clientId, String body, SysClient client) { |
| | | EmailLoginBody loginBody = JsonUtils.parseObject(body, EmailLoginBody.class); |
| | | ValidatorUtils.validate(loginBody); |
| | | String tenantId = loginBody.getTenantId(); |
| | | String email = loginBody.getEmail(); |
| | | String emailCode = loginBody.getEmailCode(); |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.domain.model.PasswordLoginBody; |
| | | import org.dromara.common.core.enums.LoginType; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.user.CaptchaException; |
| | |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | 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.json.utils.JsonUtils; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | |
| | | private final SysUserMapper userMapper; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, PasswordGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | public LoginVo login(String clientId, String body, SysClient client) { |
| | | PasswordLoginBody loginBody = JsonUtils.parseObject(body, PasswordLoginBody.class); |
| | | ValidatorUtils.validate(loginBody); |
| | | String tenantId = loginBody.getTenantId(); |
| | | String username = loginBody.getUsername(); |
| | | String password = loginBody.getPassword(); |
| | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.constant.GlobalConstants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.domain.model.SmsLoginBody; |
| | | import org.dromara.common.core.enums.LoginType; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.user.CaptchaExpireException; |
| | |
| | | import org.dromara.common.core.utils.MessageUtils; |
| | | 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.json.utils.JsonUtils; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | |
| | | private final SysUserMapper userMapper; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, SmsGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | public LoginVo login(String clientId, String body, SysClient client) { |
| | | SmsLoginBody loginBody = JsonUtils.parseObject(body, SmsLoginBody.class); |
| | | ValidatorUtils.validate(loginBody); |
| | | String tenantId = loginBody.getTenantId(); |
| | | String phonenumber = loginBody.getPhonenumber(); |
| | | String smsCode = loginBody.getSmsCode(); |
| | |
| | | import me.zhyd.oauth.model.AuthResponse; |
| | | import me.zhyd.oauth.model.AuthUser; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.common.core.domain.model.SocialLoginBody; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | 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.json.utils.JsonUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.social.config.properties.SocialProperties; |
| | | import org.dromara.common.social.utils.SocialUtils; |
| | |
| | | private final SysUserMapper userMapper; |
| | | private final SysLoginService loginService; |
| | | |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, SocialGroup.class); |
| | | } |
| | | |
| | | /** |
| | | * ç»å½-ç¬¬ä¸æ¹ææç»å½ |
| | | * |
| | | * @param clientId 客æ·ç«¯id |
| | | * @param loginBody ç»å½ä¿¡æ¯ |
| | | * @param client 客æ·ç«¯ä¿¡æ¯ |
| | | * @param clientId 客æ·ç«¯id |
| | | * @param body ç»å½ä¿¡æ¯ |
| | | * @param client 客æ·ç«¯ä¿¡æ¯ |
| | | */ |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | AuthResponse<AuthUser> response = SocialUtils.loginAuth(loginBody, socialProperties); |
| | | public LoginVo login(String clientId, String body, SysClient client) { |
| | | SocialLoginBody loginBody = JsonUtils.parseObject(body, SocialLoginBody.class); |
| | | ValidatorUtils.validate(loginBody); |
| | | AuthResponse<AuthUser> response = SocialUtils.loginAuth( |
| | | loginBody.getSource(), loginBody.getSocialCode(), |
| | | loginBody.getSocialState(), socialProperties); |
| | | if (!response.ok()) { |
| | | throw new ServiceException(response.getMsg()); |
| | | } |
| | |
| | | if ("GITEE".equals(authUserData.getSource())) { |
| | | // å¦ç¨æ·ä½¿ç¨ gitee ç»å½é¡ºæ star ç»ä½è
ä¸ç¹æ¯æ æç»ç½å« |
| | | HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus") |
| | | .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken())) |
| | | .executeAsync(); |
| | | .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken())) |
| | | .executeAsync(); |
| | | HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Cloud-Plus") |
| | | .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken())) |
| | | .executeAsync(); |
| | | .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken())) |
| | | .executeAsync(); |
| | | } |
| | | |
| | | SysSocialVo social = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid()); |
| | |
| | | // éªè¯ææè¡¨éé¢çç§æ·idæ¯å¦å
å«å½åç§æ·id |
| | | String tenantId = social.getTenantId(); |
| | | if (ObjectUtil.isNotNull(social) && StrUtil.isNotBlank(tenantId) |
| | | && !tenantId.contains(loginBody.getTenantId())) { |
| | | && !tenantId.contains(loginBody.getTenantId())) { |
| | | throw new ServiceException("对ä¸èµ·ï¼ä½ 没ææéç»å½å½åç§æ·ï¼"); |
| | | } |
| | | |
| | |
| | | |
| | | private SysUserVo loadUser(String tenantId, Long userId) { |
| | | SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>() |
| | | .select(SysUser::getUserName, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getUserId, userId)); |
| | | .select(SysUser::getUserName, SysUser::getStatus) |
| | | .eq(TenantHelper.isEnable(), SysUser::getTenantId, tenantId) |
| | | .eq(SysUser::getUserId, userId)); |
| | | if (ObjectUtil.isNull(user)) { |
| | | log.info("ç»å½ç¨æ·ï¼{} ä¸åå¨.", ""); |
| | | throw new UserException("user.not.exists", ""); |
| | |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.constant.Constants; |
| | | import org.dromara.common.core.domain.model.LoginBody; |
| | | import org.dromara.common.core.domain.model.XcxLoginBody; |
| | | import org.dromara.common.core.domain.model.XcxLoginUser; |
| | | import org.dromara.common.core.enums.UserStatus; |
| | | 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.json.utils.JsonUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.system.domain.SysClient; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | |
| | | private final SysLoginService loginService; |
| | | |
| | | @Override |
| | | public void validate(LoginBody loginBody) { |
| | | ValidatorUtils.validate(loginBody, WechatGroup.class); |
| | | } |
| | | |
| | | @Override |
| | | public LoginVo login(String clientId, LoginBody loginBody, SysClient client) { |
| | | public LoginVo login(String clientId, String body, SysClient client) { |
| | | XcxLoginBody loginBody = JsonUtils.parseObject(body, XcxLoginBody.class); |
| | | ValidatorUtils.validate(loginBody); |
| | | // xcxCode 为 å°ç¨åºè°ç¨ wx.login ææåè·å |
| | | String xcxCode = loginBody.getXcxCode(); |
| | | // å¤ä¸ªå°ç¨åºè¯å«ä½¿ç¨ |
| | | String appid = loginBody.getAppid(); |
| | | |
| | | // todo 以ä¸èªè¡å®ç° |
| | | // æ ¡éª appid + appsrcret + xcxCode è°ç¨ç»å½åè¯æ ¡éªæ¥å£ è·å session_key ä¸ openid |
| | | String openid = ""; |
| | |
| | | import jakarta.validation.constraints.Email; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * é®ä»¶ç»å½å¯¹è±¡ |
| | |
| | | */ |
| | | |
| | | @Data |
| | | public class EmailLoginBody { |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @NotBlank(message = "{tenant.number.not.blank}") |
| | | private String tenantId; |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class EmailLoginBody extends LoginBody { |
| | | |
| | | /** |
| | | * é®ç®± |
| | |
| | | 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; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * ç¨æ·ç»å½å¯¹è±¡ |
| | |
| | | */ |
| | | |
| | | @Data |
| | | public class LoginBody { |
| | | public class LoginBody implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 客æ·ç«¯id |
| | | */ |
| | | @NotBlank(message = "{auth.clientid.not.blank}") |
| | | private String clientId; |
| | | |
| | | /** |
| | | * 客æ·ç«¯key |
| | | */ |
| | | private String clientKey; |
| | | |
| | | /** |
| | | * 客æ·ç«¯ç§é¥ |
| | | */ |
| | | private String clientSecret; |
| | | |
| | | /** |
| | | * ææç±»å |
| | |
| | | private String tenantId; |
| | | |
| | | /** |
| | | * ç¨æ·å |
| | | */ |
| | | @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}) |
| | | 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}) |
| | | private String password; |
| | | |
| | | /** |
| | | * éªè¯ç |
| | | */ |
| | | private String code; |
| | |
| | | */ |
| | | 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; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.hibernate.validator.constraints.Length; |
| | | |
| | | import static org.dromara.common.core.constant.UserConstants.*; |
| | | |
| | | /** |
| | | * å¯ç ç»å½å¯¹è±¡ |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class PasswordLoginBody extends LoginBody { |
| | | |
| | | /** |
| | | * ç¨æ·å |
| | | */ |
| | | @NotBlank(message = "{user.username.not.blank}") |
| | | @Length(min = USERNAME_MIN_LENGTH, max = USERNAME_MAX_LENGTH, message = "{user.username.length.valid}") |
| | | private String username; |
| | | |
| | | /** |
| | | * ç¨æ·å¯ç |
| | | */ |
| | | @NotBlank(message = "{user.password.not.blank}") |
| | | @Length(min = PASSWORD_MIN_LENGTH, max = PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}") |
| | | private String password; |
| | | |
| | | } |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.hibernate.validator.constraints.Length; |
| | | |
| | | import static org.dromara.common.core.constant.UserConstants.*; |
| | | |
| | | /** |
| | | * ç¨æ·æ³¨å对象 |
| | |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class RegisterBody extends LoginBody { |
| | | |
| | | /** |
| | | * ç¨æ·å |
| | | */ |
| | | @NotBlank(message = "{user.username.not.blank}") |
| | | @Length(min = USERNAME_MIN_LENGTH, max = USERNAME_MAX_LENGTH, message = "{user.username.length.valid}") |
| | | private String username; |
| | | |
| | | /** |
| | | * ç¨æ·å¯ç |
| | | */ |
| | | @NotBlank(message = "{user.password.not.blank}") |
| | | @Length(min = PASSWORD_MIN_LENGTH, max = PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}") |
| | | private String password; |
| | | |
| | | private String userType; |
| | | |
| | | } |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * çä¿¡ç»å½å¯¹è±¡ |
| | |
| | | */ |
| | | |
| | | @Data |
| | | public class SmsLoginBody { |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | @NotBlank(message = "{tenant.number.not.blank}") |
| | | private String tenantId; |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SmsLoginBody extends LoginBody { |
| | | |
| | | /** |
| | | * ææºå· |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * 䏿¹ç»å½å¯¹è±¡ |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class SocialLoginBody extends LoginBody { |
| | | |
| | | /** |
| | | * ç¬¬ä¸æ¹ç»å½å¹³å° |
| | | */ |
| | | @NotBlank(message = "{social.source.not.blank}") |
| | | private String source; |
| | | |
| | | /** |
| | | * ç¬¬ä¸æ¹ç»å½code |
| | | */ |
| | | @NotBlank(message = "{social.code.not.blank}") |
| | | private String socialCode; |
| | | |
| | | /** |
| | | * ç¬¬ä¸æ¹ç»å½socialState |
| | | */ |
| | | @NotBlank(message = "{social.state.not.blank}") |
| | | private String socialState; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * 䏿¹ç»å½å¯¹è±¡ |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | public class XcxLoginBody extends LoginBody { |
| | | |
| | | /** |
| | | * å°ç¨åºid(å¤ä¸ªå°ç¨åºæ¶ä½¿ç¨) |
| | | */ |
| | | private String appid; |
| | | |
| | | /** |
| | | * å°ç¨åºcode |
| | | */ |
| | | @NotBlank(message = "{xcx.code.not.blank}") |
| | | private String xcxCode; |
| | | |
| | | } |
| | |
| | | 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.SpringUtils; |
| | | import org.dromara.common.social.config.properties.SocialLoginConfigProperties; |
| | | import org.dromara.common.social.config.properties.SocialProperties; |
| | |
| | | private static final AuthRedisStateCache STATE_CACHE = SpringUtils.getBean(AuthRedisStateCache.class); |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public static AuthResponse<AuthUser> loginAuth(LoginBody loginBody, SocialProperties socialProperties) throws AuthException { |
| | | AuthRequest authRequest = getAuthRequest(loginBody.getSource(), socialProperties); |
| | | public static AuthResponse<AuthUser> loginAuth(String source, String code, String state, SocialProperties socialProperties) throws AuthException { |
| | | AuthRequest authRequest = getAuthRequest(source, socialProperties); |
| | | AuthCallback callback = new AuthCallback(); |
| | | callback.setCode(loginBody.getSocialCode()); |
| | | callback.setState(loginBody.getSocialState()); |
| | | callback.setCode(code); |
| | | callback.setState(state); |
| | | return authRequest.login(callback); |
| | | } |
| | | |