Auth Hooks
All auth hooks use TanStack Query mutations/queries for automatic loading states and error handling.
Hooks Reference
Section titled “Hooks Reference”useLogin()
Section titled “useLogin()”const { mutate, isPending } = useLogin();mutate({ email: 'admin@example.com', password: 'secret' });useLogout()
Section titled “useLogout()”const { mutate } = useLogout();mutate(); // Redirects to /loginuseGetIdentity()
Section titled “useGetIdentity()”const query = useGetIdentity();// query.data → { id: '1', name: 'Admin', avatar: '...' } | nulluseIsAuthenticated()
Section titled “useIsAuthenticated()”const { isAuthenticated, isLoading } = useIsAuthenticated();usePermissions<T>()
Section titled “usePermissions<T>()”usePermissions() is a client-side rendering helper. It can hide or disable UI, but APIs, data providers, and database policies must enforce authorization independently.
const permissionHints = usePermissions<string[]>();
// Change navigation or a disabled control from a UI hint.if (permissionHints.has('admin')) { /* ... */ }
// Read a UI hint using the resource:action naming convention.if (permissionHints.can('posts', 'edit')) { /* ... */ }
await permissionHints.refetch();The built-in Supabase and SSO providers expose getPermissions(), but it returns null until
the application configures a trusted resolver. Resolver values are UI hints only; do not use
these browser-visible values as an API, RLS, or action authorization decision. The backend must
authenticate and authorize every request.
useOnError()
Section titled “useOnError()”const { mutate } = useOnError();mutate(error); // Calls authProvider.onError → may logout or redirectuseRegister(), useForgotPassword(), useUpdatePassword()
Section titled “useRegister(), useForgotPassword(), useUpdatePassword()”Same mutation pattern as useLogin().