PermissionsRepository   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 8
dl 0
loc 31
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
A userRoleHasPermission() 0 17 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PerfectApp\RBAC;
6
7
use PDO;
8
9
class PermissionsRepository
10
{
11
    /**
12
     * @param PDO $pdo
13
     */
14 1
    public function __construct(private PDO $pdo)
15
    {
16 1
    }
17
18
    /**
19
     * @param int $userId
20
     * @param string $requiredPermission
21
     * @return bool
22
     */
23 1
    public function userRoleHasPermission(int $userId, string $requiredPermission): bool
24
    {
25 1
        $sql = "SELECT COUNT(*) AS count
26
                FROM user_roles ur
27
                INNER JOIN role_permissions rp ON ur.role_id = rp.role_id
28
                INNER JOIN permissions p ON rp.permission_id = p.permission_id
29 1
                WHERE ur.user_id = :userId AND p.permission_name = :requiredPermission";
30
31 1
        $stmt = $this->pdo->prepare($sql);
32 1
        $stmt->execute([
33 1
            'userId' => $userId,
34 1
            'requiredPermission' => $requiredPermission
35 1
        ]);
36
37
        /** @var array<string, mixed>|false $result */
38 1
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
39 1
        return $result !== false && $result['count'] > 0;
40
    }
41
}
42