Roles   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 0
loc 64
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A permissions() 0 4 1
A users() 0 4 1
A belongsToUser() 0 4 1
A assignToUser() 0 8 2
1
<?php
2
3
namespace Mamikon\RoleManager\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Illuminate\Foundation\Auth\User;
7
/**
8
 * Role model
9
 *
10
 * @category Laravel_Package
11
 * @package  Mamikon\RoleManager
12
 * @author   Mamikon Arakelyan <[email protected]>
13
 * @license  https://github.com/mamikon/role-manager/blob/master/LICENSE.md MIT
14
 * @link     https://github.com/mamikon/role-manager
15
 */
16
class Roles extends Model
17
{
18
    protected $fillable = ['name', 'description'];
19
20
    /**
21
     * Roles constructor.
22
     *
23
     * @param array $attributes
24
     */
25
    public function __construct(array $attributes = [])
26
    {
27
        parent::__construct($attributes);
28
        $this->table = config('roleManager.rolesTable');
29
    }
30
31
32
    /**
33
     * Permission Relation
34
     *
35
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
36
     */
37
    public function permissions()
38
    {
39
        return $this->belongsToMany(Permissions::class);
40
    }
41
42
    /**
43
     * Users relation
44
     *
45
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
46
     */
47
    public function users()
48
    {
49
        return $this->belongsToMany(User::class);
50
    }
51
52
    /**
53
     * Check if user has role
54
     *
55
     * @param User $user
56
     *
57
     * @return bool
58
     */
59
    public function belongsToUser(User $user)
60
    {
61
        return !!$this->users()->where('user_id', $user->id)->count();
62
    }
63
64
    /**
65
     * Assign Role to User
66
     *
67
     * @param User $user
68
     *
69
     * @return bool
70
     */
71
    public function assignToUser(User $user)
72
    {
73
        if ($this->belongsToUser($user)) {
74
            return true;
75
        }
76
        $this->users()->attach($user->id);
77
        return true;
78
    }
79
}
80