feat(auth): @mosaic/auth — BetterAuth email/password setup

Implements P0-004: authentication package with BetterAuth + Drizzle adapter.

- BetterAuth configured with Drizzle adapter (usePlural for table mapping)
- Email/password authentication enabled
- Role field (admin/member/viewer) as additional user field
- 7-day sessions with daily refresh
- Mounted at /api/auth/* basePath
- createAuth() factory takes Db instance for DI flexibility
- BETTER_AUTH_SECRET and BETTER_AUTH_URL env vars added to .env.example

Verified: auth instance created, handler and API methods confirmed.

Closes #4

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 21:20:42 -05:00
parent 2b1723e898
commit d03f78ae17
6 changed files with 544 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
{
"name": "@mosaic/auth",
"version": "0.0.0",
"type": "module",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
@@ -16,7 +17,13 @@
"test": "vitest run"
},
"devDependencies": {
"@types/node": "^22.0.0",
"tsx": "^4.0.0",
"typescript": "^5.8.0",
"vitest": "^2.0.0"
},
"dependencies": {
"@mosaic/db": "workspace:^",
"better-auth": "^1.5.5"
}
}