fix(client-portal) : forbid SMB share-link document creation for client users
Security hardening on the document POST that phase 1 widened to ROLE_CLIENT: a client user could reach the share-link path (arbitrary SMB file reference) instead of an upload. Now the sharePath branch is admin-only — client users must upload. attachTarget already scopes documents to the client's own ticket. 178 tests green.
This commit is contained in:
+8
@@ -94,6 +94,14 @@ final readonly class TaskDocumentProcessor implements ProcessorInterface
|
|||||||
// Deux modes de création : upload d'un fichier (multipart) ou lien vers un fichier du partage SMB (JSON).
|
// Deux modes de création : upload d'un fichier (multipart) ou lien vers un fichier du partage SMB (JSON).
|
||||||
$sharePath = $this->extractSharePath($request);
|
$sharePath = $this->extractSharePath($request);
|
||||||
|
|
||||||
|
// Sécurité : un utilisateur client ne peut PAS créer de lien vers le
|
||||||
|
// partage SMB interne (référence de fichier arbitraire hors de son
|
||||||
|
// périmètre) — seul le téléversement lui est permis. Le lien partage
|
||||||
|
// reste réservé aux administrateurs.
|
||||||
|
if (null !== $sharePath && !$this->security->isGranted('ROLE_ADMIN')) {
|
||||||
|
throw new AccessDeniedHttpException('Les utilisateurs clients ne peuvent pas créer de lien vers le partage ; un téléversement est requis.');
|
||||||
|
}
|
||||||
|
|
||||||
$document = null !== $sharePath
|
$document = null !== $sharePath
|
||||||
? $this->createShareLink($request, $sharePath)
|
? $this->createShareLink($request, $sharePath)
|
||||||
: $this->createUpload($request);
|
: $this->createUpload($request);
|
||||||
|
|||||||
Reference in New Issue
Block a user