Select Git revision
Forked from
Stud.IP / Stud.IP
Source project has a limited visibility.
-
Jan-Hendrik Willms authoredJan-Hendrik Willms authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Authority.php 4.17 KiB
<?php
namespace JsonApi\Routes\Files;
use User;
use JsonApi\Routes\Courses\Authority as CoursesAuth;
use JsonApi\Routes\Users\Authority as UsersAuth;
/**
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class Authority
{
public static function canShowFileArea(User $user, \SimpleORMap $resource): bool
{
if (
$resource instanceof \Course &&
!CoursesAuth::canShowCourse($user, $resource, CoursesAuth::SCOPE_EXTENDED)
) {
return false;
}
if ($resource instanceof \Course || $resource instanceof \Institute) {
$info = \PluginManager::getInstance()->getPluginInfo('CoreDocuments');
if (!\PluginManager::getInstance()->isPluginActivated($info['id'], $resource->id)) {
return false;
}
}
return ($folder = \Folder::findTopFolder($resource->id)) &&
($rootFolder = $folder->getTypedFolder()) &&
$rootFolder->isVisible($user->id);
}
public static function canShowFolder(User $user, \FolderType $folder)
{
return $folder->isReadable($user->id);
}
public static function canUpdateFolder(User $user, \FolderType $folder)
{
return $folder->isEditable($user->id);
}
public static function canDeleteFolder(User $user, \FolderType $folder)
{
return $folder->isEditable($user->id);
}
public static function canShowFileRef(User $user, \FileRef $fileRef)
{
return $fileRef->getFileType()->isVisible($user->id) || $fileRef->getFileType()->isDownloadable($user->id);
}
public static function canUpdateFileRef(User $user, \FileRef $fileRef)
{
return $fileRef->getFileType()->isWritable($user->id);
}
public static function canDeleteFileRef(User $user, \FileRef $fileRef)
{
return $fileRef->getFileType()->isWritable($user->id);
}
public static function canDownloadFileRef(User $user, \FileRef $fileRef)
{
return $fileRef->getFileType()->isDownloadable($user->id);
}