Fallback to share link owner when no owner found
When creating link shares from external storage, the filesystem cannot find an owner in some scenarios (ex: system-wide mounts). In such cases, fall back to using the current user's trashbin which happens to also be the user who created the link share. Fixes an issue where this scenario made deletion impossible due to missing user information. Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
This commit is contained in:
parent
8f664a00e1
commit
34d466b2f6
1 changed files with 10 additions and 0 deletions
|
@ -88,6 +88,10 @@ class Trashbin {
|
|||
if (!$userManager->userExists($uid)) {
|
||||
$uid = User::getUser();
|
||||
}
|
||||
if (!$uid) {
|
||||
// no owner, usually because of share link from ext storage
|
||||
return [null, null];
|
||||
}
|
||||
Filesystem::initMountPoints($uid);
|
||||
if ($uid != User::getUser()) {
|
||||
$info = Filesystem::getFileInfo($filename);
|
||||
|
@ -204,6 +208,12 @@ class Trashbin {
|
|||
list(, $user) = explode('/', $root);
|
||||
list($owner, $ownerPath) = self::getUidAndFilename($file_path);
|
||||
|
||||
// if no owner found (ex: ext storage + share link), will use the current user's trashbin then
|
||||
if (is_null($owner)) {
|
||||
$owner = $user;
|
||||
$ownerPath = $file_path;
|
||||
}
|
||||
|
||||
$ownerView = new View('/' . $owner);
|
||||
// file has been deleted in between
|
||||
if (is_null($ownerPath) || $ownerPath === '' || !$ownerView->file_exists('/files/' . $ownerPath)) {
|
||||
|
|
Loading…
Reference in a new issue