From 3378d5b99e4924cf24617ba0ccd7c052c892f673 Mon Sep 17 00:00:00 2001 From: Kentai Radiquum Date: Sun, 4 Aug 2024 14:33:22 +0500 Subject: [PATCH] feat: add login redirect to the page which initiated auth --- TODO.md | 6 +----- app/components/Navbar/Navbar.tsx | 2 +- app/pages/Bookmarks.tsx | 2 +- app/pages/BookmarksCategory.tsx | 2 +- app/pages/Favorites.tsx | 2 +- app/pages/History.tsx | 2 +- app/pages/Login.tsx | 10 ++++++---- 7 files changed, 12 insertions(+), 14 deletions(-) diff --git a/TODO.md b/TODO.md index 2fedee8..d59f27c 100644 --- a/TODO.md +++ b/TODO.md @@ -37,11 +37,7 @@ ### Авторизация -- [ ] Перенаправление на страницу с которой был запрос на авторизацию - -или - -- [ ] Использование Modal вместо отдельной страницы +- [X] Перенаправление на страницу с которой был запрос на авторизацию после успешной авторизации ### Рекомендации (Обзор) diff --git a/app/components/Navbar/Navbar.tsx b/app/components/Navbar/Navbar.tsx index 6ef9b0d..2c0eba8 100644 --- a/app/components/Navbar/Navbar.tsx +++ b/app/components/Navbar/Navbar.tsx @@ -194,7 +194,7 @@ export const Navbar = () => { > { if (authState === "finished" && !token) { - router.push("/login"); + router.push("/login?redirect=/bookmarks"); } }, [authState, token]); diff --git a/app/pages/BookmarksCategory.tsx b/app/pages/BookmarksCategory.tsx index 21c5ee2..b6aa369 100644 --- a/app/pages/BookmarksCategory.tsx +++ b/app/pages/BookmarksCategory.tsx @@ -74,7 +74,7 @@ export function BookmarksCategoryPage(props: any) { useEffect(() => { if (authState === "finished" && !token) { - router.push("/login"); + router.push(`/login?redirect=/bookmarks/${props.slug}`); } }, [authState, token]); diff --git a/app/pages/Favorites.tsx b/app/pages/Favorites.tsx index 66fb543..a53a426 100644 --- a/app/pages/Favorites.tsx +++ b/app/pages/Favorites.tsx @@ -71,7 +71,7 @@ export function FavoritesPage() { useEffect(() => { if (authState === "finished" && !token) { - router.push("/login"); + router.push("/login?redirect=/favorites"); } }, [authState, token]); diff --git a/app/pages/History.tsx b/app/pages/History.tsx index d325ad8..5807e8a 100644 --- a/app/pages/History.tsx +++ b/app/pages/History.tsx @@ -63,7 +63,7 @@ export function HistoryPage() { useEffect(() => { if (authState === "finished" && !token) { - router.push("/login"); + router.push("/login?redirect=/history"); } }, [authState, token]); diff --git a/app/pages/Login.tsx b/app/pages/Login.tsx index 0f1f239..65f7534 100644 --- a/app/pages/Login.tsx +++ b/app/pages/Login.tsx @@ -2,14 +2,16 @@ import { useState, useEffect } from "react"; import { useUserStore } from "#/store/auth"; import { setJWT } from "#/api/utils"; -import { useRouter } from "next/navigation"; +import { useRouter, useSearchParams } from "next/navigation"; export function LoginPage() { const [login, setLogin] = useState(""); const [password, setPassword] = useState(""); - const [remember, setRemember]: any = useState(false); + const [remember, setRemember] = useState(true); const userStore = useUserStore(); const router = useRouter(); + const searchParams = useSearchParams(); + const redirect = searchParams.get("redirect") || null; function submit(e) { e.preventDefault(); @@ -45,7 +47,7 @@ export function LoginPage() { useEffect(() => { if (userStore.user) { - router.push("/"); + router.push(`${redirect || "/"}`); } }, [userStore.user]); @@ -108,7 +110,7 @@ export function LoginPage() { type="checkbox" className="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-primary-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-primary-600 dark:ring-offset-gray-800" required={true} - value={remember} + checked={remember} onChange={(e) => setRemember(e.target.checked)} />