Fix getting permissions and active indicator

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2017-05-17 21:44:58 +02:00
parent 90eb9ce28e
commit 247b4dde0c
10 changed files with 62 additions and 20 deletions

View File

@@ -34,6 +34,7 @@ class Board extends RelationalEntity implements JsonSerializable {
protected $archived = false;
protected $labels = [];
protected $acl = [];
protected $permissions = [];
protected $shared;
public function __construct() {
@@ -43,6 +44,7 @@ class Board extends RelationalEntity implements JsonSerializable {
$this->addRelation('labels');
$this->addRelation('acl');
$this->addRelation('shared');
$this->addRelation('permissions');
$this->addResolvable('owner');
$this->shared = -1;
}

View File

@@ -64,6 +64,13 @@ class BoardService {
$this->boardMapper->mapAcl($acl);
}
}
$permissions = $this->permissionService->matchPermissions($item);
$item->setPermissions([
'PERMISSION_READ' => $permissions[Acl::PERMISSION_READ],
'PERMISSION_EDIT' => $permissions[Acl::PERMISSION_EDIT],
'PERMISSION_MANAGE' => $permissions[Acl::PERMISSION_MANAGE],
'PERMISSION_SHARE' => $permissions[Acl::PERMISSION_SHARE]
]);
$result[$item->getId()] = $item;
}
}

View File

@@ -25,6 +25,7 @@ namespace OCA\Deck\Service;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\IPermissionMapper;
use OCA\Deck\NoPermissionException;
@@ -50,7 +51,7 @@ class PermissionService {
}
/**
* Get current user permissions for a board
* Get current user permissions for a board by id
*
* @param $boardId
* @return bool|array
@@ -66,6 +67,24 @@ class PermissionService {
];
}
/**
* Get current user permissions for a board
*
* @param Board $board
* @return array|bool
* @internal param $boardId
*/
public function matchPermissions(Board $board) {
$owner = $this->userIsBoardOwner($board->getId());
$acls = $board->getAcl();
return [
Acl::PERMISSION_READ => $owner || $this->userCan($acls, Acl::PERMISSION_READ),
Acl::PERMISSION_EDIT => $owner || $this->userCan($acls, Acl::PERMISSION_EDIT),
Acl::PERMISSION_MANAGE => $owner || $this->userCan($acls, Acl::PERMISSION_MANAGE),
Acl::PERMISSION_SHARE => $owner || $this->userCan($acls, Acl::PERMISSION_SHARE),
];
}
/**
* check permissions for replacing dark magic middleware
*