karbe/prisma/migrations
Ubuntu ea0e606735
All checks were successful
CI / test (pull_request) Successful in 2m45s
feat(ce): Sprint K — public badge + invites CE_MEMBER + tests
Public badge sur fiche carbet :
- carbet-public.ts charge les OrganizationCarbetMembership (org
  approuvée uniquement) + expose `organizations: {id,name,slug}[]`.
- /carbets/[slug] affiche « Géré par le CE <name> » sous le header
  si au moins 1 org liée.

Invites CE_MEMBER :
- Migration 20260603300000_org_invite_token : OrgInviteToken
  (tokenHash, organizationId, email?, createdByUserId, expiresAt,
  usedAt). Cascade sur Organization. Index expiresAt + organizationId.
- src/lib/ce-invites.ts : createOrgInviteToken (TTL 14j),
  listOrgInviteTokens, getOrgInviteByToken (validité + expiry),
  markOrgInviteConsumed, revokeOrgInviteToken. Token = 24 bytes
  base64url, hash sha256.
- /espace-ce/membres : liste membres (CE_MANAGER + CE_MEMBER actifs)
  + form de génération de lien (email optionnel = lock email côté
  signup) + liste des invitations avec statut actif/consommé/expiré +
  bouton révoquer.
- /espace-ce/membres/actions.ts : createInviteAction +
  revokeInviteAction. Audit log scope=ce.invite.
- API /api/signup étendue : zod accepte inviteToken, branche dédiée
  qui crée User CE_MEMBER + organizationId du token + marquage
  usedAt. Vérif email match si email fourni dans le token.
- /inscription?invite=TOKEN : récupère l'invite, pré-affiche org name,
  lock email si fourni, masque les fieldsets type de compte (forcé
  CE_MEMBER).

CTA marketing :
- /pour-comites-entreprise : section CTA « Créer mon espace CE » sous
  le rendu content-pages, conditionnée par plugin ce-management.

Tests vitest (tests/lib/ce-access.test.ts) :
- canManageCarbet : admin always, owner direct, CE_MANAGER via org
  match, refus si autre org / pas d'org / TOURIST / pas de membership.
- 9 tests, mocks next-auth + @/auth + @/lib/authorization pour éviter
  next/server (incompatible vitest sans setup).
- Total tests projet : 62/62 ✓.

Dashboard /espace-ce : lien vers /espace-ce/membres en bas.

Migration prod appliquée.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-03 00:03:03 +00:00
..
20260529000000_init_karbe_schema feat(prisma): add full Karbé schema and initial migration 2026-05-29 16:59:35 +00:00
20260530173000_add_last_booked_at feat(carbet): add lastBookedAt and endpoint 2026-05-30 17:52:41 +00:00
20260530200000_add_plugin_system feat(plugins): foundation système Plugin Karbé 2026-05-30 22:17:10 +00:00
20260531000000_add_access_type feat(plugins): access-type + demo-carbets-seed (Phase 3.1 + 2.5) 2026-05-31 02:56:25 +00:00
20260531120000_add_seasonality_and_min_stay feat(plugins): seasonality + min-stay (Phase 3.2 + 3.4) 2026-05-31 08:50:26 +00:00
20260531180000_add_content_pages feat(plugins): content-pages + legal-pages (Phase 4.1 + 4.3) 2026-05-31 10:12:13 +00:00
20260531200000_add_pirogue_providers feat(plugin): pirogue-providers (Phase 3.3) 2026-05-31 11:29:29 +00:00
20260531220000_content_page_composite_key feat: ContentPage bilingue (PK composite slug+lang) + seed pages EN 2026-05-31 11:45:47 +00:00
20260601000000_audit_and_settings feat(admin): Sprint 5 — Audit log + Settings (gouvernance) 2026-06-01 00:13:49 +00:00
20260601060000_password_reset_token feat: reset password + page mon-compte (RGPD) + facettes recherche (prix max, équipements) 2026-06-01 10:16:37 +00:00
20260601120000_translation_overrides feat(admin): /admin/home — éditeur des textes de la page d'accueil (FR+EN, override DB) 2026-06-01 01:10:49 +00:00
20260601150000_carbet_nightly_price feat(p0): prix/nuit + booking form public + /inscription + /reservations/[id] 2026-06-01 01:34:00 +00:00
20260602030000_operational_criteria feat: 4 critères opérationnels (route/capacité/électricité/GSM) + presets profils + badges 2026-06-02 02:26:02 +00:00
20260602100000_favorite feat: « Au fil de l'eau » — Reels mobile + uploader pro + favoris 2026-06-02 00:27:16 +00:00
20260603000000_rental_marketplace feat(rental): Sprint A — modèle Prisma + admin CRUD + seed 13 items 2026-06-02 03:26:04 +00:00
20260603100000_rental_item_media feat(rental): Sprint F — photos & vidéos items rental 2026-06-02 09:34:09 +00:00
20260603200000_ce_management feat(ce): Sprint G — data model + admin validation 2026-06-02 22:55:54 +00:00
20260603300000_org_invite_token feat(ce): Sprint K — public badge + invites CE_MEMBER + tests 2026-06-03 00:03:03 +00:00
migration_lock.toml feat(prisma): add full Karbé schema and initial migration 2026-05-29 16:59:35 +00:00