From 6e3c3cddee9d665f2f304e0176cbe776c9126665 Mon Sep 17 00:00:00 2001 From: Snowykami Date: Tue, 23 Sep 2025 18:03:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20OIDC=20=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A1=AE=E4=BF=9D=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=9C=A8=E7=BB=91=E5=AE=9A=E5=89=8D=E7=99=BB=E5=87=BA?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E8=B4=A6=E6=88=B7=EF=BC=9B=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E7=BF=BB=E8=AF=91=E4=BB=A5=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/components/auth/login/login-form.tsx | 28 +++++++++++++------- web/src/locales/zh-CN.json | 2 +- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/web/src/components/auth/login/login-form.tsx b/web/src/components/auth/login/login-form.tsx index f4cabcc..9baff91 100644 --- a/web/src/components/auth/login/login-form.tsx +++ b/web/src/components/auth/login/login-form.tsx @@ -14,7 +14,7 @@ import { Label } from "@/components/ui/label" import Image from "next/image" import { useEffect, useState } from "react" import type { OidcConfig } from "@/models/oidc-config" -import { getCaptchaConfig, listOidcConfigs, userLogin } from "@/api/user" +import { getCaptchaConfig, listOidcConfigs, userLogin, userLogout } from "@/api/user" import Link from "next/link" import { useRouter, useSearchParams } from "next/navigation" import { useTranslations } from "next-intl" @@ -104,7 +104,7 @@ export function LoginForm({ - {user ? t("bind_oidc") : t("with_oidc")} + {t("with_oidc")}
{/* OIDC 登录选项 */} @@ -205,19 +205,27 @@ function LoginWithOidc({ displayName = "Login with OIDC", icon = "/oidc-icon.svg", }: LoginWithOidcProps) { + const { user } = useAuth(); + const router = useRouter(); + const handleOidcLogin = async () => { + // 使用第三方登录时,如果当前已经有登录用户了,则先登出当前用户,避免后端直接使用登录态进行绑定(接口是这样设计的) + if (user) { + await userLogout() + } + router.push(loginUrl); + } + return ( ) } \ No newline at end of file diff --git a/web/src/locales/zh-CN.json b/web/src/locales/zh-CN.json index 45838d6..99fafff 100644 --- a/web/src/locales/zh-CN.json +++ b/web/src/locales/zh-CN.json @@ -128,7 +128,7 @@ } }, "Login": { - "bind_oidc": "绑定第三方账号", + "bind_oidc": "继续绑定第三方账号", "captcha_error": "验证错误,请重试。", "continue": "继续", "currently_logged_in": "当前已登录为",