Completed
Branch master (91621e)
by Neomerx
01:35
created

Messaging   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 3
dl 0
loc 26
rs 10
c 0
b 0
f 0
1
<?php namespace Limoncello\Tests\Auth\Authorization\PolicyEnforcement\Data\Policies;
2
3
/**
4
 * Copyright 2015-2017 [email protected]
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 * http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
19
use Limoncello\Auth\Authorization\PolicyAdministration\Policy;
20
use Limoncello\Auth\Authorization\PolicyDecision\RuleAlgorithm;
21
use Limoncello\Auth\Contracts\Authorization\PolicyAdministration\PolicyInterface;
22
use Limoncello\Auth\Contracts\Authorization\PolicyAdministration\TargetInterface;
23
use Limoncello\Tests\Auth\Authorization\PolicyEnforcement\Data\ContextProperties;
24
25
/**
26
 * @package Limoncello\Tests\Auth
27
 */
28
abstract class Messaging extends General
29
{
30
    /** Operation identity */
31
    const OPERATION_SEND = 'send_message';
32
33
    /**
34
     * @return PolicyInterface
35
     */
36
    public static function policyCanSendMessage()
37
    {
38
        return (new Policy([static::rulePermit()], RuleAlgorithm::denyUnlessPermit()))
39
            ->setTarget(static::targetSendMessage())
40
            ->setName('Messaging');
41
    }
42
43
    /**
44
     * @return TargetInterface
45
     */
46
    protected static function targetSendMessage()
47
    {
48
        return static::targetMulti([
49
            ContextProperties::PARAM_OPERATION    => static::OPERATION_SEND,
50
            ContextProperties::PARAM_IS_WORK_TIME => true,
51
        ]);
52
    }
53
}
54