Impersonate   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 0
dl 0
loc 60
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A canImpersonate() 0 4 1
A canBeImpersonated() 0 4 1
A impersonate() 0 4 1
A isImpersonated() 0 4 1
A leaveImpersonation() 0 6 2
1
<?php
2
3
namespace Lab404\Impersonate\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Lab404\Impersonate\Services\ImpersonateManager;
7
8
trait Impersonate
9
{
10
    /**
11
     * Return true or false if the user can impersonate an other user.
12
     *
13
     * @param void
14
     * @return  bool
15
     */
16
    public function canImpersonate()
17
    {
18
        return true;
19
    }
20
21
    /**
22
     * Return true or false if the user can be impersonate.
23
     *
24
     * @param void
25
     * @return  bool
26
     */
27
    public function canBeImpersonated()
28
    {
29
        return true;
30
    }
31
32
    /**
33
     * Impersonate the given user.
34
     *
35
     * @param Model       $user
36
     * @param string|null $guardName
37
     * @return  bool
38
     */
39
    public function impersonate(Model $user, $guardName = null)
40
    {
41
        return app(ImpersonateManager::class)->take($this, $user, $guardName);
42
    }
43
44
    /**
45
     * Check if the current user is impersonated.
46
     *
47
     * @param void
48
     * @return  bool
49
     */
50
    public function isImpersonated()
51
    {
52
        return app(ImpersonateManager::class)->isImpersonating();
53
    }
54
55
    /**
56
     * Leave the current impersonation.
57
     *
58
     * @param void
59
     * @return  bool
60
     */
61
    public function leaveImpersonation()
62
    {
63
        if ($this->isImpersonated()) {
64
            return app(ImpersonateManager::class)->leave();
65
        }
66
    }
67
}
68