Test Failed
Pull Request — master (#18)
by Maximo
07:25
created

Roles::getByAppName()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
eloc 10
nc 3
nop 2
dl 0
loc 19
ccs 0
cts 11
cp 0
crap 12
rs 9.9332
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Gewaer\Models;
5
6
use Gewaer\Exception\ServerErrorHttpException;
7
use Baka\Auth\Models\Companies as BakaCompanies;
8
9
class Roles extends AbstractModel
10
{
11
    /**
12
     *
13
     * @var integer
14
     */
15
    public $id;
16
17
    /**
18
     *
19
     * @var integer
20
     */
21
    public $name;
22
23
    /**
24
     *
25
     * @var integer
26
     */
27
    public $description;
28
29
    /**
30
     *
31
     * @var integer
32
     */
33
    public $scope;
34
35
    /**
36
     *
37
     * @var integer
38
     */
39
    public $company_id;
40
41
    /**
42
     *
43
     * @var int
44
     */
45
    public $apps_id;
46
47
    /**
48
     *
49
     * @var string
50
     */
51
    public $created_at;
52
53
    /**
54
     *
55
     * @var string
56
     */
57
    public $updated_at;
58
59
    /**
60
     *
61
     * @var integer
62
     */
63
    public $is_deleted;
64
65
    /**
66
     * Default ACL company
67
     *
68
     */
69
    const DEFAULT_ACL_COMPANY_ID = 0;
70
    const DEFAULT_ACL_APP_ID = 0;
71
72
    /**
73
     * Initialize method for model.
74
     */
75 1
    public function initialize()
76
    {
77 1
        $this->setSource('roles');
78 1
    }
79
80
    /**
81
     * Returns table name mapped in the model.
82
     *
83
     * @return string
84
     */
85 1
    public function getSource(): string
86
    {
87 1
        return 'roles';
88
    }
89
90
    /**
91
     * Get the Role by it app name
92
     *
93
     * @param string $role
94
     * @return Roles
95
     */
96
    public static function getByAppName(string $role, BakaCompanies $company): Roles
97
    {
98
        //echeck if we have a dot , taht means we are sending the specific app to use
99
        if (strpos($role, '.') === false) {
100
            throw new ServerErrorHttpException('ACL - We are expecting the app for this role');
101
        }
102
103
        $appRole = explode('.', $role);
104
        $role = $appRole[1];
1 ignored issue
show
Unused Code introduced by
The assignment to $role is dead and can be removed.
Loading history...
105
        $appName = $appRole[0];
106
107
        //look for the app and set it
108
        if (!$app = Apps::getACLApp($appName)) {
109
            throw new ServerErrorHttpException('ACL - No app found for this role');
110
        }
111
112
        return self::findFirst([
113
            'conditions' => 'apps_id in (?0, ?1) AND company_id in (?2 , ?3)',
114
            'bind' => [$app->getId(), self::DEFAULT_ACL_APP_ID, $company->getId(), self::DEFAULT_ACL_COMPANY_ID]
115
        ]);
116
    }
117
}
118