wulf-pulse/lib/auth-client.ts

41 lines
981 B
TypeScript
Raw Normal View History

import { createAuthClient } from "better-auth/react";
import { magicLinkClient, twoFactorClient, adminClient } from "better-auth/client/plugins";
import { ac, adminRole, userRole, superAdminRole } from "./permissions";
export const authClient = createAuthClient({
baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL || "",
plugins: [
// Magic link client
magicLinkClient(),
// Two-factor authentication client
twoFactorClient({
onTwoFactorRedirect() {
window.location.href = "/auth/2fa";
},
}),
// Admin client with RBAC
adminClient({
ac,
roles: {
"super-admin": superAdminRole,
admin: adminRole,
user: userRole,
},
}),
],
});
// Export commonly used hooks and methods
export const {
signIn,
signOut,
useSession,
getSession,
} = authClient;
// Type exports
export type Session = typeof authClient.$Infer.Session;
export type User = typeof authClient.$Infer.Session.user;