Completed
Push — master ( b47537...37aec8 )
by ARCANEDEV
10s
created

ImpersonationPolicy   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 0
cbo 2
dl 0
loc 40
rs 10
ccs 4
cts 4
cp 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A canImpersonatePolicy() 0 4 1
A canBeImpersonatedPolicy() 0 4 2
1
<?php namespace Arcanedev\LaravelImpersonator\Policies;
2
3
use Arcanedev\LaravelImpersonator\Contracts\Impersonatable;
4
use Arcanedev\Support\Bases\Policy;
5
6
/**
7
 * Class     ImpersonationPolicy
8
 *
9
 * @package  Arcanedev\LaravelImpersonator\Policies
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class ImpersonationPolicy extends Policy
13
{
14
    /* -----------------------------------------------------------------
15
     |  Constants
16
     | -----------------------------------------------------------------
17
     */
18
19
    const CAN_IMPERSONATE     = 'auth.impersonator.can-impersonate';
20
    const CAN_BE_IMPERSONATED = 'auth.impersonator.can-be-impersonated';
21
22
    /* -----------------------------------------------------------------
23
     |  Main Methods
24
     | -----------------------------------------------------------------
25
     */
26
27
    /**
28
     * Check if the current user has the `can impersonate` ability.
29
     *
30
     * @param  \Arcanedev\LaravelImpersonator\Contracts\Impersonatable  $impersonator
31
     *
32
     * @return bool
33
     */
34 12
    public function canImpersonatePolicy(Impersonatable $impersonator)
35
    {
36 12
        return $impersonator->canImpersonate();
37
    }
38
39
    /**
40
     * Check if the given user can be impersonated.
41
     *
42
     * @param  \Arcanedev\LaravelImpersonator\Contracts\Impersonatable  $impersonator
43
     * @param  \Arcanedev\LaravelImpersonator\Contracts\Impersonatable  $impersonated
44
     *
45
     * @return bool
46
     */
47 12
    public function canBeImpersonatedPolicy(Impersonatable $impersonator, Impersonatable $impersonated)
48
    {
49 12
        return $this->canImpersonatePolicy($impersonator) && $impersonated->canBeImpersonated();
50
    }
51
}
52