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 (
-
+