From cd6bfb2a3a6b942f43253b24cef8461593dec60f Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 26 六月 2023 23:37:21 +0800
Subject: [PATCH] add 新增 RedisUtils.setObjectIfAbsent 如果不存在则设置 方法
---
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java | 68 ++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
index bba6113..51160aa 100644
--- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
+++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
@@ -2,9 +2,15 @@
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
+import me.zhyd.oauth.model.AuthCallback;
+import me.zhyd.oauth.model.AuthResponse;
+import me.zhyd.oauth.model.AuthUser;
+import me.zhyd.oauth.request.AuthRequest;
+import me.zhyd.oauth.utils.AuthStateUtils;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.EmailLoginBody;
import org.dromara.common.core.domain.model.LoginBody;
@@ -13,9 +19,13 @@
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.social.config.properties.SocialLoginConfigProperties;
+import org.dromara.common.social.config.properties.SocialProperties;
+import org.dromara.common.social.utils.SocialUtils;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.system.domain.bo.SysTenantBo;
import org.dromara.system.domain.vo.SysTenantVo;
+import org.dromara.system.service.ISysSocialService;
import org.dromara.system.service.ISysConfigService;
import org.dromara.system.service.ISysTenantService;
import org.dromara.web.domain.vo.LoginTenantVo;
@@ -41,10 +51,13 @@
@RequestMapping("/auth")
public class AuthController {
+ private final SocialProperties socialProperties;
private final SysLoginService loginService;
private final SysRegisterService registerService;
private final ISysConfigService configService;
private final ISysTenantService tenantService;
+ private final ISysSocialService socialUserService;
+
/**
* 鐧诲綍鏂规硶
@@ -115,6 +128,61 @@
return R.ok(loginVo);
}
+
+ /**
+ * 璁よ瘉鎺堟潈
+ *
+ * @param source 鐧诲綍鏉ユ簮
+ * @return 缁撴灉
+ */
+ @GetMapping("/binding/{source}")
+ public R<String> authBinding(@PathVariable("source") String source) {
+ SocialLoginConfigProperties obj = socialProperties.getType().get(source);
+ if (ObjectUtil.isNull(obj)) {
+ return R.fail(source + "骞冲彴璐﹀彿鏆備笉鏀寔");
+ }
+ AuthRequest authRequest = SocialUtils.getAuthRequest(source,
+ obj.getClientId(),
+ obj.getClientSecret(),
+ obj.getRedirectUri());
+ String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
+ return R.ok(authorizeUrl);
+ }
+
+ /**
+ * 绗笁鏂圭櫥褰曞洖璋冧笟鍔″鐞�
+ *
+ * @param source 鐧诲綍鏉ユ簮
+ * @param callback 鎺堟潈鍝嶅簲瀹炰綋
+ * @return 缁撴灉
+ */
+ @SuppressWarnings("unchecked")
+ @GetMapping("/social-login")
+ public R<String> socialLogin(String source, AuthCallback callback) {
+ SocialLoginConfigProperties obj = socialProperties.getType().get(source);
+ if (ObjectUtil.isNull(obj)) {
+ return R.fail(source + "骞冲彴璐﹀彿鏆備笉鏀寔");
+ }
+ AuthRequest authRequest = SocialUtils.getAuthRequest(source,
+ obj.getClientId(),
+ obj.getClientSecret(),
+ obj.getRedirectUri());
+ AuthResponse<AuthUser> response = authRequest.login(callback);
+ return loginService.socialLogin(source, response);
+ }
+
+ /**
+ * 鍙栨秷鎺堟潈
+ *
+ * @param socialId socialId
+ */
+ @DeleteMapping(value = "/unlock/{socialId}")
+ public R<Void> unlockSocial(@PathVariable Long socialId) {
+ Boolean rows = socialUserService.deleteWithValidById(socialId);
+ return rows ? R.ok() : R.fail("鍙栨秷鎺堟潈澶辫触");
+ }
+
+
/**
* 閫�鍑虹櫥褰�
*/
--
Gitblit v1.9.3