feat(share) : explorateur de partage Windows (SMB) + viewer #8
Reference in New Issue
Block a user
Delete Branch "feat/share-explorer-impl"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objectif
Donner accès depuis Lesstime à un partage de fichiers Windows (SMB) : explorateur façon Drive, viewer de documents (image/PDF/texte), et configuration admin activable + testable.
Backend
ShareConfiguration(singleton, mot de passe chiffré via TokenEncryptor) + migrationshare_configuration.Service\Share\: interfaceFileSource→SmbFileSource(icewind/smb),SharePathResolveranti path-traversal (testé unitairement).GET/PUT /api/settings/share+POST /api/settings/share/test(ROLE_ADMIN)./api/share/status|browse|download(IS_AUTHENTICATED_FULLY, priority:1).Frontend (Nuxt)
useShareStatus, onglet adminAdminShareTab, lien sidebar conditionnel.SharedFilePreview(image/PDF/texte, PDF via iframe natif), page explorateurdocuments.vue, i18n FR.Sécurité
X-Content-Type-Options: nosniff.Problèmes interceptés & corrigés pendant la revue
SERIAL+DEFAULT FALSEgénérés à la main → drift de schéma. Corrigé enGENERATED BY DEFAULT AS IDENTITY(convention projet), schéma re-synchronisé (dev + test).yarn addavait créé unyarn.lockparasite et désynchronisénode_modules(suppression d'izitoast, build cassé). Le projet est npm-canonique (package-lock.json,npm cien prod) :yarn.lockretiré, lock npm resynchronisé.vue-pdf-embedfinalement retiré (le viewer rend le PDF via<iframe>natif, plus robuste — évite la config worker pdf.js).documents.vuedéfinissait une fonction localenavigateTomasquant celle de Nuxt → le garde-fou « partage désactivé → redirection accueil » était cassé. RenomméopenPath.inline(seul le SVG était protégé). Durci via allowlist inline +nosniff.Tests / vérifs
À faire au déploiement prod
lesstime-appavec smbclient, jouer la migration en prod, vérifierENCRYPTION_KEY, puis saisir/activer la config SMB en admin.