Passed
Pull Request — master (#141)
by Rafael
02:21
created

AclTask::kanvas()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 56

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 56
rs 8.9599
c 0
b 0
f 0
cc 2
nc 2
nop 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
namespace Gewaer\Cli\Tasks;
4
5
use Phalcon\Cli\Task as PhTask;
6
use Canvas\Models\EmailTemplates;
7
8
/**
9
 * Class AclTask.
10
 *
11
 * @package Canvas\Cli\Tasks;
12
 *
13
 * @property \Canvas\Acl\Manager $acl
14
 */
15
class AclTask extends PhTask
16
{
17
    /**
18
     * Create the default roles of the system.
19
     *
20
     * @return void
21
     */
22
    public function mainAction()
23
    {
24
        $this->setupDefaultRoles();
25
        $this->kanvas();
26
    }
27
28
    /**
29
     * Create the default roles of the system.
30
     *
31
     * @return void
32
     */
33
    public function setupDefaultRoles()
34
    {
35
        $this->acl->addRole('Default.Admins');
36
        $this->acl->addRole('Default.Agents');
37
        $this->acl->addRole('Default.Users');
38
39
        $this->acl->addResource('Default.Users', ['read', 'list', 'create', 'update', 'delete', 'test-create', 'test-update']);
40
        $this->acl->allow('Admins', 'Default.Users', ['read', 'list', 'create', 'update', 'delete']);
41
    }
42
43
    /**
44
     * Default roles for the crm system.
45
     *
46
     * @return void
47
     */
48
    public function crmAction()
49
    {
50
        $this->acl->addRole('CRM.Users');
51
        $this->acl->addResource('CRM.Users', ['read', 'list', 'create', 'update', 'delete']);
52
        $this->acl->allow('Users', 'CRM.Users', ['read', 'list', 'create']);
53
        $this->acl->deny('Users', 'CRM.Users', ['update', 'delete']);
54
55
        //Apps Settings
56
        $this->acl->addResource('CRM.AppsSettings', ['read', 'list', 'create', 'update', 'delete']);
57
        $this->acl->allow('Users', 'CRM.AppsSettings', ['read', 'list', 'create', 'update', 'delete']);
58
59
        //Companies Settings
60
        $this->acl->addResource('CRM.CompaniesSettings', ['read', 'list', 'create', 'update', 'delete']);
61
        $this->acl->allow('Users', 'CRM.CompaniesSettings', ['read', 'list', 'create', 'update', 'delete']);
62
63
        //Apps plans
64
        $this->acl->addResource('CRM.Apps-plans', ['read', 'list', 'create', 'update', 'delete']);
65
        $this->acl->allow('Users', 'CRM.Apps-plans', ['read', 'list', 'create', 'update', 'delete']);
66
    }
67
68
    /**
69
     * Default ecosystem ACL.
70
     *
71
     * @return void
72
     */
73
    public function kanvas(): void
74
    {
75
        $this->acl->addResource(
76
            'Default.SettingsMenu',
77
            [
78
                'company-settings',
79
                'app-settings',
80
                'companies-manager',
81
            ]
82
        );
83
84
        $defaultResources = [
85
            'Default.CompanyBranches',
86
            'Default.CompanyUsers',
87
            'Default.CompanyRoles',
88
            'Default.CompanySubscriptions',
89
            'Default.CustomFields',
90
            'Default.CompaniesManager',
91
            'Default.Apps-plans'
92
        ];
93
94
        foreach ($defaultResources as $resource) {
95
            $this->acl->addResource(
96
                $resource,
97
                [
98
                    'read',
99
                    'list',
100
                    'create',
101
                    'update',
102
                    'delete'
103
                ]
104
            );
105
106
            $this->acl->allow(
107
                'Admins',
108
                $resource,
109
                [
110
                    'read',
111
                    'list',
112
                    'create',
113
                    'update',
114
                    'delete'
115
                ]
116
            );
117
        }
118
119
        $this->acl->allow(
120
            'Admins',
121
            'Default.SettingsMenu',
122
            [
123
                'company-settings',
124
                'app-settings',
125
                'companies-manager',
126
            ]
127
        );
128
    }
129
}
130