Completed
Push — master ( 457779...dd37c8 )
by ARCANEDEV
05:39
created

Role::scopeMembers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 0
cts 0
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
1
<?php namespace Arcanesoft\Auth\Models;
2
3
use Arcanedev\LaravelAuth\Models\Role as BaseRoleModel;
4
use Illuminate\Database\Eloquent\Builder;
5
6
/**
7
 * Class     Role
8
 *
9
 * @package  Arcanesoft\Auth\Models
10
 * @author   ARCANEDEV <[email protected]>
11
 *
12
 * @method static \Illuminate\Database\Eloquent\Builder  admins()
13
 * @method static \Illuminate\Database\Eloquent\Builder  members()
14
 */
15
class Role extends BaseRoleModel
16
{
17
    /* ------------------------------------------------------------------------------------------------
18
     |  Constants
19
     | ------------------------------------------------------------------------------------------------
20
     */
21
    const ADMINISTRATOR = 'administrator';
22
    const MEMBER        = 'member';
23
24
    /* ------------------------------------------------------------------------------------------------
25
     |  Scopes
26
     | ------------------------------------------------------------------------------------------------
27
     */
28
    /**
29
     * Scope only admin roles.
30
     *
31
     * @param  \Illuminate\Database\Eloquent\Builder  $query
32
     *
33
     * @return \Illuminate\Database\Eloquent\Builder
34
     */
35
    public function scopeAdmins(Builder $query)
36
    {
37
        return $query->where('slug', Role::ADMINISTRATOR);
38
    }
39
40
    /**
41
     * Scope only admin roles.
42
     *
43
     * @param  \Illuminate\Database\Eloquent\Builder  $query
44
     *
45
     * @return \Illuminate\Database\Eloquent\Builder
46
     */
47
    public function scopeMembers(Builder $query)
48
    {
49
        return $query->where('slug', Role::MEMBER);
50
    }
51
52
    /* ------------------------------------------------------------------------------------------------
53
     |  Getters & Setters
54
     | ------------------------------------------------------------------------------------------------
55
     */
56
    /**
57
     * Get the role hash id.
58
     *
59
     * @return string
60
     */
61
    public function getHashedIdAttribute()
62
    {
63
        return hasher()->encode($this->id);
64
    }
65
66
    /* ------------------------------------------------------------------------------------------------
67
     |  Main Function
68
     | ------------------------------------------------------------------------------------------------
69
     */
70
    /**
71
     * Get a role from a hashed id or fail if not found.
72
     *
73
     * @param  string  $hashedId
74
     *
75
     * @return self
76
     *
77
     * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
78
     */
79
    public static function firstHashedOrFail($hashedId)
80
    {
81
        $id = head(hasher()->decode($hashedId));
82
83
        return self::where('id', $id)->firstOrFail();
84
    }
85
86
    /**
87
     * @param  string  $value
88
     *
89
     * @return string
90
     */
91
    public function makeSlugName($value)
92
    {
93
        return $this->slugify($value);
94
    }
95
}
96