Operators can fix prod admin passwords without email via Byt lösenord; end users can use forgot-password when SMTP is configured. Local and CI use Mailpit to capture outbound mail and verify reset links end-to-end. - Backend: V8 password_reset_tokens, PasswordResetService, EmailService, POST /api/auth/forgot-password, reset-password, change-password - Optional testToken in forgot-password response (docker profile only, for E2E) - Frontend: ForgotPasswordPage, ResetPasswordPage, ChangePasswordPage, routes, login link, header Byt lösenord - Mailpit (ghcr.io/axllent/mailpit:v1.28) in docker-compose + e2e stack - E2E: password-reset.spec.ts + Mailpit API helper tests SMTP delivery - Separate dev/e2e Docker image names to avoid overwriting bilhej-frontend - Docs: README email section, production-email-checklist, .env.example - Unit/integration tests for reset, change password, and Vitest page specs Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.5 KiB
Text
45 lines
1.5 KiB
Text
# BilHej Environment Variables
|
|
# Copy this file to .env and fill in your keys.
|
|
#
|
|
# cp .env.example .env
|
|
#
|
|
# Docker Compose reads .env from the project root automatically.
|
|
|
|
# ---------- PostgreSQL ----------
|
|
POSTGRES_DB=bilhej
|
|
POSTGRES_USER=bilhej
|
|
POSTGRES_PASSWORD=change_me
|
|
|
|
# ---------- JWT ----------
|
|
# Generate a secure random secret:
|
|
# openssl rand -hex 32
|
|
JWT_SECRET=change_me_to_a_random_64_char_string
|
|
|
|
# ---------- Stripe (Phase 1) ----------
|
|
# Test keys from Stripe Dashboard: https://dashboard.stripe.com/test/apikeys
|
|
STRIPE_SECRET_KEY=sk_test_...
|
|
# Webhook secret from stripe CLI: stripe listen --print-secret
|
|
STRIPE_WEBHOOK_SECRET=whsec_...
|
|
# Price ID from Stripe Dashboard: https://dashboard.stripe.com/test/products
|
|
STRIPE_PRICE_ID=price_...
|
|
|
|
# ---------- Swish (Phase 0) ----------
|
|
SWISH_NUMBER=0701234567
|
|
|
|
# ---------- App URL (password reset links in email) ----------
|
|
APP_PUBLIC_BASE_URL=http://localhost:3000
|
|
|
|
# ---------- SMTP (local Docker uses Mailpit via docker-compose.yml) ----------
|
|
# docker compose up → view mail at http://localhost:8025
|
|
# Leave MAIL_HOST unset in .env to use compose defaults (mailpit).
|
|
# Production: use Resend/Brevo SMTP — see README "Email (password reset)"
|
|
# MAIL_HOST=smtp.resend.com
|
|
# MAIL_PORT=587
|
|
# MAIL_USERNAME=
|
|
# MAIL_PASSWORD=
|
|
# MAIL_FROM=noreply@bilhej.se
|
|
|
|
# ---------- Production admin (prod profile only) ----------
|
|
# Strong password; never use test1234. Dev seeds use test@bilhej.se instead.
|
|
ADMIN_EMAIL=admin@bilhej.se
|
|
ADMIN_PASSWORD=change_me_to_a_strong_password
|