Commit Graph

75 Commits

Author SHA1 Message Date
admin c0a0966557 0.13.20 : check environment variables at boot
Build release Docker image / Build Docker Images (push) Successful in 7m58s
Trois erreurs de configuration successives — clés R2 pointant sur
l'ancien MinIO, `wwhsec_` au lieu de `whsec_`, `k_test_` amputé de son
`s` — n'ont produit aucun message exploitable. Chacune se manifestait
très loin de sa cause : un upload qui échoue, un webhook rejeté.

src/env-check.ts vérifie au bootstrap la forme des variables sensibles
(Stripe, R2, SMTP) : présence, préfixe, longueur, et les altérations de
copier-coller (guillemets englobants, espaces parasites). Les trois
erreurs ci-dessus sont détectées.

Ne bloque pas le démarrage — une clé SMTP erronée ne doit pas empêcher
le site de servir — mais journalise en erreur, une ligne par anomalie.
Aucune valeur n'est journalisée, uniquement des longueurs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 01:23:51 +02:00
admin 57faa37e70 0.13.19 : tell apart the two causes of a Stripe signature failure
Build release Docker image / Build Docker Images (push) Successful in 8m27s
Un corps brut absent et un secret de signature erroné produisent des
messages Stripe proches, alors que les correctifs sont opposés. Le log
d'échec indique désormais si le corps brut est présent et sa taille, si
l'en-tête stripe-signature est là, et si STRIPE_WEBHOOK_SECRET est défini
(sa longueur, jamais sa valeur).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 00:39:07 +02:00
admin 87842c7585 0.13.18 : stop leaking password hash and tokens from /users/me
Le controller `me` renvoyait la ligne brute de `strapi.db.query`, sans
passer par le sanitizer utilisé par `findOne` : le hash du mot de passe,
`resetPasswordToken` et `confirmationToken` étaient envoyés au navigateur
à chaque appel — et /users/me est appelé sur presque toutes les pages.

Les trois champs sont retirés explicitement plutôt que via
`sanitizeUser` : le sanitizer de l'API de contenu retirerait aussi les
relations peuplées que le front consomme dans cette réponse.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 00:33:05 +02:00
admin 3da128278d 0.13.17 : make the Stripe webhook say when it credits nothing
Un abonnement premium souscrit en test aboutissait chez Stripe sans
qu'aucune commande ni aucun droit n'apparaisse en base — et sans la
moindre trace côté serveur.

- `metadata.userId` absent faisait sortir le handler en silence avec un
  200 : c'est désormais journalisé en erreur, avec l'id de session Stripe
- l'utilisateur est résolu une fois par `documentId` (ce que le front
  envoie) : la relation `user` d'une commande attend un id numérique,
  elle recevait un documentId
- un utilisateur introuvable est journalisé au lieu d'échouer plus loin
- les types d'événements ignorés sont tracés, pour distinguer « Stripe
  n'appelle pas » de « Stripe appelle sans checkout.session.completed »

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 00:32:19 +02:00
admin 5a8a7d9f66 0.13.16 : grant read permission on comments
Build release Docker image / Build Docker Images (push) Successful in 7m56s
Les commentaires n'apparaissaient pas sur la page de détail d'une
publication, alors qu'ils s'affichent dans le fil.

`comment` n'avait aucune permission déclarée. Le fil passe par le
controller custom `feed`, qui renvoie ses résultats via ctx.send() sans
sanitizer d'API ; la page de détail passe par l'API REST standard, dont
le sanitizer retire les relations peuplées vers un content-type que le
rôle n'a pas le droit de lire.

Lecture seule : l'écriture reste passée par `post.addComment`, qui
contrôle l'auteur.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 19:36:34 +02:00
admin 126e9332ad 0.13.15 : default profileVisibility to public
`configuration.privacy.profileVisibility` n'avait pas de valeur par
défaut : un composant `privacy` créé sans choix explicite laissait le
champ nul, que la recherche d'utilisateurs traitait comme non-public.
L'écran de confidentialité du front affiche « public » dans ce cas —
le schéma s'aligne.

Ne rétroagit pas sur les utilisateurs existants, qui n'ont aucun
composant `privacy` : c'est le front (0.18.3) qui les traite comme
publics.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 19:15:08 +02:00
admin 8e672633dc 0.13.14 : fix media uploads, move plugin secrets to env vars
Build release Docker image / Build Docker Images (push) Successful in 7m54s
Tous les uploads échouaient depuis mai 2026 sur « Credential access key
has length 5, should be 32 ».

