velxio/frontend/src/pages
David Montero Crespo 44789cf58b feat(auth): welcome email on register + password reset via Odoo mail relay
Adds the transactional email pipeline driven from the Odoo SMTP relay so
new sign-ups get a Velxio-branded welcome and existing users can reset a
forgotten password without us running our own outbound mail server.

Backend:
- PasswordResetToken model: one-time, SHA-256-hashed (plain text never on
  disk), TTL 60 min, marked used_at on consume to prevent replay.
- POST /auth/forgot-password — anti-enumeration (always 200 + generic
  message), rate-limited 3/hour/user.
- POST /auth/reset-password — verifies token, hashes new password,
  atomically marks token used.
- /auth/register hooked with asyncio.create_task to fire welcome mail —
  registration is never blocked on Odoo being up.
- New service app/services/odoo_mail.py: async httpx wrapper, fire-and-
  forget, swallows every error so the request lifecycle stays clean.
- Settings ODOO_URL / ODOO_API_KEY / ODOO_MAIL_TIMEOUT_S /
  PASSWORD_RESET_TOKEN_TTL_MINUTES / PASSWORD_RESET_RATE_LIMIT_PER_HOUR.

Frontend:
- /forgot-password page (single email field + "check your inbox" state).
- /reset-password?token=XYZ page (new password + confirmation, redirects
  to /login?reset=ok on success).
- "Forgot your password?" link + green confirmation banner on /login.
- authService gains requestPasswordReset() and resetPassword().

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 17:34:30 -03:00
..
AboutPage.css feat(about): real avatar + Recent releases section linking to /v2 and /v2-5 2026-05-08 11:20:38 -03:00
AboutPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
AdminPage.tsx feat(i18n): translate AdminPage + UserProfile + Pricing + EditorPage shell (Editor block 10 — final cleanup) 2026-05-09 12:49:13 -03:00
ArduinoEmulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
ArduinoMegaSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
ArduinoSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
AtmegaSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
Attiny85SimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
CircuitSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
CustomChipSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
DocsPage.css refactor: rename components and update prefixes to 'velxio-' for consistency 2026-04-21 16:45:45 -03:00
DocsPage.tsx feat(i18n): translate DocsPage prose (block 14) 2026-05-09 17:47:19 -03:00
EditorPage.tsx feat(i18n): translate AdminPage + UserProfile + Pricing + EditorPage shell (Editor block 10 — final cleanup) 2026-05-09 12:49:13 -03:00
ElectronicsSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
Esp32C3SimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
Esp32S3SimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
Esp32SimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
ExampleDetailPage.tsx feat(examples): real canvas screenshots as gallery thumbnails 2026-05-07 22:44:10 +02:00
ExampleLoaderPage.tsx feat(i18n): translate small editor remates + admin internals (Blocks 11+12) 2026-05-09 16:22:16 -03:00
ExamplesPage.tsx feat(examples): translate ExamplesPage + ExamplesGallery to 9 locales 2026-05-09 11:24:53 -03:00
ForgotPasswordPage.tsx feat(auth): welcome email on register + password reset via Odoo mail relay 2026-05-12 17:34:30 -03:00
LandingPage.css feat(landing): footer copy = About Velxio (replaces wrong MIT/avr8js line) 2026-05-09 00:24:13 -03:00
LandingPage.tsx feat(landing): translate Support section + footer link labels (Block 4 of 4) 2026-05-09 02:08:26 -03:00
LoginPage.tsx feat(auth): welcome email on register + password reset via Odoo mail relay 2026-05-12 17:34:30 -03:00
PricingPlaceholder.tsx feat(i18n): translate AdminPage + UserProfile + Pricing + EditorPage shell (Editor block 10 — final cleanup) 2026-05-09 12:49:13 -03:00
ProjectByIdPage.tsx feat: persist multi-board projects + add auto-save 2026-05-01 13:43:33 -03:00
ProjectPage.tsx feat: persist multi-board projects + add auto-save 2026-05-01 13:43:33 -03:00
RaspberryPiPicoSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
RaspberryPiSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
RegisterPage.tsx feat(auth): translate LoginPage + RegisterPage to 9 locales 2026-05-09 03:23:09 -03:00
ResetPasswordPage.tsx feat(auth): welcome email on register + password reset via Odoo mail relay 2026-05-12 17:34:30 -03:00
SEOPage.css refactor: rename components and update prefixes to 'velxio-' for consistency 2026-04-21 16:45:45 -03:00
SpiceSimulatorPage.tsx feat(i18n): translate AboutPage prose + 15 SEO landing pages (blocks 15+16) 2026-05-09 18:38:51 -03:00
UserProfilePage.css refactor: rename components and update prefixes to 'velxio-' for consistency 2026-04-21 16:45:45 -03:00
UserProfilePage.tsx feat(i18n): translate AdminPage + UserProfile + Pricing + EditorPage shell (Editor block 10 — final cleanup) 2026-05-09 12:49:13 -03:00
Velxio2Page.css refactor: rename components and update prefixes to 'velxio-' for consistency 2026-04-21 16:45:45 -03:00
Velxio2Page.tsx feat(i18n): translate Velxio 2.0 + 2.5 release pages (block 13) 2026-05-09 17:19:16 -03:00
Velxio25Page.tsx feat(i18n): translate Velxio 2.0 + 2.5 release pages (block 13) 2026-05-09 17:19:16 -03:00