Implement email/password auth with JWT sessions and API key auth for sandbox lifecycle. Users get a default team on signup; sandboxes, snapshots, and API keys are scoped to teams. - Add user, team, users_teams, and team_api_keys tables (goose migrations) - Add JWT middleware (Bearer token) for user management endpoints - Add API key middleware (X-API-Key header, SHA-256 hashed) for sandbox ops - Add signup/login handlers with transactional user+team creation - Add API key CRUD endpoints (create/list/delete) - Replace owner_id with team_id on sandboxes and templates - Update all handlers to use team-scoped queries - Add godotenv for .env file loading - Update OpenAPI spec and test UI with auth flows
29 lines
724 B
Plaintext
29 lines
724 B
Plaintext
# Database
|
|
DATABASE_URL=postgres://wrenn:wrenn@localhost:5432/wrenn?sslmode=disable
|
|
|
|
# Control Plane
|
|
CP_LISTEN_ADDR=:8000
|
|
CP_HOST_AGENT_ADDR=localhost:50051
|
|
|
|
# Host Agent
|
|
AGENT_LISTEN_ADDR=:50051
|
|
AGENT_KERNEL_PATH=/var/lib/wrenn/kernels/vmlinux
|
|
AGENT_IMAGES_PATH=/var/lib/wrenn/images
|
|
AGENT_SANDBOXES_PATH=/var/lib/wrenn/sandboxes
|
|
AGENT_SNAPSHOTS_PATH=/var/lib/wrenn/snapshots
|
|
AGENT_HOST_INTERFACE=eth0
|
|
|
|
# Lago (billing — external service)
|
|
LAGO_API_URL=http://localhost:3000
|
|
LAGO_API_KEY=
|
|
|
|
# Object Storage (hibernate snapshots — Hetzner Object Storage, S3-compatible)
|
|
S3_BUCKET=wrenn-snapshots
|
|
S3_REGION=fsn1
|
|
S3_ENDPOINT=https://fsn1.your-objectstorage.com
|
|
AWS_ACCESS_KEY_ID=
|
|
AWS_SECRET_ACCESS_KEY=
|
|
|
|
# Auth
|
|
JWT_SECRET=
|