config/env/production/plugins.ts surchargeait l'upload avec l'ancien
MinIO auto-hébergé (accessKeyId "admin", 5 caractères, endpoint
container.harmonylab.ovh aujourd'hui injoignable). Strapi fusionnant les
surcharges d'environnement en profondeur, la config effective en prod
n'était ni l'une ni l'autre : endpoint R2 hérité de config/plugins.ts,
mais identifiants MinIO, le provider lisant s3Options.credentials en
priorité sur les options à plat.

- surcharge production supprimée : une seule config plugins, les
  différences d'environnement passent par les variables d'environnement
- upload en forme s3Options attendue par @strapi/provider-upload-aws-s3 5.x
  (à plat, le provider n'accepte plus qu'au prix d'une dépréciation)
- secrets R2 et SMTP sortis du fichier vers env(), .env.example à jour
- CSP de production : les médias étaient autorisés depuis
  container.harmonylab.ovh et 192.168.0.211:9000, jamais depuis le domaine
  R2 — l'hôte est désormais dérivé de R2_PUBLIC_URL
- la surcharge production des middlewares réduisait strapi::body à sa forme
  par défaut, perdant includeUnparsed nécessaire au webhook Stripe

⚠️ Déploiement : poser R2_* et SMTP_PASSWORD dans Dokploy AVANT de
déployer. Les clés historiques restent dans l'historique git : rotation
R2 et ZeptoMail à faire.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 18:44:58 +02:00
admin ca66bec45b 0.13.13 : fix Stripe entitlement loop (maxChoirs never credited)
Build release Docker image / Build Docker Images (push) Successful in 7m32s
- webhook : crédite maxChoirs selon le plan (pro=1, premium=5), écrit
  uniquement des champs existants du schéma (isPremium supprimé,
  subscriptionId -> stripeSubscriptionId)
- schéma user : ajout stripeCustomerId / stripeSubscriptionId (private)
- controller choral.create : contrôle du crédit côté serveur + décrément
  après création

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 04:14:52 +02:00
admin 51947d49e7 0.13.12 : sync users-permissions roles at bootstrap
Build release Docker image / Build Docker Images (push) Failing after 2m2s
- src/permissions-sync.ts : source de vérité versionnée des permissions
  (85 authenticated / 9 public, issues de l'audit AUDIT_PERMISSIONS.md) ;
  synchro additive et idempotente au démarrage, extras logués jamais supprimés
- plugin::users-permissions.user.update volontairement non accordé (sécurité)
- CLAUDE.md : doc du repo (stack, content-types, règles sécurité)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 00:47:04 +02:00
admin 30c4c4ed3c 0.13.11 : change register template an improve in user extension
Build release Docker image / Build Docker Images (push) Successful in 8m20s
2026-05-05 13:55:21 +02:00
admin f7f0ee17d7 0.13.10 : add fiels on message and channel
Build release Docker image / Build Docker Images (push) Failing after 4m58s
2026-04-14 23:06:41 +02:00
admin 0648bf74bd 0.13.9 : change smartTags name 2026-04-13 21:56:07 +02:00
admin d469fc41e8 0.13.8 : invite by mail or contact and change mail provider on local 2026-04-07 22:15:59 +02:00
admin 1a3ea9e0c1 0.13.7 : add logo to choral 2026-04-06 00:10:27 +02:00
admin b0db6a5ddf 0.13.6 : change choral-membership 2026-03-15 19:37:44 +01:00
admin f13efb8707 0.13.5 : add roles 2026-03-15 10:48:07 +01:00
admin 616b14edca 0.13.4 : add form-template 2026-03-08 16:07:54 +01:00
admin bc63c56da6 0.13.3 : add stripe and subscription plan 2026-03-05 18:19:34 +01:00
admin ce37fafddf Version 2026-02-26 14:00:08 +01:00
admin 04c4f7839f v0.13.2 : fix admin 2026-02-26 13:59:48 +01:00
admin c2a32f11b8 test package 2026-02-13 21:48:45 +01:00
admin cf3e705193 0.13.1 : add legal pages 2026-02-12 23:31:47 +01:00
admin 178e229258 0.12.20 : add new voice and profil 2026-02-12 09:13:52 +01:00
admin e18a3fa092 0.12.19 : better notifications 2026-01-19 00:07:21 +01:00
admin 0bb06e0e2d 0.12.18 : add create message, conversation 2026-01-16 13:23:27 +01:00
admin 1186463e11 0.12.17 : change ad feature 2026-01-15 09:38:47 +01:00
admin 34a4f594ce 0.12.16 : add custom endpoints for contacts 2025-12-12 19:29:10 +01:00
admin e9505524bf 0.12.15 : add activity as a service 2025-12-11 17:32:27 +01:00
admin b33e04d9f4 0.12.14 : add notification on friend invite 2025-12-11 15:36:43 +01:00
admin 21b9302d7f 0.12.13 : add page mdx 2025-12-09 23:24:50 +01:00
admin 460560bb89 0.12.12 : add mail templates as single type 2025-12-02 23:06:50 +01:00
admin ddf2ced098 0.12.11 : fix template again 2025-11-30 21:43:22 +01:00
admin 5428ceb17b 0.12.10 : fix email template 2025-11-30 21:21:55 +01:00
admin 7df45f5c1c 0.12.9 : fix send email validation 2025-11-30 20:51:56 +01:00
admin a928acb7d2 0.12.8 : add activity and notification after user creation 2025-11-21 13:50:05 +01:00
admin 4815157c3a Test 2025-11-20 01:42:45 +01:00
admin ee8efecdec Try to debug build 2025-11-20 01:38:16 +01:00
admin fa993f75b4 0.12.5 : add message 2025-11-16 18:09:37 +01:00
admin c33debf153 0.12.4 : improve find user 2025-11-15 18:13:24 +01:00
admin b2e1ab0361 0.12.3 : change updateMe to handle components 2025-11-13 23:01:28 +01:00
admin 1e642d194e 0.12.2 : fix update user 2025-11-12 21:12:29 +01:00
admin b8a2bc0aef 0.12.1 : update user 2025-11-12 15:49:52 +01:00
admin d64c647865 0.12.0 : modify user 2025-11-11 19:09:04 +01:00
admin 2bc35b639b 0.11.21 : change on event and group 2025-11-11 02:04:43 +01:00
admin 14e013bac1 0.11.20 : modify event controller for group owner 2025-11-10 23:10:23 +01:00
admin 539c9cd104 0.11.19 : add simple notification 2025-11-10 14:53:54 +01:00
admin 1d6e8f3866 0.11.18 : new group structure 2025-11-09 22:06:57 +01:00
admin dba77a3b07 0.11.17 : add shared events 2025-11-09 14:48:50 +01:00
admin 90e43e0644 0.11.16 : change public to isPublic (strict keyword) 2025-11-07 15:31:23 +01:00
admin 4071000895 0.11.15 : add notification and private field on PostRelationship 2025-11-07 14:40:48 +01:00