Verstuur uitnodigingen voor experts via SendGrid, zoals het ZRM-platform
- lib/mail.ts gebruikt SendGrid met dezelfde variabelen als het Rikx ZRM-platform (SENDGRID_API_KEY, SENDGRID_FROM_EMAIL, SENDGRID_FROM_NAME); SMTP blijft beschikbaar als alternatief - Uitnodigingsmail krijgt ook een HTML-versie met knop - Zonder SendGrid of SMTP blijft de pagina Experts de link tonen - .env.example en CLAUDE.md bijgewerkt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,7 @@ Beheerportaal voor de Rikx-methodiek. Beheert de sociaal ondernemers (accounts i
|
||||
- Impactmaker van een project = sociaal ondernemer: `projects.impactmaker_account_id` verwijst naar `accounts.id` in de platformdatabase (geen foreign key; namen via `listAccountNames()` in `lib/platform-db.ts`)
|
||||
- `/rondes` — Rikx rondes beheren (label, Rikx waarde, Rikx prijs, gekoppelde experts; dezelfde koppeling `expert_rondes` als op `/experts`); een project hoort optioneel bij één ronde (`projects.ronde_id`)
|
||||
- `/projecten/[id]` — projectpagina met tabs: Project plan (velden en keuzelijsten gedefinieerd in `lib/projectPlan.ts`) en Rikx calculatie (alleen zichtbaar vanaf status Waardebepaling, zie `RIKX_CALCULATIE_VANAF_STATUS` in `lib/projectStatus.ts`; rekenmethode `arbeid`, `jeugd` is zichtbaar maar nog niet beschikbaar). Onderaan de tab: Beoordeling (`beoordeling`: goedgekeurd/afgekeurd/leeg) met `beoordeling_reden`. Kolom `rikx_calculatie_aan` is van de oude schuif en wordt niet meer gebruikt. Uitkomsten worden live berekend met `lib/rikxCalculatie.ts`
|
||||
- `/experts` (CRM → Experts) — experts uitnodigen, rondes koppelen, opnieuw uitnodigen (ook voor een vergeten wachtwoord), verwijderen, en "Inloggen als": een admin bekijkt `/expert` als die expert (alleen lezen; sessie met `impersonatorId`, terug via "Terug naar beheer"). Uitnodiging per e-mail via SMTP; zonder SMTP_HOST toont de pagina de link om zelf door te geven
|
||||
- `/experts` (CRM → Experts) — experts uitnodigen, rondes koppelen, opnieuw uitnodigen (ook voor een vergeten wachtwoord), verwijderen, en "Inloggen als": een admin bekijkt `/expert` als die expert (alleen lezen; sessie met `impersonatorId`, terug via "Terug naar beheer"). Uitnodiging per e-mail via SendGrid of SMTP; zonder beide toont de pagina de link om zelf door te geven
|
||||
- `/uitnodiging/[token]` — openbaar: expert stelt wachtwoord in (token 7 dagen geldig, eenmalig; alleen de SHA-256-hash staat in de database)
|
||||
- `/expert` — de enige pagina voor experts: projecten in Waardebepaling uit hun rondes, project plan (alleen lezen) en hun eigen beoordeling (3 scores 1–10, advies Bonus/Malus, toelichting). Experts zien elkaars beoordeling niet
|
||||
- Rollen: `users.role` = `admin` of `expert`. Elke beheerpagina en -actie begint met `requireAdmin()`, de expertpagina met `requireExpert()` (`lib/auth.ts`); de rol komt uit de database, niet uit de cookie
|
||||
@@ -21,7 +21,7 @@ Beheerportaal voor de Rikx-methodiek. Beheert de sociaal ondernemers (accounts i
|
||||
- Next.js 16 + TypeScript + Tailwind CSS
|
||||
- SQLite via `node:sqlite` (ingebouwd in Node 22, geen extra package)
|
||||
- HMAC-signed sessie-cookie auth (geen externe auth-provider)
|
||||
- Nodemailer voor email-notificaties
|
||||
- E-mail via SendGrid (zoals het ZRM-platform) of Nodemailer/SMTP — `lib/mail.ts`
|
||||
|
||||
## Lokaal draaien
|
||||
```bash
|
||||
@@ -61,7 +61,10 @@ npm run create-admin maarten@rikx.nl wachtwoord "Maarten"
|
||||
| `DB_PATH` | `./data/app.db` | **In productie: `/data/app.db`** (absoluut pad) |
|
||||
| `RIKX_PLATFORM_DB_PATH` | `/rikx-platform-data/app.db` | Database van het ZRM-platform (sociaal ondernemers) |
|
||||
| `NODE_ENV` | `development` | In productie: `production` |
|
||||
| `SMTP_HOST` | — | SMTP server voor e-mail (o.a. uitnodigingen van experts); leeg = geen e-mail, link wordt in beeld getoond |
|
||||
| `SENDGRID_API_KEY` | — | E-mail via SendGrid (uitnodigingen voor experts); zelfde key als het Rikx ZRM-platform. Nooit committen. Leeg én geen SMTP = geen e-mail, link wordt in beeld getoond |
|
||||
| `SENDGRID_FROM_EMAIL` | `no-reply@rikxplatform.nl` | Afzender bij SendGrid (domein is daar al geverifieerd voor ZRM) |
|
||||
| `SENDGRID_FROM_NAME` | `Rikx` | Afzendernaam |
|
||||
| `SMTP_HOST` | — | Alternatief voor SendGrid: SMTP server (alleen gebruikt als `SENDGRID_API_KEY` leeg is) |
|
||||
| `SMTP_PORT` | `587` | SMTP poort |
|
||||
| `SMTP_USER` | — | SMTP gebruikersnaam |
|
||||
| `SMTP_PASS` | — | SMTP wachtwoord |
|
||||
|
||||
Reference in New Issue
Block a user