Role   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 105
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 3
dl 0
loc 105
c 0
b 0
f 0
ccs 0
cts 12
cp 0
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A users() 0 4 1
A scopeAdmin() 0 4 1
A scopeModerator() 0 4 1
A scopeMember() 0 4 1
A firstHashedOrFail() 0 4 1
A makeSlugName() 0 4 1
1
<?php namespace Arcanesoft\Auth\Models;
2
3
use Arcanedev\LaravelAuth\Models\Role as BaseRole;
4
use Illuminate\Database\Eloquent\Builder;
5
6
/**
7
 * Class     Role
8
 *
9
 * @package  Arcanesoft\Auth\Models
10
 * @author   ARCANEDEV <[email protected]>
11
 *
12
 * @property  int|null  users_count
13
 * @property  int|null  $permissions_count
14
 *
15
 * @method static \Illuminate\Database\Eloquent\Builder  admin()
16
 * @method static \Illuminate\Database\Eloquent\Builder  moderator()
17
 * @method static \Illuminate\Database\Eloquent\Builder  member()
18
 *
19
 * @mixin  \Illuminate\Database\Eloquent\Builder
20
 */
21
class Role extends BaseRole
22
{
23
    /* -----------------------------------------------------------------
24
     |  Constants
25
     | -----------------------------------------------------------------
26
     */
27
28
    const ADMINISTRATOR = 'administrator';
29
    const MODERATOR     = 'moderator';
30
    const MEMBER        = 'member';
31
32
    /* -----------------------------------------------------------------
33
     |  Traits
34
     | -----------------------------------------------------------------
35
     */
36
37
    use Presenters\RolePresenter;
38
39
    /* -----------------------------------------------------------------
40
     |  Relationships
41
     | -----------------------------------------------------------------
42
     */
43
44
    /**
45
     * Role belongs to many users.
46
     *
47
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
48
     */
49
    public function users()
50
    {
51
        return parent::users()->protectAdmins();
52
    }
53
54
    /* -----------------------------------------------------------------
55
     |  Scopes
56
     | -----------------------------------------------------------------
57
     */
58
59
    /**
60
     * Scope only with administrator role.
61
     *
62
     * @param  \Illuminate\Database\Eloquent\Builder  $query
63
     *
64
     * @return \Illuminate\Database\Eloquent\Builder
65
     */
66
    public function scopeAdmin(Builder $query)
67
    {
68
        return $query->where('slug', Role::ADMINISTRATOR);
69
    }
70
71
    /**
72
     * Scope only with moderator role.
73
     *
74
     * @param  \Illuminate\Database\Eloquent\Builder  $query
75
     *
76
     * @return \Illuminate\Database\Eloquent\Builder
77
     */
78
    public function scopeModerator(Builder $query)
79
    {
80
        return $query->where('slug', Role::MODERATOR);
81
    }
82
83
    /**
84
     * Scope only with member role.
85
     *
86
     * @param  \Illuminate\Database\Eloquent\Builder  $query
87
     *
88
     * @return \Illuminate\Database\Eloquent\Builder
89
     */
90
    public function scopeMember(Builder $query)
91
    {
92
        return $query->where('slug', Role::MEMBER);
93
    }
94
95
    /* -----------------------------------------------------------------
96
     |  Main Methods
97
     | -----------------------------------------------------------------
98
     */
99
100
    /**
101
     * Get a role from a hashed id or fail if not found.
102
     *
103
     * @param  string  $hashedId
104
     *
105
     * @return self
106
     *
107
     * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
108
     */
109
    public static function firstHashedOrFail($hashedId)
110
    {
111
        return self::withHashedId($hashedId)->firstOrFail();
112
    }
113
114
    /**
115
     * Make the slug.
116
     *
117
     * @param  string  $value
118
     *
119
     * @return string
120
     */
121
    public function makeSlugName($value)
122
    {
123
        return $this->slugify($value);
124
    }
125
}
126