Authentication (LLM Reference)

Status: Implemented (Milestone 7)

Endpoints

POST /api/auth/register   { email, password }
POST /api/auth/login      { email, password }
POST /api/auth/refresh    { refreshToken }
POST /api/auth/logout     { refreshToken }

Response

{ "token": "<jwt>", "refreshToken": "<opaque>", "user": { "id", "email", "role", "createdAt" } }

Protected CRUD

Authorization: Bearer <token>

Permissions (on collection JSON)

Rules: public (default), authenticated, owner, admin.

Owner rule requires user_id field; auto-set on create.

Events

auth.register, auth.login, auth.logout

Config

auth.jwtSecret, auth.accessTokenTtl, auth.refreshTokenTtl in bakend.json.

Env: BAKEND_AUTH_JWT_SECRET, BAKEND_ADMIN_EMAIL

Module

src/core/auth/create-auth-engine.ts โ€” wired in start() as StartResult.auth.