Completed
Push — master ( 879f46...16ff0f )
by Andrii
02:19
created

Initer::getTree()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 321
Code Lines 233

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 233
nc 1
nop 0
dl 0
loc 321
ccs 0
cts 2
cp 0
crap 2
rs 8
c 0
b 0
f 0

How to fix   Long Method   

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
 * RBAC implementation for HiPanel
4
 *
5
 * @link      https://github.com/hiqdev/hipanel-rbac
6
 * @package   hipanel-rbac
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2016-2019, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hipanel\rbac;
12
13
/**
14
 * Initer for AuthManager.
15
 *
16
 * Non-obvious permissions:
17
 * - have-goods - permission to have anything, inherent to clients and resellers only.
18
 *   Serfvice staff (supports, managers) can't have anything.
19
 * - see-no-mans - see no man's objects - not belonging to anybody
20
 *
21
 * @author Andrii Vasyliev <[email protected]>
22
 */
23
class Initer extends AbstractIniter
24
{
25
    public function getTree()
26
    {
27
        return [
28
            'role:nobody' => [
29
                'nothing',
30
            ],
31
            'role:unauthorized' => [
32
                'restore-password', 'deposit',
33
            ],
34
            // CLIENT MODULE
35
            'role:client.support' => [
36
                'client.read', 'client.list',
37
            ],
38
            'role:client.manager' => [
39
                'role:client.support', 'client.create', 'client.update', 'client.delete',
40
                'contact.set-verified', 'client.block', 'client.unblock',
41
                'client.get-note', 'client.set-note', 'client.set-description',
42
            ],
43
            'role:employee.manager' => [
44
                'employee.read', 'employee.create', 'employee.update', 'employee.delete', 'document.acceptance',
45
            ],
46
            'role:client.impersonator' => [
47
                'client.impersonate',
48
            ],
49
            'role:contact.user' => [
50
                'contact.read', 'contact.create', 'contact.update', 'contact.delete',
51
            ],
52
            // SERVER MODULE
53
            'role:server.user' => [
54
                'server.read', 'server.control-power', 'server.control-system', 'server.set-note',
55
            ],
56
            'role:server.admin' => [
57
                'role:server.user', 'server.create', 'server.update', 'server.delete',
58
                'server.wizzard', 'server.set-label', 'consumption.read', 'server.manage-settings',
59
            ],
60
            'role:server.manager' => [
61
                'role:server.user', 'server.enable-block', 'server.disable-block', 'server.pay', 'server.sell', 'server.set-label',
62
            ],
63
            'role:hub.user' => [
64
                'hub.read',
65
            ],
66
            'role:hub.admin' => [
67
                'hub.read', 'hub.create', 'hub.update', 'hub.delete',
68
            ],
69
            'role:hub.manager' => [
70
                'hub.read', 'hub.sell',
71
            ],
72
            'role:consumption.user' => [
73
                'consumption.read',
74
            ],
75
            'role:consumption.manager' => [
76
                'consumption.read', 'consumption.delete',
77
            ],
78
            // HOSTING MODULE
79
            'role:account.user' => [
80
                'account.read', 'account.create', 'account.update', 'account.delete',
81
            ],
82
            'role:backup.user' => [
83
                'backup.read', 'backup.delete',
84
            ],
85
            'role:backuping.user' => [
86
                'backuping.read', 'backuping.create', 'backuping.update', 'backuping.delete',
87
            ],
88
            'role:crontab.user' => [
89
                'crontab.read', 'crontab.create', 'crontab.update', 'crontab.delete',
90
            ],
91
            'role:db.user' => [
92
                'db.read', 'db.create', 'db.update', 'db.delete',
93
            ],
94
            'role:hdomain.user' => [
95
                'hdomain.read', 'hdomain.create', 'hdomain.update', 'hdomain.delete', 'hdomain.set-dns',
96
            ],
97
            'role:ip.admin' => [
98
                'ip.read', 'ip.create', 'ip.update', 'ip.delete',
99
            ],
100
            'role:mail.user' => [
101
                'mail.read', 'mail.create', 'mail.update', 'mail.delete',
102
            ],
103
            'role:request.user' => [
104
                'request.read', 'request.create', 'request.update', 'request.delete',
105
            ],
106
            'role:service.admin' => [
107
                'service.read', 'service.create', 'service.update', 'service.delete',
108
            ],
109
            'role:vhost.user' => [
110
                'vhost.read', 'vhost.create', 'vhost.update', 'vhost.delete',
111
            ],
112
            'role:hosting.reader' => [
113
                'account.read', 'backup.read', 'backuping.read',
114
                'crontab.read', 'db.read', 'hdomain.read',
115
                'ip.read', 'mail.read', 'request.read', 'service.read',
116
                'vhost.read',
117
            ],
118
            'role:hosting.user' => [
119
                'role:account.user', 'role:backup.user', 'role:backuping.user',
120
                'role:crontab.user', 'role:db.user', 'role:hdomain.user',
121
                'role:mail.user', 'role:request.user', 'role:vhost.user',
122
                'ip.read', 'service.read',
123
            ],
124
            'role:hosting.admin' => [
125
                'role:account.user', 'role:backup.user', 'role:backuping.user',
126
                'role:crontab.user', 'role:db.user', 'role:hdomain.user',
127
                'role:mail.user', 'role:request.user', 'role:vhost.user',
128
                'role:ip.admin', 'role:service.admin',
129
            ],
130
            // FINANCE MODULE
131
                // BILL
132
            'role:bill.user' => [
133
                'bill.read', 'deposit',
134
            ],
135
            'role:bill.manager' => [
136
                'bill.read',
137
            ],
138
            'role:bill.master' => [
139
                'bill.read', 'bill.create', 'bill.update', 'bill.delete', 'deposit',
140
            ],
141
                // REQUISITES
142
            'role:requisites.user' => [
143
                'requisites.read',
144
            ],
145
            'role:requisites.manager' => [
146
                'requisites.read', 'requisites.create', 'requisites.update', 'requisites.delete',
147
            ],
148
                // PLAN
149
            'role:plan.user' => [
150
                'plan.read', 'price.read',
151
            ],
152
            'role:plan.manager' => [
153
                'plan.read', 'plan.create', 'plan.update', 'plan.delete', 'plan.force-read',
154
                'price.read', 'price.update', 'price.delete', 'price.create',
155
            ],
156
            'role:plan.master' => [
157
                'role:plan.manager',
158
            ],
159
                // DOCUMENT
160
            'role:document.user' => [
161
                'document.read', 'document.create', 'document.invoice',
162
            ],
163
            'role:document.employee' => [
164
                'document.read', 'document.create', 'document.acceptance',
165
            ],
166
            'role:document.manager' => [
167
                'role:document.user', 'document.update', 'document.delete',
168
                'document.generate', 'document.acceptance', 'document.invoice',
169
            ],
170
            'role:document.master' => [
171
                'document.generate-all',
172
            ],
173
                // SALE
174
            'role:sale.user' => [
175
                'sale.read',
176
            ],
177
            'role:sale.manager' => [
178
                'sale.read', 'sale.delete',
179
            ],
180
            'role:sale.master' => [
181
                'sale.read', 'sale.delete',
182
            ],
183
                // FINANCE
184
            'role:finance.reader' => [
185
                'plan.read', 'bill.read', 'document.read', 'finance.read', 'bill.read',
186
            ],
187
            'role:finance.user' => [
188
                'role:finance.reader',
189
                'role:bill.user',
190
                'role:plan.user',
191
                'role:document.user',
192
            ],
193
            'role:finance.employee' => [
194
                'role:bill.user',
195
                'role:document.employee',
196
                'finance.read',
197
            ],
198
            'role:finance.manager' => [
199
                'role:finance.reader',
200
                'role:bill.manager',
201
                'role:plan.manager',
202
                'role:document.manager',
203
                'role:sale.manager',
204
                'finance.read',
205
            ],
206
            'role:finance.master' => [
207
                'role:finance.manager',
208
                'role:bill.master',
209
                'role:plan.master',
210
                'role:document.manager',
211
                'role:sale.master',
212
            ],
213
            // STOCK MODULE
214
            'role:stock.user' => [
215
                'stock.read', 'part.read', 'move.read', 'model.read',
216
            ],
217
            'role:stock.manager' => [
218
                'role:stock.user',
219
                'part.create', 'part.update', 'part.delete',
220
                'move.create', 'move.update', 'move.delete',
221
                'model.create', 'model.update', 'model.delete',
222
            ],
223
            'role:stock.master' => [
224
                'role:stock.manager', 'move.read-all',
225
            ],
226
            // ROLES
227
            'role:client' => [
228
                'role:unauthorized', 'have-goods',
229
                'role:ticket.user',
230
                'role:domain.user', 'domain.pay', 'domain.push', 'domain.delete-agp',
231
                'role:dns.user',
232
                'role:certificate.user', 'certificate.pay', 'certificate.push',
233
                'role:contact.user', 'role:document.user', 'document.invoice',
234
                'role:server.user', 'server.pay',
235
                'role:hosting.user',
236
                'role:finance.user',
237
            ],
238
            'role:support' => [
239
                'access-subclients', 'support',
240
                'role:ticket.manager',
241
                'role:client.support',
242
                'role:domain.user',
243
                'role:dns.user',
244
                'role:certificate.user',
245
                'role:contact.user',
246
                'role:server.user',
247
                'role:hosting.user',
248
            ],
249
            'role:admin' => [
250
                'admin',
251
                'role:support',
252
                'role:hub.admin',
253
                'role:stock.manager',
254
                'role:server.admin',
255
                'role:hosting.admin',
256
            ],
257
            'role:accounter' => [
258
                'role:manager',
259
                'role:hub.manager',
260
                'role:stock.manager',
261
            ],
262
            'role:manager' => [
263
                'manage', 'access-reseller',
264
                'role:support',
265
                'role:document.manager',
266
                'role:domain.manager', 'domain.pay', 'domain.push', 'domain.delete-agp',
267
                'role:server.manager', 'role:consumption.manager',
268
                'role:dns.manager',
269
                'role:certificate.manager', 'certificate.pay', 'certificate.push',
270
                'role:contact.user', 'contact.force-verify',
271
                'role:client.manager',
272
                'role:finance.manager',
273
                'mailing.prepare', 'mailing.send',
274
                'client.set-tmp-pwd',
275
            ],
276
            'role:reseller' => [
277
                'have-goods',
278
                'resell',
279
                'role:finance.master',
280
                'deny:access-reseller',
281
                'role:manager',
282
            ],
283
            'role:owner' => [
284
                'role:manager',
285
                'role:bill.master',
286
                'role:stock.manager',
287
                'resell', 'own',
288
            ],
289
            'role:superpowers' => [
290
                'see-no-mans', 'part.sell', 'client.set-others-allowed-ips',
291
            ],
292
            'role:employee' => [
293
                'restore-password',
294
                'role:contact.user',
295
                'role:finance.employee',
296
                'employee.read',
297
            ],
298
            /// LIMITED ROLES
299
            'role:junior-manager' => [
300
                'access-subclients', 'access-reseller',
301
                'role:hub.user',
302
                'role:stock.user',
303
                'plan.force-read', 'plan.read', 'document.read', 'finance.read',
304
                'client.read',
305
                'server.read',
306
                'consumption.read',
307
            ],
308
            /// SUBROLES
309
            'role:domain.user' => [
310
                'domain.read', 'domain.update', 'domain.delete-agp', 'domain.set-nss',
311
            ],
312
            'role:domain.manager' => [
313
                'role:domain.user', 'domain.delete',
314
            ],
315
            'role:domain.master' => [
316
                'role:domain.manager',
317
                'domain.freeze', 'domain.unfreeze',
318
                'domain.push', 'domain.force-push',
319
                'domain.force-send-foa',
320
                'domain.approve-trasfer-out',
321
            ],
322
            'role:dns.user' => [
323
                'dns.create', 'dns.read', 'dns.update', 'dns.delete',
324
            ],
325
            'role:dns.manager' => [
326
                'role:dns.user',
327
            ],
328
            'role:certificate.user' => [
329
                'certificate.read', 'certificate.create', 'certificate.update',
330
            ],
331
            'role:certificate.manager' => [
332
                'role:certificate.user', 'certificate.delete',
333
            ],
334
            'role:ticket.user' => [
335
                'ticket.read', 'ticket.create', 'ticket.answer', 'ticket.close',
336
            ],
337
            'role:ticket.manager' => [
338
                'role:ticket.user', 'ticket.update', 'ticket.delete',
339
            ],
340
            'role:beta-tester' => [
341
                'test.beta',
342
            ],
343
            'role:alpha-tester' => [
344
                'role:beta-tester',
345
                'test.alpha',
346
            ],
347
        ];
348
    }
349
}
350