Commit Graph

6 Commits

Author SHA1 Message Date
Simon 578dd4eab9 rebrand: Klassenportal, domain info1.ifb.lol, server status
- Replace INFO1 brand with Klassenportal everywhere (titles, nav,
  emails, TOTP issuer, recovery codes)
- Update domain from info1.simon0x.xyz to info1.ifb.lol
- Remove E2EE claims (e2ee.js was deleted, claims were false)
- Add GET /api/health endpoint (DB check + uptime)
- Add live server status section to landing page
- Fix README: domain, title, layout table
2026-04-22 21:31:03 +02:00
Simon c217705eb5 docs: add README, LICENSE, .env.example
README in German with universal framing (class, study group, cohort)
rather than INFO1-specific wording. MIT license. Update package.json
with description, keywords, repository URL, proper license field,
start script. Add .env.example documenting required environment
variables.
2026-04-18 11:36:22 +02:00
Simon 396148aea2 feat: email verification via Resend + admin user management
- Add email verification flow: register sends verify link, login blocks unverified accounts, 24h token expiry, resend endpoint (3/h rate limit).
- Add mailer module using Resend with branded HTML + plaintext template.
- Extend admin dashboard: verified-status column, toggle verify/unverify buttons, promote/demote admin role, delete any non-self user.
- Migrate users table: email_verified, verify_token, verify_expires columns.
- Load env via dotenv; add .env to gitignore.
2026-04-18 01:33:45 +02:00
Simon b2de630983 harden security: enforce JWT_SECRET, helmet, CSP, stricter rate limits
- Require JWT_SECRET env var (fatal exit if missing)
- Add helmet middleware with custom CSP
- Cookie Secure flag when NODE_ENV=production
- requireAuth re-verifies user.status from DB on every request
- class_events DELETE restricted to creator or admin
- Rate limit /register (5/hr) and PUT /me/password (5/15min)
- Password minimum 6 to 8 chars
- crudRoutes truncates strings to 1000 chars
- Remove application/octet-stream from allowed upload MIMEs
2026-04-17 23:40:27 +02:00
Simon 8f75bc6a10 feat: add TOTP 2FA with QR code and manual secret entry 2026-04-17 22:56:39 +02:00
Simon db5efd8ed9 clean initial commit 2026-04-17 00:12:47 +02:00