aau-auth-kit-ui
Version:
Plug & play shadcn/ui components for aau-auth-kit with Next.js integration
30 lines (24 loc) • 901 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;
}
export function useAuthenticateAdmin(options?: AuthenticateOptions) {
const { authView = "signIn" } = options ?? {};
const {
hooks: { useSession },
basePath,
viewPaths,
replace,
adminRole,
} = useContext(AuthUIContext);
const { data: sessionData, isPending } = useSession();
const isAdmin = sessionData?.user?.role === adminRole;
useEffect(() => {
if (isPending || sessionData || isAdmin) return;
replace(
`${basePath}/${viewPaths[authView]}?redirectTo=${window.location.href.replace(window.location.origin, "")}`
);
}, [isPending, sessionData, basePath, viewPaths, replace, authView, isAdmin]);
}