Passed
Pull Request — master (#5651)
by Yannick
07:56
created

PermissionService::hasPermission()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 10
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 14
rs 9.9332
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Service;
8
9
use Chamilo\CoreBundle\Repository\PermissionRelRoleRepository;
10
11
class PermissionService
12
{
13
    private PermissionRelRoleRepository $permissionRelRoleRepository;
14
15
    public function __construct(PermissionRelRoleRepository $permissionRelRoleRepository)
16
    {
17
        $this->permissionRelRoleRepository = $permissionRelRoleRepository;
18
    }
19
20
    public function hasPermission(string $permissionSlug, array $roles): bool
21
    {
22
        $queryBuilder = $this->permissionRelRoleRepository->createQueryBuilder('prr')
23
            ->innerJoin('prr.permission', 'p')
24
            ->where('p.slug = :permissionSlug')
25
            ->andWhere('prr.roleCode IN (:roles)')
26
            ->andWhere('prr.changeable = :changeable')
27
            ->setParameter('permissionSlug', $permissionSlug)
28
            ->setParameter('roles', $roles)
29
            ->setParameter('changeable', true);
30
31
        $results = $queryBuilder->getQuery()->getResult();
32
33
        return count($results) > 0;
34
    }
35
}
36