diff --git a/src/Filesystem/Adapters/WebdavAdapter.php b/src/Filesystem/Adapters/WebdavAdapter.php index bcffe8b..1123430 100644 --- a/src/Filesystem/Adapters/WebdavAdapter.php +++ b/src/Filesystem/Adapters/WebdavAdapter.php @@ -57,11 +57,27 @@ final class WebdavAdapter $prefix = trim((string) $webdav['prefix'], '/'); } - $defaultVisibility = $webdav['default_visibility'] - ?? ($config['visibility'] ?? Visibility::PRIVATE); + $defaultVisibility = $webdav['default_visibility'] ?? ($config['visibility'] ?? Visibility::PRIVATE); + $visibility = $this->normaliseVisibility($defaultVisibility); - $visibility = $this->normaliseVisibility($defaultVisibility); - $visibilityConverter = PortableVisibilityConverter::fromArray([], $visibility); + // Permisos Unix por defecto (puedes exponerlos en config si lo necesitas) + $permissions = $webdav['permissions'] ?? [ + 'file' => [ + Visibility::PUBLIC => 0644, + Visibility::PRIVATE => 0600, + ], + 'dir' => [ + Visibility::PUBLIC => 0755, + Visibility::PRIVATE => 0700, + ], + ]; + + $directoryDefault = $visibility === Visibility::PUBLIC ? 0755 : 0700; + + $visibilityConverter = PortableVisibilityConverter::fromArray( + $permissions, + $directoryDefault + ); return new LeagueWebDAVAdapter($client, $prefix, $visibilityConverter); }