Add group limit for creating boards

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2018-12-04 09:11:50 +01:00
parent bff3cafb37
commit 7c95783ab5
11 changed files with 257 additions and 18 deletions

View File

@@ -33,6 +33,7 @@ use OCA\Deck\NoPermissionException;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\Entity;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IUserManager;
@@ -50,6 +51,8 @@ class PermissionService {
private $userManager;
/** @var IGroupManager */
private $groupManager;
/** @var IConfig */
private $config;
/** @var string */
private $userId;
/** @var array */
@@ -61,6 +64,7 @@ class PermissionService {
BoardMapper $boardMapper,
IUserManager $userManager,
IGroupManager $groupManager,
IConfig $config,
$userId
) {
$this->aclMapper = $aclMapper;
@@ -68,6 +72,7 @@ class PermissionService {
$this->logger = $logger;
$this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->config = $config;
$this->userId = $userId;
}
@@ -235,4 +240,23 @@ class PermissionService {
$this->users[(string) $boardId] = $users;
return $this->users[(string) $boardId];
}
}
public function canCreate() {
$groups = $this->getGroupLimitList();
foreach ($groups as $group) {
if ($this->groupManager->isInGroup($this->userId, $group)) {
return false;
}
}
return true;
}
private function getGroupLimitList() {
$value = $this->config->getAppValue('deck', 'groupLimit', '');
$groups = explode(',', $value);
if ($value === '') {
return [];
}
return $groups;
}
}