AuthProvider
Wraps your app with auth context. Calls adapter.getSession() on mount to restore session.
import { AuthProvider } from "@allem-sdk/auth";AuthAdapter interface
interface AuthAdapter {
getSession: () => Promise<AuthSession>;
signIn: (credentials: Record<string, string>) => Promise<AuthSession>;
signOut: () => Promise<void>;
}
interface AuthSession {
user: AuthUser | null;
token: string | null;
expiresAt: number | null;
}
interface AuthUser {
id: string;
email?: string;
name?: string;
image?: string;
[key: string]: unknown;
}Example adapter
const myAuthAdapter: AuthAdapter = {
getSession: async () => {
const res = await fetch("/api/auth/session");
if (!res.ok) return { user: null, token: null, expiresAt: null };
return res.json();
},
signIn: async (credentials) => {
const res = await fetch("/api/auth/signin", {
method: "POST",
body: JSON.stringify(credentials),
});
return res.json();
},
signOut: async () => {
await fetch("/api/auth/signout", { method: "POST" });
},
};
<AuthProvider adapter={myAuthAdapter}>
<App />
</AuthProvider>