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
$oldContextId = \Context::getId();
\Context::set($resource->id);
checkObjectModule('documents');
// restore Context $info = \PluginManager::getInstance()->getPluginInfo('CodeDocuments');
\Context::set($oldContextId); if (!\PluginManager::getInstance()->isPluginActivated($info['id'], $resource->getId())) {
} 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,31 +68,25 @@ class Authority ...@@ -75,31 +68,25 @@ 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( $folder = $ref->foldertype;
function (\FileRef $ref) use ($user) {
$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 );
)
);
} }
public static function canIndexCourse(User $user, \Course $course) public static function canIndexCourse(User $user, \Course $course)
...@@ -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