fix: 修复 JustAuth 部分三方用户授权登录问题 (#148)

This commit is contained in:
Top2Hub
2025-04-10 15:37:05 +08:00
committed by GitHub
parent 449478b188
commit e2bac69de5
2 changed files with 26 additions and 6 deletions

View File

@@ -24,8 +24,12 @@ import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.json.JSONUtil;
import com.xkcoding.justauth.AuthRequestFactory;
import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import me.zhyd.oauth.AuthRequestBuilder;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.model.AuthCallback;
import me.zhyd.oauth.model.AuthResponse;
import me.zhyd.oauth.model.AuthUser;
@@ -56,6 +60,7 @@ import top.continew.starter.messaging.websocket.util.WebSocketUtils;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* 第三方账号登录处理器
@@ -68,7 +73,7 @@ import java.util.List;
@RequiredArgsConstructor
public class SocialLoginHandler extends AbstractLoginHandler<SocialLoginReq> {
private final AuthRequestFactory authRequestFactory;
private final JustAuthProperties authProperties;
private final UserSocialService userSocialService;
private final UserRoleService userRoleService;
private final MessageService messageService;
@@ -103,7 +108,9 @@ public class SocialLoginHandler extends AbstractLoginHandler<SocialLoginReq> {
user = new UserDO();
user.setUsername(username);
user.setNickname(nickname);
user.setGender(GenderEnum.valueOf(authUser.getGender().name()));
if(Objects.nonNull(authUser.getGender())) {
user.setGender(GenderEnum.valueOf(authUser.getGender().name()));
}
user.setAvatar(authUser.getAvatar());
user.setDeptId(SysConstants.SUPER_DEPT_ID);
user.setStatus(DisEnableStatusEnum.ENABLE);
@@ -149,7 +156,12 @@ public class SocialLoginHandler extends AbstractLoginHandler<SocialLoginReq> {
*/
private AuthRequest getAuthRequest(String source) {
try {
return authRequestFactory.get(source);
AuthConfig authConfig = authProperties.getType().get(source.toUpperCase());
return AuthRequestBuilder
.builder()
.source(source)
.authConfig(authConfig)
.build();
} catch (Exception e) {
throw new BadRequestException("暂不支持 [%s] 平台账号登录".formatted(source));
}

View File

@@ -19,13 +19,16 @@ package top.continew.admin.controller.auth;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.bean.BeanUtil;
import com.xkcoding.justauth.AuthRequestFactory;
import com.xkcoding.justauth.autoconfigure.JustAuthProperties;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import me.zhyd.oauth.AuthRequestBuilder;
import me.zhyd.oauth.config.AuthConfig;
import me.zhyd.oauth.request.AuthRequest;
import me.zhyd.oauth.utils.AuthStateUtils;
import org.springframework.validation.annotation.Validated;
@@ -61,7 +64,7 @@ public class AuthController {
private final AuthService authService;
private final UserService userService;
private final AuthRequestFactory authRequestFactory;
private final JustAuthProperties authProperties;
@SaIgnore
@Operation(summary = "登录", description = "用户登录")
@@ -112,7 +115,12 @@ public class AuthController {
private AuthRequest getAuthRequest(String source) {
try {
return authRequestFactory.get(source);
AuthConfig authConfig = authProperties.getType().get(source.toUpperCase());
return AuthRequestBuilder
.builder()
.source(source)
.authConfig(authConfig)
.build();
} catch (Exception e) {
throw new BadRequestException("暂不支持 [%s] 平台账号登录".formatted(source));
}