v1.6.10 — fix suppression article (permissions répertoire) #78

Merged
cedricAbonnel merged 1 commits from dev into main 2026-05-15 20:30:49 +00:00
Owner

Problème

Les répertoires UUID des articles sur le serveur avaient le mode 2755 (setgid, groupe www-data = lecture seule). PHP tournant en www-data, unlink() et rmdir() échouaient silencieusement — l'article restait présent après tentative de suppression, et les index étaient reconstruits avec l'article toujours dedans.

Corrections

  • mkArticleDir() : nouvelle méthode qui crée les répertoires d'articles avec chmod 0775 explicite (contourne le umask), garantissant que www-data a toujours les droits d'écriture sur les futurs répertoires.
  • delete()bool : vérifie si le répertoire existe encore après removeDir() ; si oui, ne reconstruit pas les index et redirige vers l'article avec ?delete_failed=1.
  • removeDir() : @unlink, @rmdir, @scandir suppriment les warnings PHP qui cassaient les redirects.
  • post_view.php : alerte Bootstrap si ?delete_failed=1 (admin uniquement).

Test plan

  • Supprimer un article depuis sa page → redirige vers /
  • Supprimer un article dans un répertoire sans droits → redirige vers l'article avec alerte d'erreur
  • Créer un nouvel article → vérifier que son répertoire est créé en 2775
## Problème Les répertoires UUID des articles sur le serveur avaient le mode `2755` (setgid, groupe `www-data` = lecture seule). PHP tournant en `www-data`, `unlink()` et `rmdir()` échouaient silencieusement — l'article restait présent après tentative de suppression, et les index étaient reconstruits *avec* l'article toujours dedans. ## Corrections - **`mkArticleDir()`** : nouvelle méthode qui crée les répertoires d'articles avec `chmod 0775` explicite (contourne le umask), garantissant que `www-data` a toujours les droits d'écriture sur les futurs répertoires. - **`delete()` → `bool`** : vérifie si le répertoire existe encore après `removeDir()` ; si oui, ne reconstruit pas les index et redirige vers l'article avec `?delete_failed=1`. - **`removeDir()`** : `@unlink`, `@rmdir`, `@scandir` suppriment les warnings PHP qui cassaient les redirects. - **`post_view.php`** : alerte Bootstrap si `?delete_failed=1` (admin uniquement). ## Test plan - [ ] Supprimer un article depuis sa page → redirige vers `/` - [ ] Supprimer un article dans un répertoire sans droits → redirige vers l'article avec alerte d'erreur - [ ] Créer un nouvel article → vérifier que son répertoire est créé en `2775`
cedricAbonnel added 1 commit 2026-05-15 20:30:35 +00:00
- mkArticleDir() crée les répertoires avec chmod 0775 explicite (bypass umask)
- delete() retourne bool et détecte l'échec sans reconstruire les index
- removeDir() supprime les warnings PHP (@unlink, @rmdir, @scandir)
- post_view.php affiche un message d'erreur si delete_failed=1
- index.php redirige vers l'article avec ?delete_failed=1 si échec

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cedricAbonnel merged commit 5203b2c514 into main 2026-05-15 20:30:49 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cedricAbonnel/folio#78