- Add `users` PocketBase collection (username, password_hash, role, created) - Implement HMAC-SHA256 signed cookie auth in hooks.server.ts; token payload is userId:username:role - Add User type, getUserByUsername, createUser (scrypt), loginUser (timing-safe) to pocketbase.ts - Add login/register page with tabbed form UI and server actions - Add logout route that clears the auth cookie - Add layout.server.ts auth guard: redirect unauthenticated users to /login - Extend App.Locals and App.PageData with role field - Add AUTH_SECRET, POCKETBASE_ADMIN_EMAIL/PASSWORD to .env.example - Install @types/node for Node crypto/scrypt types
21 lines
872 B
Plaintext
21 lines
872 B
Plaintext
# libnovel UI — environment variables
|
|
# Copy to .env and adjust; do NOT commit with real secrets.
|
|
|
|
# Public URL of the scraper API (used by SvelteKit server-side load functions)
|
|
# In docker-compose this is the internal service name
|
|
SCRAPER_API_URL=http://localhost:8080
|
|
|
|
# Public URL of PocketBase (used by SvelteKit server-side load functions)
|
|
POCKETBASE_URL=http://localhost:8090
|
|
|
|
# PocketBase admin credentials (server-side only, never exposed to browser)
|
|
POCKETBASE_ADMIN_EMAIL=admin@libnovel.local
|
|
POCKETBASE_ADMIN_PASSWORD=changeme123
|
|
|
|
# Public-facing MinIO URL (used to rewrite presigned URLs for the browser)
|
|
# In dev this is localhost; in prod set to your MinIO public domain
|
|
PUBLIC_MINIO_PUBLIC_URL=http://localhost:9000
|
|
|
|
# Secret used to sign auth tokens stored in cookies (generate with: openssl rand -hex 32)
|
|
AUTH_SECRET=change_this_to_a_long_random_secret
|