From 9d960ed0058f9087f49e9741a9af06c3f9116eb0 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期六, 19 四月 2025 11:23:02 +0800
Subject: [PATCH] feat(auth): 添加 Keycloak 认证支持

---
 zhitan-admin/src/main/java/com/zhitan/web/controller/system/SysLoginController.java |   35 ++++++++++++++++++++++++++++++-----
 1 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/system/SysLoginController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/system/SysLoginController.java
index 3313afc..5465075 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/system/SysLoginController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/system/SysLoginController.java
@@ -1,12 +1,18 @@
 package com.zhitan.web.controller.system;
 
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import javax.annotation.Resource;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.ObjectUtil;
+import com.zhitan.common.utils.SocialUtils;
+import me.zhyd.oauth.request.AuthRequest;
+import me.zhyd.oauth.utils.AuthStateUtils;
+import org.springframework.web.bind.annotation.*;
 import com.zhitan.common.constant.Constants;
 import com.zhitan.common.core.domain.AjaxResult;
 import com.zhitan.common.core.domain.entity.SysMenu;
@@ -45,11 +51,17 @@
     {
         AjaxResult ajax = AjaxResult.success();
         // 鐢熸垚浠ょ墝
-        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+        String token = "";
+        if (loginBody.getGrantType() != null && !"".equals(loginBody.getGrantType())) {
+            token = loginService.loginByCode(loginBody.getSocialCode(), loginBody.getSocialState());
+        } else {
+            token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
                 loginBody.getUuid());
+        }
         ajax.put(Constants.TOKEN, token);
         return ajax;
     }
+
 
     /**
      * 鑾峰彇鐢ㄦ埛淇℃伅
@@ -83,4 +95,17 @@
         List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
         return AjaxResult.success(menuService.buildMenus(menus));
     }
+    /**
+     * 鑾峰彇璺宠浆URL
+     *
+     * @return 缁撴灉
+     */
+    @GetMapping("/binding")
+    public AjaxResult authBinding() {
+
+        AuthRequest authRequest = SocialUtils.getAuthKeyloakRequest();
+        String authorizeUrl = authRequest.authorize(Base64.encode(AuthStateUtils.createState(), StandardCharsets.UTF_8));
+        return AjaxResult.success("鎿嶄綔鎴愬姛", authorizeUrl);
+    }
+
 }

--
Gitblit v1.9.3