diff --git a/AGENTS.md b/AGENTS.md index d215b3d..51ce2f3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,7 +31,6 @@ Requires `.env` with at least `DATABASE_URL`, `BETTER_AUTH_SECRET`, `BETTER_AUTH - **`expect: { requireAssertions: true }`** — every test must assert something. - **All route tests mock `$lib/db`** (Prisma client) and `$lib/auth-client`/`$lib/auth` via `vi.mock()`. Stub factories in `src/lib/test-utils.ts`. - **No `.env.test`** — mocking `$lib/db` makes real DB unnecessary. -- **Known bug**: register page `throw redirect()` is caught by try/catch and returns 400 instead of redirecting (documented in test). ## Architecture notes diff --git a/src/app.d.ts b/src/app.d.ts index 1168519..27fbade 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -3,8 +3,8 @@ import type { Session, User } from "better-auth"; declare global { namespace App { interface Locals { - session: Session, - user: User, + session: Session | null; + user: User | null; } } } diff --git a/src/lib/auth-client.ts b/src/lib/auth-client.ts index 2481aef..c951883 100644 --- a/src/lib/auth-client.ts +++ b/src/lib/auth-client.ts @@ -1,9 +1,3 @@ import { createAuthClient } from "better-auth/svelte" -export const authClient = createAuthClient({}); - -const signIn = async () => { - const data = await authClient.signIn.social({ - provider: "google", - }); -}; \ No newline at end of file +export const authClient = createAuthClient({}); \ No newline at end of file diff --git a/src/lib/auth.ts b/src/lib/auth.ts index 028e5ca..53b8add 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -11,13 +11,13 @@ export const auth = betterAuth({ provider: 'postgresql' }), emailVerification: { - sendVerificationEmail: async ({ user }) => { + sendVerificationEmail: async ({ user, url }) => { void sendMail({ to: user.email, templateId: 'email-verification-email', data: { target_email_address: user.email, - verification_link: 'https://google.com' + verification_link: url } }); } @@ -43,5 +43,14 @@ export const auth = betterAuth({ clientSecret: process.env.GOOGLE_CLIENT_SECRET as string } }, + rateLimit: { + enabled: true, + window: 60, + max: 100 + }, + trustedOrigins: [ + 'http://localhost:5173', + 'https://portal.rhemawavetech.com' + ], plugins: [sveltekitCookies(getRequestEvent)] }); diff --git a/src/routes/login/+page.svelte b/src/routes/login/+page.svelte index 502c8d2..b31e00e 100644 --- a/src/routes/login/+page.svelte +++ b/src/routes/login/+page.svelte @@ -36,6 +36,14 @@ +