3m-portal/forgot-password.html
Vadym Samoilenko 53a85c788d Add full auth system: SQLite sessions, email invites, admin console
- Real email/password login backed by SQLite (better-sqlite3)
- HttpOnly cookie sessions with 8h sliding TTL
- Admin role: invite users via Mailgun magic-link, manage roles/status
- Per-user One2Edit username mapping for job filtering
- Self-service forgot-password / reset-password via email
- Admin console (admin.html) with user table, invite modal, row actions
- New pages: change-password, forgot-password, reset-password, accept-invite
- Gated /api proxy: requires valid session, anti-hijack sessionId check
- Bootstrap initial admins from INITIAL_ADMINS env var on first boot
- Remove Oliver login button, SSO buttons, and legacy api.js/login.js
- deploy.sh: add build-essential (for native module), npm install, data dir

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 11:26:40 +01:00

40 lines
1.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3M - Forgot Password</title>
<link rel="icon" type="image/png" href="Images/Favicon_logo.png">
<link rel="stylesheet" href="styles.css">
</head>
<body class="login-page">
<div class="login-container">
<div class="login-card">
<div class="logo-container">
<img src="Images/login_logo.png" alt="3M Logo" class="logo">
</div>
<h2 class="welcome-text">Reset Password</h2>
<p class="auth-subtitle">Enter your email and we'll send you a reset link.</p>
<form id="forgotForm" class="login-form">
<div class="form-group">
<input type="email" id="email" placeholder="Email address" required autocomplete="email" class="form-input">
</div>
<div class="button-container">
<button type="button" class="login-button tmm-button" id="submitBtn">
<span id="submitText">Send Reset Link</span>
<span id="submitSpinner" class="spinner" style="display: none;"></span>
</button>
</div>
<div id="successMessage" class="auth-success-message" style="display: none;"></div>
<div id="errorMessage" class="error-message" style="display: none;"></div>
</form>
<div class="footer-links">
<a href="login.html" class="footer-link">Back to sign in</a>
</div>
</div>
</div>
<script src="forgot-password.js"></script>
</body>
</html>