25 lines
850 B
TypeScript
25 lines
850 B
TypeScript
import { createAuthClient } from 'better-auth/client'
|
|
|
|
function apiUrl(): string {
|
|
if (typeof window !== 'undefined' && (window as any).__E2E_API_URL) {
|
|
return (window as any).__E2E_API_URL as string
|
|
}
|
|
return import.meta.env.VITE_API_URL ?? '/api'
|
|
}
|
|
|
|
// Better Auth mounts at /api/auth (default basePath); the client appends the
|
|
// endpoint verbatim to baseURL, so the base must include /auth — otherwise it
|
|
// emits /api/sign-in/email and 404s on both sandbox and deploy.
|
|
export const authClient = createAuthClient({
|
|
baseURL: `${apiUrl()}/auth`,
|
|
})
|
|
|
|
export async function signIn(email: string, password: string): Promise<void> {
|
|
const { error } = await authClient.signIn.email({ email, password })
|
|
if (error) throw new Error('Invalid credentials')
|
|
}
|
|
|
|
export async function signOut(): Promise<void> {
|
|
await authClient.signOut()
|
|
}
|