From 864e5d695f05f2b441f593fc5d912f3b28bb60f9 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期四, 02 十一月 2023 12:25:54 +0800 Subject: [PATCH] update 优化 重构登录策略增加扩展性降低复杂度 --- ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java | 40 +++++++++++++++++++--------------------- 1 files changed, 19 insertions(+), 21 deletions(-) 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 2b055df..85c0bbb 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 @@ -13,14 +13,14 @@ 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; @@ -51,22 +51,20 @@ private final SysUserMapper userMapper; private final SysLoginService loginService; - - @Override - public void validate(LoginBody loginBody) { - ValidatorUtils.validate(loginBody, SocialGroup.class); - } - /** * 鐧诲綍-绗笁鏂规巿鏉冪櫥褰� * - * @param clientId 瀹㈡埛绔痠d - * @param loginBody 鐧诲綍淇℃伅 - * @param client 瀹㈡埛绔俊鎭� + * @param clientId 瀹㈡埛绔痠d + * @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()); } @@ -74,11 +72,11 @@ 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()); @@ -88,7 +86,7 @@ // 楠岃瘉鎺堟潈琛ㄩ噷闈㈢殑绉熸埛id鏄惁鍖呭惈褰撳墠绉熸埛id String tenantId = social.getTenantId(); if (ObjectUtil.isNotNull(social) && StrUtil.isNotBlank(tenantId) - && !tenantId.contains(loginBody.getTenantId())) { + && !tenantId.contains(loginBody.getTenantId())) { throw new ServiceException("瀵逛笉璧凤紝浣犳病鏈夋潈闄愮櫥褰曞綋鍓嶇鎴凤紒"); } @@ -121,9 +119,9 @@ 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", ""); -- Gitblit v1.9.3