feat: Implement AI Chat Agent, Email Notifications, and UI enhancements
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Implementation Plan - Email Services
|
||||
|
||||
## 1. Infrastructure
|
||||
- Add MailHog to `docker-compose.yml` for local SMTP testing.
|
||||
- Install `nodemailer` and `@types/nodemailer`.
|
||||
|
||||
## 2. Database Schema
|
||||
- Update `shared/schema.ts`:
|
||||
- Add `password_reset_tokens` table.
|
||||
- `id` (uuid, pk)
|
||||
- `userId` (fk users.id)
|
||||
- `token` (string, unique)
|
||||
- `expiresAt` (timestamp)
|
||||
- `isUsed` (boolean)
|
||||
- Add validation schemas (`insertPasswordResetTokenSchema`).
|
||||
|
||||
## 3. Email Service (`server/email.ts`)
|
||||
- Create `EmailService` class.
|
||||
- Methods:
|
||||
- `sendWelcomeEmail(user)`
|
||||
- `sendPasswordResetEmail(user, token)`
|
||||
- Configuration:
|
||||
- Use `nodemailer`.
|
||||
- Fetch SMTP settings from `storage.getSystemSettings` (fallback to env vars or MailHog defaults for dev).
|
||||
- Keys: `smtp_host`, `smtp_port`, `smtp_user`, `smtp_pass`, `smtp_secure`, `smtp_from`.
|
||||
|
||||
## 4. Backend Routes (`server/routes.ts`)
|
||||
- **Modify Registration**:
|
||||
- After successful user creation, call `emailService.sendWelcomeEmail`.
|
||||
- **New Routes**:
|
||||
- `POST /api/auth/forgot-password`:
|
||||
- Input: `email`.
|
||||
- Logic: Find user, generate token (uuid), save to DB, send email.
|
||||
- `POST /api/auth/reset-password`:
|
||||
- Input: `token`, `newPassword`.
|
||||
- Logic: Validate token (exists, not used, not expired), hash new password, update user, mark token used.
|
||||
|
||||
## 5. Storage (`server/storage.ts`)
|
||||
- Update `IStorage`, `MemStorage`, `DbStorage`:
|
||||
- `createPasswordResetToken(token)`
|
||||
- `getPasswordResetToken(token)`
|
||||
- `markPasswordResetTokenUsed(tokenId)`
|
||||
|
||||
## 6. Frontend
|
||||
- **Forgot Password Page** (`/forgot-password`):
|
||||
- Form: Email input.
|
||||
- Action: `POST /api/auth/forgot-password`.
|
||||
- **Reset Password Page** (`/reset-password`):
|
||||
- Form: New Password, Confirm Password.
|
||||
- Params: `?token=...` from URL.
|
||||
- Action: `POST /api/auth/reset-password`.
|
||||
- **Login Page Update**:
|
||||
- Add "Forgot Password?" link.
|
||||
- **Admin Settings**:
|
||||
- Add "Email Settings" section in `AdminUserManagement` or `Settings` page (optional but requested "add email settings").
|
||||
- Form to set SMTP host/port/etc.
|
||||
|
||||
## 7. Configuration
|
||||
- Add `scripts/test-email-flow.ts` to simulate the flow and verify via MailHog API (`http://localhost:8025/api/v2/messages`).
|
||||
Reference in New Issue
Block a user