AdminRoleController::create()   F
last analyzed

Complexity

Conditions 14
Paths 2050

Size

Total Lines 78
Code Lines 46

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 46
dl 0
loc 78
rs 2.1
c 0
b 0
f 0
cc 14
nc 2050
nop 1

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace App\Http\Controllers\Admin;
4
5
use App\Http\Controllers\BasePageController;
6
use Illuminate\Http\Request;
7
use Spatie\Permission\Models\Role;
8
9
class AdminRoleController extends BasePageController
10
{
11
    /**
12
     * @throws \Exception
13
     */
14
    public function index(): void
15
    {
16
        $this->setAdminPrefs();
17
18
        $meta_title = $title = 'User Role List';
19
20
        // get the user roles
21
        $userroles = Role::cursor()->remember();
22
23
        $this->smarty->assign('userroles', $userroles);
24
25
        $content = $this->smarty->fetch('role-list.tpl');
26
27
        $this->smarty->assign(compact('title', 'meta_title', 'content'));
28
29
        $this->adminrender();
30
    }
31
32
    /**
33
     * @throws \Exception
34
     */
35
    public function create(Request $request): void
36
    {
37
        $this->setAdminPrefs();
38
39
        switch ($request->input('action') ?? 'view') {
40
            case 'submit':
41
                $meta_title = $title = 'Add User Role';
42
                $role = Role::create([
43
                    'name' => $request->input('name'),
44
                    'apirequests' => $request->input('apirequests'),
45
                    'downloadrequests' => $request->input('downloadrequests'),
46
                    'defaultinvites' => $request->input('defaultinvites'),
47
                    'donation' => $request->input('donation') ?? 0,
48
                    'addyears' => $request->input('addyears') ?? 0,
49
                    'rate_limit' => $request->input('rate_limit'),
50
                ]);
51
                if ((int) $request->input('canpreview') === 1) {
52
                    $role->givePermissionTo('preview');
53
                }
54
55
                if ((int) $request->input('hideads') === 1) {
56
                    $role->givePermissionTo('hideads');
57
                }
58
59
                if ((int) $request->input('editrelease') === 1) {
60
                    $role->givePermissionTo('edit release');
61
                }
62
63
                if ((int) $request->input('viewconsole') === 1) {
64
                    $role->givePermissionTo('view console');
65
                }
66
67
                if ((int) $request->input('viewmovies') === 1) {
68
                    $role->givePermissionTo('view movies');
69
                }
70
71
                if ((int) $request->input('viewaudio') === 1) {
72
                    $role->givePermissionTo('view audio');
73
                }
74
75
                if ((int) $request->input('viewpc') === 1) {
76
                    $role->givePermissionTo('view pc');
77
                }
78
79
                if ((int) $request->input('viewtv') === 1) {
80
                    $role->givePermissionTo('view tv');
81
                }
82
83
                if ((int) $request->input('viewadult') === 1) {
84
                    $role->givePermissionTo('view adult');
85
                }
86
87
                if ((int) $request->input('viewbooks') === 1) {
88
                    $role->givePermissionTo('view books');
89
                }
90
91
                if ((int) $request->input('viewother') === 1) {
92
                    $role->givePermissionTo('view other');
93
                }
94
                redirect()->to('admin/role-list')->sendHeaders();
95
                break;
96
            case 'view':
97
            default:
98
                $meta_title = $title = 'Add User Role';
99
                $role = [
100
                ];
101
102
                break;
103
        }
104
105
        $this->smarty->assign('yesno_ids', [1, 0]);
106
        $this->smarty->assign('yesno_names', ['Yes', 'No']);
107
108
        $content = $this->smarty->fetch('role-add.tpl');
109
110
        $this->smarty->assign(compact('title', 'meta_title', 'content', 'role'));
111
112
        $this->adminrender();
113
    }
114
115
    /**
116
     * @throws \Exception
117
     */
118
    public function edit(Request $request): void
119
    {
120
        $this->setAdminPrefs();
121
122
        $meta_title = $title = 'User Roles';
123
124
        // Get the user roles.
125
        $userRoles = Role::cursor()->remember();
126
        $roles = [];
127
        foreach ($userRoles as $userRole) {
128
            $roles[$userRole->id] = $userRole->name;
129
        }
130
131
        switch ($request->input('action') ?? 'view') {
132
            case 'submit':
133
                $meta_title = $title = 'Update User Role';
134
                $role = Role::find($request->input('id'));
135
                $role->update([
136
                    'name' => $request->input('name'),
137
                    'apirequests' => $request->input('apirequests'),
138
                    'downloadrequests' => $request->input('downloadrequests'),
139
                    'defaultinvites' => $request->input('defaultinvites'),
140
                    'isdefault' => $request->input('isdefault'),
141
                    'donation' => $request->input('donation'),
142
                    'addyears' => $request->input('addyears'),
143
                    'rate_limit' => $request->input('rate_limit'),
144
                ]);
145
146
                if ((int) $request->input('canpreview') === 1 && $role->hasPermissionTo('preview') === false) {
147
                    $role->givePermissionTo('preview');
148
                } elseif ((int) $request->input('canpreview') === 0 && $role->hasPermissionTo('preview') === true) {
149
                    $role->revokePermissionTo('preview');
150
                }
151
152
                if ((int) $request->input('hideads') === 1 && $role->hasPermissionTo('hideads') === false) {
153
                    $role->givePermissionTo('hideads');
154
                } elseif ((int) $request->input('hideads') === 0 && $role->hasPermissionTo('hideads') === true) {
155
                    $role->revokePermissionTo('hideads');
156
                }
157
158
                if ((int) $request->input('editrelease') === 1 && $role->hasPermissionTo('edit release') === false) {
159
                    $role->givePermissionTo('edit release');
160
                } elseif ((int) $request->input('editrelease') === 0 && $role->hasPermissionTo('edit release') === true) {
161
                    $role->revokePermissionTo('edit release');
162
                }
163
164
                if ((int) $request->input('viewconsole') === 1 && $role->hasPermissionTo('view console') === false) {
165
                    $role->givePermissionTo('view console');
166
                } elseif ((int) $request->input('viewconsole') === 0 && $role->hasPermissionTo('view console') === true) {
167
                    $role->revokePermissionTo('view console');
168
                }
169
170
                if ((int) $request->input('viewmovies') === 1 && $role->hasPermissionTo('view movies') === false) {
171
                    $role->givePermissionTo('view movies');
172
                } elseif ((int) $request->input('viewmovies') === 0 && $role->hasPermissionTo('view movies') === true) {
173
                    $role->revokePermissionTo('view movies');
174
                }
175
176
                if ((int) $request->input('viewaudio') === 1 && $role->hasPermissionTo('view audio') === false) {
177
                    $role->givePermissionTo('view audio');
178
                } elseif ((int) $request->input('viewaudio') === 0 && $role->hasPermissionTo('view audio') === true) {
179
                    $role->revokePermissionTo('view audio');
180
                }
181
182
                if ((int) $request->input('viewpc') === 1 && $role->hasPermissionTo('view pc') === false) {
183
                    $role->givePermissionTo('view pc');
184
                } elseif ((int) $request->input('viewpc') === 0 && $role->hasPermissionTo('view pc') === true) {
185
                    $role->revokePermissionTo('view pc');
186
                }
187
188
                if ((int) $request->input('viewtv') === 1 && $role->hasPermissionTo('view tv') === false) {
189
                    $role->givePermissionTo('view tv');
190
                } elseif ((int) $request->input('viewtv') === 0 && $role->hasPermissionTo('view tv') === true) {
191
                    $role->revokePermissionTo('view tv');
192
                }
193
194
                if ((int) $request->input('viewadult') === 1 && $role->hasPermissionTo('view adult') === false) {
195
                    $role->givePermissionTo('view adult');
196
                } elseif ((int) $request->input('viewadult') === 0 && $role->hasPermissionTo('view adult') === true) {
197
                    $role->revokePermissionTo('view adult');
198
                }
199
200
                if ((int) $request->input('viewbooks') === 1 && $role->hasPermissionTo('view books') === false) {
201
                    $role->givePermissionTo('view books');
202
                } elseif ((int) $request->input('viewbooks') === 0 && $role->hasPermissionTo('view books') === true) {
203
                    $role->revokePermissionTo('view books');
204
                }
205
206
                if ((int) $request->input('viewother') === 1 && $role->hasPermissionTo('view other') === false) {
207
                    $role->givePermissionTo('view other');
208
                } elseif ((int) $request->input('viewother') === 0 && $role->hasPermissionTo('view other') === true) {
209
                    $role->revokePermissionTo('view other');
210
                }
211
212
                $this->smarty->assign('role', $role);
213
                redirect()->to('admin/role-list')->sendHeaders();
214
                break;
215
216
            case 'view':
217
            default:
218
                if ($request->has('id')) {
219
                    $meta_title = $title = 'User Roles Edit';
220
                    $role = Role::findById($request->input('id'));
221
                    $this->smarty->assign('role', $role);
222
                }
223
                break;
224
        }
225
226
        $this->smarty->assign('yesno_ids', [1, 0]);
227
        $this->smarty->assign('yesno_names', ['Yes', 'No']);
228
229
        $content = $this->smarty->fetch('role-edit.tpl');
230
231
        $this->smarty->assign(compact('title', 'meta_title', 'content'));
232
233
        $this->adminrender();
234
    }
235
236
    public function destroy(Request $request): \Illuminate\Http\RedirectResponse
237
    {
238
        if ($request->has('id')) {
239
            Role::query()->where('id', $request->input('id'))->delete();
240
        }
241
242
        return redirect()->to($request->server('HTTP_REFERER'));
0 ignored issues
show
Bug introduced by
It seems like $request->server('HTTP_REFERER') can also be of type array; however, parameter $path of Illuminate\Routing\Redirector::to() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

242
        return redirect()->to(/** @scrutinizer ignore-type */ $request->server('HTTP_REFERER'));
Loading history...
243
    }
244
}
245