diff --git a/web/src/components/auth/common/current-logged.tsx b/web/src/components/auth/common/current-logged.tsx index 87053fb..59bd3c3 100644 --- a/web/src/components/auth/common/current-logged.tsx +++ b/web/src/components/auth/common/current-logged.tsx @@ -9,8 +9,6 @@ import { useRouter, useSearchParams } from "next/navigation"; import React from "react"; import { SectionDivider } from '@/components/common/section-divider'; import { LogOut } from "lucide-react"; -import { userLogout } from "@/api/user"; -import { toast } from "sonner"; export function CurrentLogged() { const t = useTranslations("Login"); @@ -24,10 +22,7 @@ export function CurrentLogged() { } const handleLogOut = () => { - userLogout().then(() => { logout(); - toast.success(t("logout_success")); - }) } if (!user) return null; diff --git a/web/src/components/auth/login/login-form.tsx b/web/src/components/auth/login/login-form.tsx index 9baff91..f901944 100644 --- a/web/src/components/auth/login/login-form.tsx +++ b/web/src/components/auth/login/login-form.tsx @@ -11,10 +11,9 @@ import { } from "@/components/ui/card" import { Input } from "@/components/ui/input" 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, userLogout } from "@/api/user" +import { getCaptchaConfig, listOidcConfigs, userLogin} from "@/api/user" import Link from "next/link" import { useRouter, useSearchParams } from "next/navigation" import { useTranslations } from "next-intl" @@ -205,12 +204,12 @@ function LoginWithOidc({ displayName = "Login with OIDC", icon = "/oidc-icon.svg", }: LoginWithOidcProps) { - const { user } = useAuth(); + const { user, logout } = useAuth(); const router = useRouter(); const handleOidcLogin = async () => { // 使用第三方登录时,如果当前已经有登录用户了,则先登出当前用户,避免后端直接使用登录态进行绑定(接口是这样设计的) if (user) { - await userLogout() + logout() } router.push(loginUrl); } diff --git a/web/src/components/auth/register/register-form.tsx b/web/src/components/auth/register/register-form.tsx index fc7a81f..f5f8773 100644 --- a/web/src/components/auth/register/register-form.tsx +++ b/web/src/components/auth/register/register-form.tsx @@ -22,6 +22,8 @@ import { SectionDivider } from "@/components/common/section-divider" import { InputOTPControlled } from "@/components/common/input-otp" import { BaseErrorResponse } from "@/models/resp" import { useAuth } from "@/contexts/auth-context" +import Link from "next/link" +import { loginPath } from "@/hooks/use-route" export function RegisterForm({ className, @@ -181,6 +183,13 @@ export function RegisterForm({ > {isLogging ? t("registering") : t("register")} + {/* 注册链接 */} +
+ {t("already_have_account")}{" "} + + {commonT("login")} + +
diff --git a/web/src/components/console/nav-user.tsx b/web/src/components/console/nav-user.tsx index e50b4fd..8baeb34 100644 --- a/web/src/components/console/nav-user.tsx +++ b/web/src/components/console/nav-user.tsx @@ -32,18 +32,13 @@ import { import { getGravatarFromUser } from "@/utils/common/gravatar" import { formatDisplayName, getFallbackAvatarFromUsername } from "@/utils/common/username" import { useAuth } from "@/contexts/auth-context" -import { userLogout } from "@/api/user" -import { toast } from "sonner" export function NavUser() { const { isMobile } = useSidebar() - const { user } = useAuth(); + const { user, logout } = useAuth(); const handleLogout = () => { - userLogout().then(() => { - toast.success("Logged out successfully"); - window.location.reload(); - }) + logout() } if (!user) return null diff --git a/web/src/components/layout/nav/avatar-with-dropdown-menu.tsx b/web/src/components/layout/nav/avatar-with-dropdown-menu.tsx index ae13bce..c24b226 100644 --- a/web/src/components/layout/nav/avatar-with-dropdown-menu.tsx +++ b/web/src/components/layout/nav/avatar-with-dropdown-menu.tsx @@ -8,9 +8,7 @@ import { DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" -import { userLogout } from "@/api/user"; import Link from "next/link"; -import { toast } from "sonner"; import { useToLogin } from "@/hooks/use-route"; import { CircleUser } from "lucide-react"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; @@ -19,19 +17,16 @@ import { formatDisplayName, getFallbackAvatarFromUsername } from "@/utils/common import { useAuth } from "@/contexts/auth-context"; export function AvatarWithDropdownMenu() { - const { user } = useAuth(); + const { user, logout } = useAuth(); const toLogin = useToLogin(); const handleLogout = () => { - userLogout().then(() => { - toast.success("Logged out successfully"); - window.location.reload(); - }) + logout() } return ( - +