ajoute le dossier WebDAV de l'élève (bloc C)

Dossier personnel de l'élève monté comme lecteur réseau : rclone
sert le dossier local, l'authentification est déléguée au portail
via auth_request Nginx (mêmes identifiants que la connexion), sans
nouveau système de comptes. Nettoyé par la purge RGPD comme les
autres données d'élève.

Corrige au passage un vrai bug d'isolation trouvé en testant avec
deux comptes jetables : rewrite injectait la variable posée par
auth_request_set, mais rewrite s'exécute dans une phase Nginx
antérieure à cette variable, donc toujours vide - un élève pouvait
lire le fichier d'un autre en devinant son nom. Corrigé par une
location à regex nommée + proxy_pass. Détails : ADR 0008.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-10-14 13:04:40 +02:00
parent cdf79d2823
commit e549f03e1b
19 changed files with 553 additions and 8 deletions

View file

@ -0,0 +1,35 @@
---
# Bloc C (CLAUDE.md) : dossier de l'élève monté comme lecteur réseau WebDAV.
# rclone sert un dossier local en WebDAV (bascule vers un backend S3
# possible plus tard sans changer l'architecture : rclone sait servir les
# deux). Nginx fait l'authentification (déléguée au portail, mêmes
# identifiants que la connexion) et restreint chaque élève à son seul
# sous-dossier avant de relayer vers rclone — voir 05-nginx.yml et
# App\Http\Controllers\WebdavAuthController.
- name: installer rclone
ansible.builtin.apt:
name: rclone
state: present
- name: créer le dossier racine du WebDAV des élèves
ansible.builtin.file:
path: "{{ portail_dossier_app }}/storage/app/webdav"
state: directory
owner: www-data
group: www-data
mode: "0750"
- name: déployer le service systemd de rclone (WebDAV)
ansible.builtin.template:
src: rclone-webdav.service.j2
dest: /etc/systemd/system/rclone-webdav.service
mode: "0644"
notify:
- recharger systemd
- redémarrer rclone-webdav
- name: activer et démarrer rclone (WebDAV)
ansible.builtin.systemd:
name: rclone-webdav
state: started
enabled: true

View file

@ -14,6 +14,9 @@
- name: banque de quiz officielle (contenu éditorial de paillasse-contenus/)
ansible.builtin.import_tasks: 08-banque-quiz.yml
- name: dossier de l'élève en WebDAV (bloc C)
ansible.builtin.import_tasks: 09-webdav.yml
- name: Nginx
ansible.builtin.import_tasks: 05-nginx.yml