RuleAlgorithm   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 5
dl 0
loc 42
ccs 10
cts 10
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A firstApplicable() 0 4 1
A denyOverrides() 0 4 1
A permitOverrides() 0 4 1
A denyUnlessPermit() 0 4 1
A permitUnlessDeny() 0 4 1
1
<?php declare(strict_types=1);
2
3
namespace Limoncello\Auth\Authorization\PolicyDecision;
4
5
/**
6
 * Copyright 2015-2019 [email protected]
7
 *
8
 * Licensed under the Apache License, Version 2.0 (the "License");
9
 * you may not use this file except in compliance with the License.
10
 * You may obtain a copy of the License at
11
 *
12
 * http://www.apache.org/licenses/LICENSE-2.0
13
 *
14
 * Unless required by applicable law or agreed to in writing, software
15
 * distributed under the License is distributed on an "AS IS" BASIS,
16
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
 * See the License for the specific language governing permissions and
18
 * limitations under the License.
19
 */
20
21
use Limoncello\Auth\Authorization\PolicyDecision\Algorithms\RulesDenyOverrides;
22
use Limoncello\Auth\Authorization\PolicyDecision\Algorithms\RulesDenyUnlessPermit;
23
use Limoncello\Auth\Authorization\PolicyDecision\Algorithms\RulesFirstApplicable;
24
use Limoncello\Auth\Authorization\PolicyDecision\Algorithms\RulesPermitOverrides;
25
use Limoncello\Auth\Authorization\PolicyDecision\Algorithms\RulesPermitUnlessDeny;
26
use Limoncello\Auth\Contracts\Authorization\PolicyAdministration\RuleCombiningAlgorithmInterface;
27
28
/**
29
 * @package Limoncello\Auth
30
 */
31
abstract class RuleAlgorithm
32
{
33
    /**
34 3
     * @return RuleCombiningAlgorithmInterface
35
     */
36 3
    public static function firstApplicable(): RuleCombiningAlgorithmInterface
37
    {
38
        return new RulesFirstApplicable();
39
    }
40
41
    /**
42 2
     * @return RuleCombiningAlgorithmInterface
43
     */
44 2
    public static function denyOverrides(): RuleCombiningAlgorithmInterface
45
    {
46
        return new RulesDenyOverrides();
47
    }
48
49
    /**
50 12
     * @return RuleCombiningAlgorithmInterface
51
     */
52 12
    public static function permitOverrides(): RuleCombiningAlgorithmInterface
53
    {
54
        return new RulesPermitOverrides();
55
    }
56
57
    /**
58 19
     * @return RuleCombiningAlgorithmInterface
59
     */
60 19
    public static function denyUnlessPermit(): RuleCombiningAlgorithmInterface
61
    {
62
        return new RulesDenyUnlessPermit();
63
    }
64
65
    /**
66 1
     * @return RuleCombiningAlgorithmInterface
67
     */
68 1
    public static function permitUnlessDeny(): RuleCombiningAlgorithmInterface
69
    {
70
        return new RulesPermitUnlessDeny();
71
    }
72
}
73