Commit graph

4 commits

Author SHA1 Message Date
a283c4c083 feat: système d'invitation par les contributeurs Éloquent (1000+ pts)
Permet aux contributeurs confirmés d'inviter de nouvelles personnes par email. L'invité reçoit un lien, choisit son mot de passe, et son compte est créé avec la moitié de la réputation de l'inviteur. L'inviteur reçoit +50 pts.

Domain : entité Invitation (Effect Schema), use cases inviteUser et acceptInvitation, permissions invite_user, ContributorRepository et InvitationRepository, extraction de DatabaseError dans errors.ts.

Infra : repositories Supabase, migration table invitations avec index unique partiel, RPC get_user_id_by_email, template email personnalisé.

UI : page /inviter avec formulaire, page /accepter-invitation avec choix de mot de passe (token consommé uniquement à la soumission), lien Inviter dans AuthSection, NoticeBanner pour les redirections avec message.

Correctifs issus de la revue de code : rollback de l'invitation si l'envoi d'email échoue, try/catch + Sentry dans inviteUserAction, ignoreDuplicates dans le callback auth pour ne pas écraser la réputation, exclusion de .direnv dans vitest.
2026-02-27 23:56:20 +01:00
ebf0b38b0b feat: authentification Supabase, entité Contributor, inscription par URL secrète
- Middleware SSR pour rafraîchir les sessions auth
- Route callback /api/auth/callback (échange code PKCE + création contributor)
- LoginModal branché sur signInWithPassword
- SignupModal + page /inscription/[token] protégée par SIGNUP_SECRET_TOKEN
- AuthSection : écoute onAuthStateChange, affiche nom + déconnexion
- Entité domaine Contributor (id, reputation) avec tests TDD
- Migration : rename user_profiles → contributors, suppression colonne name
- Tests colocated avec le code (plus de dossier __tests__/)
- Composant SwitchLink extrait dans components/ui
2026-02-12 01:59:47 +01:00
78fdf7f23e chore: installer et configurer Prettier, formater tout le codebase
Installe prettier, configure .prettierrc (singleQuote, no semi, trailingComma, LF) et .prettierignore. Ajoute les scripts format et format:check. Applique le formatage sur tous les fichiers sources.
2026-02-11 22:10:26 +01:00
cf635430f2 feat(subjects): migrate general layout and Subjects page 2025-07-17 15:29:50 +02:00