diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2022-07-07 12:02:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-07 12:02:09 +0200 |
commit | c7e9a59124a79c7f3dcfed55c5a1f2fd29306d8c (patch) | |
tree | 5d45c375a376a5906826bebf0390109fd9af8405 /lib/private | |
parent | 7f41e72e8aa10dcfec5a94213d9fd5b18d9f6b23 (diff) | |
parent | 003b2a4e4f2ec53e2116f0d424e29f42d6c68bb4 (diff) | |
download | nextcloud-server-c7e9a59124a79c7f3dcfed55c5a1f2fd29306d8c.tar.gz nextcloud-server-c7e9a59124a79c7f3dcfed55c5a1f2fd29306d8c.zip |
Merge pull request #32987 from nextcloud/backport/stable23/31771
[stable23] Fix hook encryption with cron job
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Encryption/HookManager.php | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/lib/private/Encryption/HookManager.php b/lib/private/Encryption/HookManager.php index a2d6b990a88..c3a7df7fead 100644 --- a/lib/private/Encryption/HookManager.php +++ b/lib/private/Encryption/HookManager.php @@ -28,36 +28,45 @@ use OC\Files\View; use Psr\Log\LoggerInterface; class HookManager { - /** - * @var Update - */ - private static $updater; + /** @var ?Update */ + private static $updater = null; - public static function postShared($params) { + public static function postShared($params): void { self::getUpdate()->postShared($params); } - public static function postUnshared($params) { - self::getUpdate()->postUnshared($params); + public static function postUnshared($params): void { + // In case the unsharing happens in a background job, we don't have + // a session and we load instead the user from the UserManager + $path = Filesystem::getPath($params['fileSource']); + $owner = Filesystem::getOwner($path); + self::getUpdate($owner)->postUnshared($params); } - public static function postRename($params) { + public static function postRename($params): void { self::getUpdate()->postRename($params); } - public static function postRestore($params) { + public static function postRestore($params): void { self::getUpdate()->postRestore($params); } - /** - * @return Update - */ - private static function getUpdate() { + private static function getUpdate(?string $owner = null): Update { if (is_null(self::$updater)) { $user = \OC::$server->getUserSession()->getUser(); + if (!$user && $owner) { + $user = \OC::$server->getUserManager()->get($owner); + } + if (!$user) { + throw new \Exception("Inconsistent data, File unshared, but owner not found. Should not happen"); + } + $uid = ''; if ($user) { $uid = $user->getUID(); } + + \OC_Util::setupFS($uid); + self::$updater = new Update( new View(), new Util( |