PermissionService::updateTeamPermissions()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace App\Services;
4
5
use App\Http\Requests\AdminStoreRequest;
6
use App\Http\Requests\PermissionStoreRequest;
7
use App\Http\Requests\UserStoreRequest;
8
use App\Repositories\PermissionRepository;
9
use App\Repositories\PermissionRepositoryInterface;
10
use App\Repositories\UserRepository;
11
use App\Repositories\UserRepositoryInterface;
12
use Spatie\Permission\Models\Permission;
13
14
class PermissionService {
15
16
    private PermissionRepositoryInterface $permissionRepository;
17
    private UserRepositoryInterface $userRepository;
18
19
    /**
20
     * PermissionService constructor.
21
     *
22
     * @param \App\Repositories\PermissionRepositoryInterface $permissionRepository
23
     * @param \App\Repositories\UserRepositoryInterface $userRepository
24
     */
25 4
    public function __construct(
26
        PermissionRepositoryInterface $permissionRepository,
27
        UserRepositoryInterface $userRepository
28
    )
29
    {
30 4
        $this->permissionRepository = $permissionRepository;
31 4
        $this->userRepository = $userRepository;
32 4
    }
33
34
35
    /**
36
     * Update all teams permissions (Spatie permissions)
37
     *
38
     * @param PermissionStoreRequest $data
39
     *
40
     * @return void
41
     */
42 1
    public function updateTeamPermissions(PermissionStoreRequest $data): void
43
    {
44 1
        $this->permissionRepository->updateAllTeamsPermissions($data);
45 1
    }
46
47
48
    /**
49
     * Update user permissions (Spatie permissions)
50
     *
51
     * @param array $data
52
     * @param int $userId
53
     *
54
     * @return void
55
     */
56 1
    public function updateUserPermissions(array $data, int $userId): void
57
    {
58 1
        $user = $this->userRepository->getById($userId);
59 1
        $user->syncPermissions(array_keys($data['permissions']));
60 1
    }
61
62
    /**
63
     * Return a multidimensional array with all the available Permissions.
64
     *
65
     * eg.
66
     * $permissionsByEntities['users'][0] = 'view'
67
     * $permissionsByEntities['users'][1] = 'edit'
68
     *
69
     * @return iterable
70
     */
71 1
    public function getAllPermissionsByRoleAndProperty()
72
    {
73 1
        $permissions = Permission::all();
74
75 1
        $permissionsByEntities = [];
76 1
        foreach ($permissions as $permission) {
77 1
            $permission_name = explode(".",$permission->name);
0 ignored issues
show
Bug introduced by
The property name does not seem to exist on Spatie\Permission\Models\Permission. Are you sure there is no database migration missing?

Checks if undeclared accessed properties appear in database migrations and if the creating migration is correct.

Loading history...
78
79 1
            $entity = $permission_name[0];
80 1
            $entity_permission = $permission_name[1];
81
82 1
            $permissionsByEntities[$entity][] = $entity_permission;
83
        }
84
85 1
        return $permissionsByEntities;
86
    }
87
88
    /**
89
     * Get a list of all permissions directly assigned to the user (Spatie permissions)
90
     *
91
     * @param int $userId
92
     *
93
     * @return iterable
94
     */
95 1
    public function getUserPermissions($userId)
96
    {
97 1
        $user = $this->userRepository->getById($userId);
98 1
        return $user->permissions;
0 ignored issues
show
Bug introduced by
The property permissions does not exist on App\Models\User. Did you mean permissionClass?
Loading history...
99
    }
100
101
}