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:
parent
cdf79d2823
commit
e549f03e1b
19 changed files with 553 additions and 8 deletions
27
ansible/roles/portail/templates/rclone-webdav.service.j2
Normal file
27
ansible/roles/portail/templates/rclone-webdav.service.j2
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Géré par Ansible (rôle portail) — ne pas modifier à la main.
|
||||
# Bloc C (CLAUDE.md) : dossier de l'élève monté comme lecteur réseau.
|
||||
# N'écoute qu'en local (127.0.0.1) : Nginx authentifie (délégué au portail)
|
||||
# et restreint chaque élève à son sous-dossier avant de relayer ici — voir
|
||||
# ansible/roles/portail/templates/nginx-portail.conf.j2 et
|
||||
# App\Http\Controllers\WebdavAuthController.
|
||||
[Unit]
|
||||
Description=Serveur WebDAV (rclone) pour le dossier des élèves — Syllabus
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=www-data
|
||||
Group=www-data
|
||||
# --dir-cache-time : sans ça, les dossiers créés par Laravel (un par élève,
|
||||
# en dehors de rclone) restent invisibles jusqu'à 5 minutes (la valeur par
|
||||
# défaut) — constaté le 2026-10-14, un nouveau dossier élève répondait 404
|
||||
# tant que rclone ne l'avait pas découvert lui-même.
|
||||
ExecStart=/usr/bin/rclone serve webdav {{ portail_dossier_app }}/storage/app/webdav --addr 127.0.0.1:{{ portail_port_webdav }} --no-modtime --vfs-cache-mode off --dir-cache-time 1s
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ReadWritePaths={{ portail_dossier_app }}/storage/app/webdav
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Loading…
Add table
Add a link
Reference in a new issue