forked from cartsnitch/auth
11245744b3
Replace hand-rolled JWT auth with Better-Auth session-based authentication. - Scaffold auth/ Node.js service with Better-Auth, bcrypt password compat, Postgres adapter mapped to existing users table - Add Alembic migration (002) creating sessions, accounts, verifications tables and migrating password hashes to accounts table - Update FastAPI auth dependency to validate sessions via shared DB (supports both cookie and Bearer token) - Remove registration/login/refresh endpoints from API gateway (now handled by Better-Auth service) - Update frontend to use better-auth/react client with httpOnly cookies (no tokens in localStorage or memory) - Rewrite auth store, Login, Register, Dashboard, Settings, ProtectedRoute to use session-based auth - Update all tests to create sessions directly in DB instead of JWT tokens Resolves CAR-27 See plan: CAR-26#document-plan Co-Authored-By: Paperclip <noreply@paperclip.ing>
24 lines
662 B
TypeScript
24 lines
662 B
TypeScript
import { createServer } from "node:http";
|
|
import { toNodeHandler } from "better-auth/node";
|
|
import { auth } from "./auth.js";
|
|
|
|
const port = parseInt(process.env.PORT ?? "3001", 10);
|
|
|
|
const handler = toNodeHandler(auth);
|
|
|
|
const server = createServer(async (req, res) => {
|
|
// Health check
|
|
if (req.url === "/health" && req.method === "GET") {
|
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
res.end(JSON.stringify({ status: "ok" }));
|
|
return;
|
|
}
|
|
|
|
// All /auth/* routes handled by Better-Auth
|
|
await handler(req, res);
|
|
});
|
|
|
|
server.listen(port, "0.0.0.0", () => {
|
|
console.log(`CartSnitch auth service listening on port ${port}`);
|
|
});
|