mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 22:06:38 +08:00
28 lines
858 B
TypeScript
28 lines
858 B
TypeScript
'use client';
|
|
|
|
import { useEffect } from 'react';
|
|
import { usePathname, useRouter } from 'next/navigation';
|
|
|
|
import { useUser } from '@/contexts/user-context';
|
|
|
|
/** Redirects unauthenticated users to login while allowing the shell to render first. */
|
|
export function useAuthRedirect() {
|
|
const router = useRouter();
|
|
const pathname = usePathname();
|
|
const { user, loading } = useUser();
|
|
|
|
useEffect(() => {
|
|
if (loading || user) {
|
|
return;
|
|
}
|
|
|
|
const queryString = window.location.search;
|
|
const callbackUrl = queryString ? `${pathname}${queryString}` : pathname;
|
|
const loginUrl = new URL('/login', window.location.origin);
|
|
|
|
loginUrl.searchParams.set('callbackUrl', callbackUrl);
|
|
sessionStorage.setItem('redirect_after_login', callbackUrl);
|
|
router.replace(loginUrl.toString());
|
|
}, [loading, pathname, router, user]);
|
|
}
|