Skip to content

Commit 372ffab

Browse files
committed
Fixed nova roles being updated/
1 parent 8f6a41a commit 372ffab

File tree

2 files changed

+61
-5
lines changed

2 files changed

+61
-5
lines changed

src/Http/Controllers/Nova/RoleController.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class RoleController extends Controller
1111
{
12-
public function index() : Collection
12+
public function index(): Collection
1313
{
1414
$roleClass = config("genealabs-laravel-governor.models.role");
1515

@@ -19,29 +19,29 @@ public function index() : Collection
1919
->get();
2020
}
2121

22-
public function store(StoreRoleRequest $request) : Response
22+
public function store(StoreRoleRequest $request): Response
2323
{
2424
$request->process();
2525

2626
return response(null, 204);
2727
}
2828

29-
public function show($id) : Role
29+
public function show($id): Role
3030
{
3131
$roleClass = config("genealabs-laravel-governor.models.role");
3232

3333
return (new $roleClass)
3434
->find($id);
3535
}
3636

37-
public function update(UpdateRoleRequest $request) : Response
37+
public function update(UpdateRoleRequest $request): Response
3838
{
3939
$request->process();
4040

4141
return response(null, 204);
4242
}
4343

44-
public function destroy($id) : Response
44+
public function destroy($id): Response
4545
{
4646
$roleClass = config("genealabs-laravel-governor.models.role");
4747

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace GeneaLabs\LaravelGovernor\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest as Request;
6+
7+
class UpdateRoleRequest extends Request
8+
{
9+
public function authorize(): bool
10+
{
11+
$roleClass = config("genealabs-laravel-governor.models.role");
12+
dd($roleClass);
13+
return auth()->check()
14+
&& ($this->role
15+
? auth()->user()->can("update", $this->role)
16+
: auth()->user()->can("create", $roleClass));
17+
}
18+
19+
public function rules(): array
20+
{
21+
return [
22+
'name' => 'required|string',
23+
"description" => "string|nullable",
24+
"permissions" => "array",
25+
];
26+
}
27+
28+
public function process(): void
29+
{
30+
$permissionClass = config("genealabs-laravel-governor.models.permission");
31+
$this->role->fill($this->all());
32+
33+
if ($this->filled('permissions')) {
34+
$this->role->permissions()->delete();
35+
36+
foreach ($this->permissions as $group) {
37+
foreach ($group as $entity => $actions) {
38+
foreach ($actions as $action => $ownership) {
39+
if ('no' !== $ownership) {
40+
(new $permissionClass)
41+
->updateOrCreate([
42+
"action_name" => $action,
43+
"entity_name" => urldecode($entity),
44+
"role_name" => $this->role->name,
45+
], [
46+
"ownership_name" => $ownership,
47+
]);
48+
}
49+
}
50+
}
51+
}
52+
}
53+
54+
$this->role->save();
55+
}
56+
}

0 commit comments

Comments
 (0)