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;
*/
class Authority
{
public static function canShowFileArea(User $user, \SimpleOrMap $resource)
public static function canShowFileArea(User $user, \SimpleORMap $resource): bool
{
try {
if (($resource instanceof \Course) &&
!CoursesAuth::canShowCourse($user, $resource, CoursesAuth::SCOPE_EXTENDED)) {
return false;
}
// checkObjectModule relies on Context; so we replace it
$oldContextId = \Context::getId();
\Context::set($resource->id);
checkObjectModule('documents');
if (
$resource instanceof \Course &&
!CoursesAuth::canShowCourse($user, $resource, CoursesAuth::SCOPE_EXTENDED)
) {
return false;
}
// restore Context
\Context::set($oldContextId);
} catch (\Exception $e) {
$info = \PluginManager::getInstance()->getPluginInfo('CodeDocuments');
if (!\PluginManager::getInstance()->isPluginActivated($info['id'], $resource->getId())) {
return false;
}
return
($folder = \Folder::findTopFolder($resource->id))
&& ($rootFolder = $folder->getTypedFolder())
&& $rootFolder->isVisible($user->id);
return ($folder = \Folder::findTopFolder($resource->getId())) &&
($rootFolder = $folder->getTypedFolder()) &&
$rootFolder->isVisible($user->getId());
}
public static function canShowFolder(User $user, \FolderType $folder)
......@@ -75,31 +68,25 @@ class Authority
public static function canShowFile(User $user, \File $file)
{
return
$file['user_id'] === $user->id
||
0 < count(
$file->refs->filter(
function (\FileRef $ref) use ($user) {
$folder = $ref->foldertype;
return $file['user_id'] === $user->id ||
0 <
count(
$file->refs->filter(function (\FileRef $ref) use ($user) {
$folder = $ref->foldertype;
return $folder && $folder->isVisible($user->id) && $folder->isReadable($user->id);
},
1
)
);
return $folder && $folder->isVisible($user->id) && $folder->isReadable($user->id);
}, 1)
);
}
public static function canUpdateFile(User $user, \File $file)
{
return 0 < count(
$file->refs->filter(
function (\FileRef $ref) use ($user) {
return 0 <
count(
$file->refs->filter(function (\FileRef $ref) use ($user) {
return $ref->getFileType()->isWritable($user->id);
},
1
)
);
}, 1)
);
}
public static function canIndexCourse(User $user, \Course $course)
......@@ -148,7 +135,6 @@ class Authority
public static function canCopyFolder(User $user, \FolderType $sourceFolder, \FolderType $destinationFolder)
{
return self::canCreateFileRefsInFolder($user, $destinationFolder)
&& self::canShowFolder($user, $sourceFolder);
return self::canCreateFileRefsInFolder($user, $destinationFolder) && self::canShowFolder($user, $sourceFolder);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment