Skip to content

Commit 8c33d84

Browse files
committed
chore: Clean up permission service
Signed-off-by: Julius Härtl <jus@bitgrid.net>
1 parent f3a583a commit 8c33d84

2 files changed

Lines changed: 29 additions & 71 deletions

File tree

lib/Service/PermissionService.php

Lines changed: 16 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
/**
34
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
45
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -20,68 +21,37 @@
2021
use OCP\Cache\CappedMemoryCache;
2122
use OCP\IConfig;
2223
use OCP\IGroupManager;
23-
use OCP\ILogger;
2424
use OCP\IUserManager;
2525
use OCP\Share\IManager;
26+
use Psr\Log\LoggerInterface;
2627

2728
class PermissionService {
28-
29-
/** @var CirclesService */
30-
private $circlesService;
31-
/** @var BoardMapper */
32-
private $boardMapper;
33-
/** @var AclMapper */
34-
private $aclMapper;
35-
/** @var ILogger */
36-
private $logger;
37-
/** @var IUserManager */
38-
private $userManager;
39-
/** @var IGroupManager */
40-
private $groupManager;
41-
/** @var IConfig */
42-
private $config;
43-
/** @var IManager */
44-
private $shareManager;
45-
/** @var string */
46-
private $userId;
47-
/** @var array */
48-
private $users = [];
29+
private array $users = [];
4930

5031
private CappedMemoryCache $boardCache;
5132
private CappedMemoryCache $permissionCache;
5233

5334
public function __construct(
54-
ILogger $logger,
55-
CirclesService $circlesService,
56-
AclMapper $aclMapper,
57-
BoardMapper $boardMapper,
58-
IUserManager $userManager,
59-
IGroupManager $groupManager,
60-
IManager $shareManager,
61-
IConfig $config,
62-
$userId
35+
private LoggerInterface $logger,
36+
private CirclesService $circlesService,
37+
private AclMapper $aclMapper,
38+
private BoardMapper $boardMapper,
39+
private IUserManager $userManager,
40+
private IGroupManager $groupManager,
41+
private IManager $shareManager,
42+
private IConfig $config,
43+
private ?string $userId
6344
) {
64-
$this->circlesService = $circlesService;
65-
$this->aclMapper = $aclMapper;
66-
$this->boardMapper = $boardMapper;
67-
$this->logger = $logger;
68-
$this->userManager = $userManager;
69-
$this->groupManager = $groupManager;
70-
$this->shareManager = $shareManager;
71-
$this->config = $config;
72-
$this->userId = $userId;
73-
7445
$this->boardCache = new CappedMemoryCache();
7546
$this->permissionCache = new CappedMemoryCache();
7647
}
7748

7849
/**
7950
* Get current user permissions for a board by id
8051
*
81-
* @param $boardId
8252
* @return bool|array
8353
*/
84-
public function getPermissions($boardId, ?string $userId = null) {
54+
public function getPermissions(int $boardId, ?string $userId = null) {
8555
if ($userId === null) {
8656
$userId = $this->userId;
8757
}
@@ -99,7 +69,7 @@ public function getPermissions($boardId, ?string $userId = null) {
9969
$owner = false;
10070
$acls = [];
10171
}
102-
72+
10373
$permissions = [
10474
Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ, $userId),
10575
Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT, $userId),
@@ -133,11 +103,10 @@ public function matchPermissions(Board $board) {
133103
/**
134104
* check permissions for replacing dark magic middleware
135105
*
136-
* @param numeric $id
137106
* @throws NoPermissionException
138107
*/
139108
public function checkPermission(?IPermissionMapper $mapper, $id, int $permission, $userId = null, bool $allowDeletedCard = false): bool {
140-
$boardId = $id;
109+
$boardId = (int)$id;
141110
if ($mapper instanceof IPermissionMapper && !($mapper instanceof BoardMapper)) {
142111
$boardId = $mapper->findBoardId($id);
143112
}
@@ -150,7 +119,7 @@ public function checkPermission(?IPermissionMapper $mapper, $id, int $permission
150119
if ($permissions[$permission] === true) {
151120

152121
if (!$allowDeletedCard && $mapper instanceof CardMapper) {
153-
$card = $mapper->find($id);
122+
$card = $mapper->find((int)$id);
154123
if ($card->getDeletedAt() > 0) {
155124
throw new NoPermissionException('Card is deleted');
156125
}

tests/unit/Service/PermissionServiceTest.php

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,39 +34,28 @@
3434
use OCP\IConfig;
3535
use OCP\IGroup;
3636
use OCP\IGroupManager;
37-
use OCP\ILogger;
3837
use OCP\IRequest;
3938
use OCP\IUser;
4039
use OCP\IUserManager;
4140
use OCP\Share\IManager;
41+
use PHPUnit\Framework\MockObject\MockObject;
42+
use Psr\Log\LoggerInterface;
4243

4344
class PermissionServiceTest extends \Test\TestCase {
44-
45-
/** @var IRequest */
46-
private $request;
47-
private $circlesService;
48-
/** @var PermissionService*/
49-
private $service;
50-
/** @var ILogger */
51-
private $logger;
52-
/** @var AclMapper */
53-
private $aclMapper;
54-
/** @var BoardMapper */
55-
private $boardMapper;
56-
/** @var IUserManager */
57-
private $userManager;
58-
/** @var IGroupManager */
59-
private $groupManager;
60-
/** @var IManager */
61-
private $shareManager;
62-
/** @var IConfig */
63-
private $config;
64-
/** @var string */
65-
private $userId = 'admin';
45+
private IRequest|MockObject $request;
46+
private CirclesService|MockObject $circlesService;
47+
private PermissionService $service;
48+
private LoggerInterface|MockObject $logger;
49+
private AclMapper|MockObject $aclMapper;
50+
private BoardMapper|MockObject $boardMapper;
51+
private IUserManager $userManager;
52+
private IGroupManager|MockObject $groupManager;
53+
private MockObject|IManager $shareManager;
54+
private IConfig|MockObject $config;
6655

6756
public function setUp(): void {
6857
parent::setUp();
69-
$this->logger = $this->createMock(ILogger::class);
58+
$this->logger = $this->createMock(LoggerInterface::class);
7059
$this->request = $this->createMock(IRequest::class);
7160
$this->circlesService = $this->createMock(CirclesService::class);
7261
$this->aclMapper = $this->createMock(AclMapper::class);

0 commit comments

Comments
 (0)