aau-auth-kit-ui
Version:
Plug & play shadcn/ui components for aau-auth-kit with Next.js integration
30 lines (23 loc) • 863 B
text/typescript
import { useContext, useEffect } from "react";
import { AuthUIContext } from "../lib/auth-ui-provider";
import type { AuthView } from "../lib/auth-view-paths";
interface AuthenticateOptions {
authView?: AuthView;
enabled?: boolean;
}
export function useAuthenticate(options?: AuthenticateOptions) {
const { authView = "signIn", enabled = true } = options ?? {};
const {
hooks: { useSession },
basePath,
viewPaths,
replace,
} = useContext(AuthUIContext);
const { data: sessionData, isPending } = useSession();
useEffect(() => {
if (!enabled || isPending || sessionData) return;
replace(
`${basePath}/${viewPaths[authView]}?redirectTo=${window.location.href.replace(window.location.origin, "")}`
);
}, [isPending, sessionData, basePath, viewPaths, replace, authView, enabled]);
}