InstitutionRole::useRaa()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Copyright 2018 SURFnet B.V.
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
namespace Surfnet\Stepup\Configuration\Value;
20
21
use JsonSerializable;
22
use Stringable;
23
use Surfnet\Stepup\Exception\InvalidArgumentException;
24
25
final class InstitutionRole implements JsonSerializable, Stringable
26
{
27
    public const ROLE_USE_RA = 'use_ra';
28
    public const ROLE_USE_RAA = 'use_raa';
29
    public const ROLE_SELECT_RAA = 'select_raa';
30
31
    private static array $validRoles = [
32
        self::ROLE_USE_RA,
33
        self::ROLE_USE_RAA,
34
        self::ROLE_SELECT_RAA,
35
    ];
36
37
    private readonly string $type;
38
39
    public function __construct(string $type)
40
    {
41
        if (!in_array($type, self::$validRoles)) {
42
            throw new InvalidArgumentException();
43
        }
44
        $this->type = $type;
0 ignored issues
show
Bug introduced by
The property type is declared read-only in Surfnet\Stepup\Configuration\Value\InstitutionRole.
Loading history...
45
    }
46
47
    public static function useRa(): self
48
    {
49
        return new self(self::ROLE_USE_RA);
50
    }
51
52
    public static function useRaa(): self
53
    {
54
        return new self(self::ROLE_USE_RAA);
55
    }
56
57
    public static function selectRaa(): self
58
    {
59
        return new self(self::ROLE_SELECT_RAA);
60
    }
61
62
    public function equals(InstitutionRole $role): bool
63
    {
64
        return $this->type === $role->getType();
65
    }
66
67
    public function getType(): string
68
    {
69
        return $this->type;
70
    }
71
72
    public function jsonSerialize(): string
73
    {
74
        return $this->type;
75
    }
76
77
    public function __toString(): string
78
    {
79
        return $this->type;
80
    }
81
}
82