Skip to content
Snippets Groups Projects
Commit 15997c0a authored by Marcus Eibrink-Lunzenauer's avatar Marcus Eibrink-Lunzenauer
Browse files

Use plugin engine instead of the legacy `checkObjectModule`.

Fixes #458.
parent 4c51bfe2
No related branches found
No related tags found
No related merge requests found
...@@ -12,30 +12,23 @@ use JsonApi\Routes\Users\Authority as UsersAuth; ...@@ -12,30 +12,23 @@ use JsonApi\Routes\Users\Authority as UsersAuth;
*/ */
class Authority class Authority
{ {
public static function canShowFileArea(User $user, \SimpleOrMap $resource) public static function canShowFileArea(User $user, \SimpleORMap $resource): bool
{ {
try { if (
if (($resource instanceof \Course) && $resource instanceof \Course &&
!CoursesAuth::canShowCourse($user, $resource, CoursesAuth::SCOPE_EXTENDED)) { !CoursesAuth::canShowCourse($user, $resource, CoursesAuth::SCOPE_EXTENDED)
) {
return false; return false;
} }
// checkObjectModule relies on Context; so we replace it $info = \PluginManager::getInstance()->getPluginInfo('CodeDocuments');
$oldContextId = \Context::getId(); if (!\PluginManager::getInstance()->isPluginActivated($info['id'], $resource->getId())) {
\Context::set($resource->id);
checkObjectModule('documents');
// restore Context
\Context::set($oldContextId);
} catch (\Exception $e) {
return false; return false;
} }
return return ($folder = \Folder::findTopFolder($resource->getId())) &&
($folder = \Folder::findTopFolder($resource->id)) ($rootFolder = $folder->getTypedFolder()) &&
&& ($rootFolder = $folder->getTypedFolder()) $rootFolder->isVisible($user->getId());
&& $rootFolder->isVisible($user->id);
} }
public static function canShowFolder(User $user, \FolderType $folder) public static function canShowFolder(User $user, \FolderType $folder)
...@@ -75,30 +68,24 @@ class Authority ...@@ -75,30 +68,24 @@ class Authority
public static function canShowFile(User $user, \File $file) public static function canShowFile(User $user, \File $file)
{ {
return return $file['user_id'] === $user->id ||
$file['user_id'] === $user->id 0 <
|| count(
0 < count( $file->refs->filter(function (\FileRef $ref) use ($user) {
$file->refs->filter(
function (\FileRef $ref) use ($user) {
$folder = $ref->foldertype; $folder = $ref->foldertype;
return $folder && $folder->isVisible($user->id) && $folder->isReadable($user->id); return $folder && $folder->isVisible($user->id) && $folder->isReadable($user->id);
}, }, 1)
1
)
); );
} }
public static function canUpdateFile(User $user, \File $file) public static function canUpdateFile(User $user, \File $file)
{ {
return 0 < count( return 0 <
$file->refs->filter( count(
function (\FileRef $ref) use ($user) { $file->refs->filter(function (\FileRef $ref) use ($user) {
return $ref->getFileType()->isWritable($user->id); return $ref->getFileType()->isWritable($user->id);
}, }, 1)
1
)
); );
} }
...@@ -148,7 +135,6 @@ class Authority ...@@ -148,7 +135,6 @@ class Authority
public static function canCopyFolder(User $user, \FolderType $sourceFolder, \FolderType $destinationFolder) public static function canCopyFolder(User $user, \FolderType $sourceFolder, \FolderType $destinationFolder)
{ {
return self::canCreateFileRefsInFolder($user, $destinationFolder) return self::canCreateFileRefsInFolder($user, $destinationFolder) && self::canShowFolder($user, $sourceFolder);
&& self::canShowFolder($user, $sourceFolder);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment