Completed
Push — master ( ff7e0f...ceafc0 )
by Mahmoud
03:30
created

Controller::revokeRoleFromUser()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
namespace App\Containers\Authorization\UI\API\Controllers;
4
5
use App\Containers\Authorization\Actions\AssignUserToRoleAction;
6
use App\Containers\Authorization\Actions\AttachPermissionsToRoleAction;
7
use App\Containers\Authorization\Actions\CreatePermissionAction;
8
use App\Containers\Authorization\Actions\CreateRoleAction;
9
use App\Containers\Authorization\Actions\DetachPermissionsFromRoleAction;
10
use App\Containers\Authorization\Actions\GetPermissionAction;
11
use App\Containers\Authorization\Actions\GetRoleAction;
12
use App\Containers\Authorization\Actions\ListAllPermissionsAction;
13
use App\Containers\Authorization\Actions\ListAllRolesAction;
14
use App\Containers\Authorization\Actions\RevokeUserFromRoleAction;
15
use App\Containers\Authorization\UI\API\Requests\AssignUserToRoleRequest;
16
use App\Containers\Authorization\UI\API\Requests\AttachPermissionToRoleRequest;
17
use App\Containers\Authorization\UI\API\Requests\CreatePermissionRequest;
18
use App\Containers\Authorization\UI\API\Requests\CreateRoleRequest;
19
use App\Containers\Authorization\UI\API\Requests\DetachPermissionToRoleRequest;
20
use App\Containers\Authorization\UI\API\Requests\GetPermissionRequest;
21
use App\Containers\Authorization\UI\API\Requests\GetRoleRequest;
22
use App\Containers\Authorization\UI\API\Requests\ListAllPermissionsRequest;
23
use App\Containers\Authorization\UI\API\Requests\ListAllRolesRequest;
24
use App\Containers\Authorization\UI\API\Requests\RevokeUserFromRoleRequest;
25
use App\Containers\Authorization\UI\API\Transformers\PermissionTransformer;
26
use App\Containers\Authorization\UI\API\Transformers\RoleTransformer;
27
use App\Containers\User\Models\User;
28
use App\Containers\User\UI\API\Transformers\UserTransformer;
29
use App\Port\Controller\Abstracts\PortApiController;
30
31
/**
32
 * Class Controller.
33
 *
34
 * @author Mahmoud Zalt <[email protected]>
35
 */
