buildmymcpserver/apps/web/app
Marco Sadjadi b248adf5c0
All checks were successful
Deploy to Production / deploy (push) Successful in 54s
feat(auth): email login soft-disabled until SMTP/Resend is wired
Closes the dependency on an unbuilt email sender. New EMAIL_AUTH_ENABLED
env flag (default false). When off:

- POST /v1/auth/magic-link  → 503 email_auth_disabled
- POST /v1/auth/verify       → 503 email_auth_disabled
- GET  /v1/auth/providers    → { email: false, sms, google, github }
- Login page: hides the email/phone tab toggle (only one method),
  hides the email form entirely, defaults to SMS/phone tab

Flipping EMAIL_AUTH_ENABLED=true re-enables the magic-link routes and
re-shows the email form section. Schema (magic_links table) unchanged
so this is a 1-env-flip re-enable, not a re-implementation.

SECURITY: closes audit finding Za-001 (account-takeover via
cross-provider email lookup). Without a magic-link flow, an attacker
who controls a target's inbox can no longer claim an existing
OAuth-created account. The remaining provider-mixing surface (Google
↔ GitHub at same email) requires controlling the OAuth provider
account itself, which is each provider's own security boundary.

Active login methods now: Google OAuth · GitHub OAuth · SMS code
(Twilio) · admin password (seeded, single user).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 18:51:57 +02:00
..
(dashboard) feat: user menu + profile page + in-app subscription management 2026-05-25 17:46:36 +02:00
(marketing) feat: Swiss-compliant launch — Impressum/AGB/Contact, support panel, DSG exports, cookie banner 2026-05-25 17:12:06 +02:00
admin fix(admin): make whole support-ticket row clickable 2026-05-25 17:36:31 +02:00
docs fix(web): mobile-responsive hero, marketing site, docs and dashboard 2026-05-21 23:25:26 +02:00
login feat(auth): email login soft-disabled until SMTP/Resend is wired 2026-05-25 18:51:57 +02:00
templates feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
apple-icon.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
globals.css fix(preview): stop spec generation timing out behind the edge proxy 2026-05-21 23:52:48 +02:00
icon.svg fix(web): favicon matches nav-bar logo (monochrome outline, prefers-color-scheme) 2026-05-19 22:44:58 +02:00
layout.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
manifest.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
opengraph-image.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
robots.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
sitemap.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00