0
0
Fork 0
mirror of https://github.com/verdigado/organization_folders.git synced 2024-12-06 11:22:41 +01:00

continued development of ACL rule management; fixed getting filesystem node of folder resources

This commit is contained in:
Jonathan Treffler 2024-11-05 00:45:44 +01:00
parent 5500ded3fb
commit 8d781f5001
6 changed files with 121 additions and 14 deletions

View file

@ -28,6 +28,7 @@ class ResourceMember extends Entity implements JsonSerializable, TableSerializab
public function jsonSerialize(): array {
return [
'id' => $this->id,
'resourceId' => $this->resourceId,
'permissionLevel' => $this->permissionLevel,
'type' => $this->type,
@ -39,6 +40,7 @@ class ResourceMember extends Entity implements JsonSerializable, TableSerializab
public function tableSerialize(?array $params = null): array {
return [
'Id' => $this->id,
'Resource Id' => $this->resourceId,
'Permission Level' => MemberPermissionLevel::from($this->permissionLevel)->name,
'Type' => MemberType::from($this->type)->name,

View file

@ -46,4 +46,17 @@ class ResourceMemberMapper extends QBMapper {
return $this->findEntities($qb);
}
public function exists(int $resourceId, int $type, string $principal): bool {
/* @var $qb IQueryBuilder */
$qb = $this->db->getQueryBuilder();
$qb->select($qb->createFunction('COUNT(1)'))
->from(self::RESOURCE_MEMBERS_TABLE)
->where($qb->expr()->eq('resource_id', $qb->createNamedParameter($resourceId, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('type', $qb->createNamedParameter($type, IQueryBuilder::PARAM_INT)))
->andWhere($qb->expr()->eq('principal', $qb->createNamedParameter($principal)));
return $qb->executeQuery()->fetch()["COUNT(1)"] === 1;
}
}