mirror of
https://github.com/nextcloud/server.git
synced 2026-03-05 06:50:55 -05:00
Change share owner when moving share out of share
Signed-off-by: Louis Chemineau <louis@chmn.me>
This commit is contained in:
parent
ce7b6ffed2
commit
13e7ebbe4b
1 changed files with 14 additions and 12 deletions
|
|
@ -38,7 +38,7 @@ class Updater {
|
|||
*/
|
||||
public static function renameHook($params) {
|
||||
self::renameChildren($params['oldpath'], $params['newpath']);
|
||||
self::moveShareToShare($params['newpath']);
|
||||
self::moveShareInOrOutOfShare($params['newpath']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -51,7 +51,7 @@ class Updater {
|
|||
*
|
||||
* @param string $path
|
||||
*/
|
||||
private static function moveShareToShare($path) {
|
||||
private static function moveShareInOrOutOfShare($path): void {
|
||||
$userFolder = \OC::$server->getUserFolder();
|
||||
|
||||
// If the user folder can't be constructed (e.g. link share) just return.
|
||||
|
|
@ -85,11 +85,6 @@ class Updater {
|
|||
// Check if the destination is inside a share
|
||||
$mountManager = \OC::$server->getMountManager();
|
||||
$dstMount = $mountManager->find($src->getPath());
|
||||
if (!($dstMount instanceof \OCA\Files_Sharing\SharedMount)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$newOwner = $dstMount->getShare()->getShareOwner();
|
||||
|
||||
//Ownership is moved over
|
||||
foreach ($shares as $share) {
|
||||
|
|
@ -101,13 +96,20 @@ class Updater {
|
|||
continue;
|
||||
}
|
||||
|
||||
/** @var IShare $share */
|
||||
if (!($dstMount->getShare()->getPermissions() & Constants::PERMISSION_SHARE)) {
|
||||
$shareManager->deleteShare($share);
|
||||
continue;
|
||||
if ($dstMount instanceof \OCA\Files_Sharing\SharedMount) {
|
||||
if (!($dstMount->getShare()->getPermissions() & Constants::PERMISSION_SHARE)) {
|
||||
$shareManager->deleteShare($share);
|
||||
continue;
|
||||
}
|
||||
$newOwner = $dstMount->getShare()->getShareOwner();
|
||||
$newPermissions = $share->getPermissions() & $dstMount->getShare()->getPermissions();
|
||||
} else {
|
||||
$newOwner = $userFolder->getOwner()->getUID();
|
||||
$newPermissions = $share->getPermissions();
|
||||
}
|
||||
|
||||
$share->setShareOwner($newOwner);
|
||||
$share->setPermissions($share->getPermissions() & $dstMount->getShare()->getPermissions());
|
||||
$share->setPermissions($newPermissions);
|
||||
$shareManager->updateShare($share);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue