chore: Clean up permission service

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2024-06-20 10:08:44 +02:00
parent f3a583a47f
commit ec9e87d0cb
2 changed files with 29 additions and 71 deletions

View File

@@ -1,4 +1,5 @@
<?php
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -20,57 +21,27 @@ use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\Cache\CappedMemoryCache;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IUserManager;
use OCP\Share\IManager;
use Psr\Log\LoggerInterface;
class PermissionService {
/** @var CirclesService */
private $circlesService;
/** @var BoardMapper */
private $boardMapper;
/** @var AclMapper */
private $aclMapper;
/** @var ILogger */
private $logger;
/** @var IUserManager */
private $userManager;
/** @var IGroupManager */
private $groupManager;
/** @var IConfig */
private $config;
/** @var IManager */
private $shareManager;
/** @var string */
private $userId;
/** @var array */
private $users = [];
private array $users = [];
private CappedMemoryCache $boardCache;
private CappedMemoryCache $permissionCache;
public function __construct(
ILogger $logger,
CirclesService $circlesService,
AclMapper $aclMapper,
BoardMapper $boardMapper,
IUserManager $userManager,
IGroupManager $groupManager,
IManager $shareManager,
IConfig $config,
$userId
private LoggerInterface $logger,
private CirclesService $circlesService,
private AclMapper $aclMapper,
private BoardMapper $boardMapper,
private IUserManager $userManager,
private IGroupManager $groupManager,
private IManager $shareManager,
private IConfig $config,
private ?string $userId
) {
$this->circlesService = $circlesService;
$this->aclMapper = $aclMapper;
$this->boardMapper = $boardMapper;
$this->logger = $logger;
$this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->shareManager = $shareManager;
$this->config = $config;
$this->userId = $userId;
$this->boardCache = new CappedMemoryCache();
$this->permissionCache = new CappedMemoryCache();
}
@@ -78,10 +49,9 @@ class PermissionService {
/**
* Get current user permissions for a board by id
*
* @param $boardId
* @return bool|array
*/
public function getPermissions($boardId, ?string $userId = null) {
public function getPermissions(int $boardId, ?string $userId = null) {
if ($userId === null) {
$userId = $this->userId;
}
@@ -99,7 +69,7 @@ class PermissionService {
$owner = false;
$acls = [];
}
$permissions = [
Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ, $userId),
Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT, $userId),
@@ -133,11 +103,10 @@ class PermissionService {
/**
* check permissions for replacing dark magic middleware
*
* @param numeric $id
* @throws NoPermissionException
*/
public function checkPermission(?IPermissionMapper $mapper, $id, int $permission, $userId = null, bool $allowDeletedCard = false): bool {
$boardId = $id;
$boardId = (int)$id;
if ($mapper instanceof IPermissionMapper && !($mapper instanceof BoardMapper)) {
$boardId = $mapper->findBoardId($id);
}
@@ -150,7 +119,7 @@ class PermissionService {
if ($permissions[$permission] === true) {
if (!$allowDeletedCard && $mapper instanceof CardMapper) {
$card = $mapper->find($id);
$card = $mapper->find((int)$id);
if ($card->getDeletedAt() > 0) {
throw new NoPermissionException('Card is deleted');
}