36
class Controller extends PortApiController
37
{
38
39
    /**
40
     * @param \App\Containers\Authorization\UI\API\Requests\ListAllPermissionsRequest $request
41
     * @param \App\Containers\Authorization\Actions\ListAllPermissionsAction          $action
42
     *
43
     * @return  \Dingo\Api\Http\Response
44
     */
45
    public function listAllPermissions(ListAllPermissionsRequest $request, ListAllPermissionsAction $action)
46
    {
47
        $permissions = $action->run();
48
49
        return $this->response->collection($permissions, new PermissionTransformer());
50
    }
51
52
    /**
53
     * @param \App\Containers\Authorization\UI\API\Requests\GetPermissionRequest $request
54
     * @param \App\Containers\Authorization\Actions\GetPermissionAction          $action
55
     *
56
     * @return  \Dingo\Api\Http\Response
57
     */
58
    public function getPermission(GetPermissionRequest $request, GetPermissionAction $action)
59
    {
60
        $permission = $action->run($request['name']);
61
62
        return $this->response->item($permission, new PermissionTransformer());
63
    }
64
65
    /**
66
     * @param \App\Containers\Authorization\UI\API\Requests\ListAllRolesRequest $request
67
     * @param \App\Containers\Authorization\Actions\ListAllRolesAction          $action
68
     *
69
     * @return  \Dingo\Api\Http\Response
70
     */
71
    public function listAllRoles(ListAllRolesRequest $request, ListAllRolesAction $action)
72
    {
73
        $roles = $action->run();
74
75
        return $this->response->collection($roles, new RoleTransformer());
76
    }
77
78
    /**
79
     * @param \App\Containers\Authorization\UI\API\Requests\GetRoleRequest $request
80
     * @param \App\Containers\Authorization\Actions\GetRoleAction          $action
81
     *
82
     * @return  \Dingo\Api\Http\Response
83
     */
84
    public function getRole(GetRoleRequest $request, GetRoleAction $action)
85
    {
86
        $role = $action->run($request['name']);
87
88
        return $this->response->item($role, new RoleTransformer());
89
    }
90
91
    /**
92
     * @param \App\Containers\Authorization\UI\API\Requests\AssignUserToRoleRequest $request
93
     * @param \App\Containers\Authorization\Actions\AssignUserToRoleAction                $action
94
     *
95
     * @return  \Dingo\Api\Http\Response
96
     */
97
    public function assignUserToRole(AssignUserToRoleRequest $request, AssignUserToRoleAction $action)
98
    {
99
        $user = $action->run($request['user_id'], $request['roles_names']);
100
101
        return $this->response->item($user, new UserTransformer());
102
    }
103
104
105
    /**
106
     * @param \App\Containers\Authorization\UI\API\Requests\RevokeUserFromRoleRequest $request
107
     * @param \App\Containers\Authorization\Actions\RevokeUserFromRoleAction          $action
108
     *
109
     * @return  \Dingo\Api\Http\Response
110
     */
111
    public function revokeRoleFromUser(RevokeUserFromRoleRequest $request, RevokeUserFromRoleAction $action)
112
    {
113
        $user = $action->run($request['user_id'], $request['roles_names']);
114
115
        return $this->response->item($user, new UserTransformer());
116
    }
117
118
    /**
119
     * @param \App\Containers\Authorization\UI\API\Requests\AttachPermissionToRoleRequest $request
120
     * @param \App\Containers\Authorization\Actions\AttachPermissionsToRoleAction         $action
121
     *
122
     * @return  \Dingo\Api\Http\Response
123
     */
124
    public function attachPermissionToRole(
125
        AttachPermissionToRoleRequest $request,
126
        AttachPermissionsToRoleAction $action
127
    ) {
128
        $role = $action->run($request['role_name'], $request['permission_name']);
129
130
        return $this->response->item($role, new RoleTransformer());
131
    }
132
133
    /**
134
     * @param \App\Containers\Authorization\UI\API\Requests\DetachPermissionToRoleRequest $request
135
     * @param \App\Containers\Authorization\Actions\DetachPermissionsFromRoleAction       $action
136
     *
137
     * @return  \Dingo\Api\Http\Response
138
     */
139
    public function detachPermissionFromRole(
140
        DetachPermissionToRoleRequest $request,
141
        DetachPermissionsFromRoleAction $action
142
    ) {
143
        $role = $action->run($request['role_name'], $request['permission_name']);
144
145
        return $this->response->item($role, new RoleTransformer());
146
    }
147
148
    /**
149
     * @param \App\Containers\Authorization\UI\API\Requests\CreateRoleRequest $request
150
     * @param \App\Containers\Authorization\Actions\CreateRoleAction          $action
151
     *
152
     * @return  \Dingo\Api\Http\Response
153
     */
154
    public function createRole(CreateRoleRequest $request, CreateRoleAction $action)
155
    {
156
        $role = $action->run($request['name'], $request['description'], $request['display_name']);
157
158
        return $this->response->item($role, new RoleTransformer());
159
    }
160
161
    /**
162
     * @param \App\Containers\Authorization\UI\API\Requests\CreatePermissionRequest $request
163
     * @param \App\Containers\Authorization\Actions\CreatePermissionAction          $action
164
     *
165
     * @return  \Dingo\Api\Http\Response
166
     */
167
    public function createPermission(CreatePermissionRequest $request, CreatePermissionAction $action)
168
    {
169
        $permission = $action->run($request['name'], $request['description'], $request['display_name']);
170
171
        return $this->response->item($permission, new PermissionTransformer());
172
    }
173
174
175
}
176