From e2bac69de5a3efbc769214c2d56ea8380be2719a Mon Sep 17 00:00:00 2001 From: Top2Hub Date: Thu, 10 Apr 2025 15:37:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20JustAuth=20?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=B8=89=E6=96=B9=E7=94=A8=E6=88=B7=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E7=99=BB=E5=BD=95=E9=97=AE=E9=A2=98=20(#148)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/auth/handler/SocialLoginHandler.java | 18 +++++++++++++++--- .../admin/controller/auth/AuthController.java | 14 +++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/continew-module-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java b/continew-module-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java index 537bf8fc..3911e74b 100644 --- a/continew-module-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java +++ b/continew-module-system/src/main/java/top/continew/admin/auth/handler/SocialLoginHandler.java @@ -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 { - 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 { 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 { */ 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)); } diff --git a/continew-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java b/continew-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java index eb3187c8..495ee5f9 100644 --- a/continew-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java +++ b/continew-webapi/src/main/java/top/continew/admin/controller/auth/AuthController.java @@ -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)); }