Completed
Branch develop (fb64bf)
by Anton
02:48
created

VaultConfig::controllerClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Spiral Framework.
4
 *
5
 * @license MIT
6
 * @author  Anton Titov (Wolfy-J)
7
 */
8
9
namespace Spiral\Vault\Configs;
10
11
use Spiral\Core\InjectableConfig;
12
use Spiral\Vault\VaultRoute;
13
14
/**
15
 * Configuration for Vault administration panel.
16
 */
17
class VaultConfig extends InjectableConfig
18
{
19
    /**
20
     * Configuration section.
21
     */
22
    const CONFIG = 'modules/vault';
23
24
    /**
25
     * Default permissions namespace.
26
     */
27
    const GUARD_NAMESPACE = 'vault';
28
29
    /**
30
     * @var array
31
     */
32
    protected $config = [
33
        'guard'       => [
34
            'namespace' => 'vault'
35
        ],
36
37
        //Allowed vault controllers
38
        'controllers' => [],
39
40
        //Example: vault/users/addresses/1/remove/123
41
        'route'       => [
42
            'name'        => 'vault',
43
            'pattern'     => 'vault[/<controller>[/<action>[/<id>[/<operation>[/<childID>]]]]]',
44
            'defaults'    => [],
45
            'middlewares' => [],
46
            'matchHost'   => false,
47
        ],
48
49
        //Navigation widget configuration
50
        'navigation'  => [],
51
    ];
52
53
    /**
54
     * Guard namespace (prefix for all permissions) associated with given Vault instance.
55
     *
56
     * @return string
57
     */
58
    public function guardNamespace(): string
59
    {
60
        return $this->config['guard']['namespace'];
61
    }
62
63
    /**
64
     * @param string $controller
65
     *
66
     * @return bool
67
     */
68
    public function hasController(string $controller): bool
69
    {
70
        return isset($this->config['controllers'][$controller]);
71
    }
72
73
    /**
74
     * Controller class.
75
     *
76
     * @param string $controller
77
     *
78
     * @return string
79
     */
80
    public function controllerClass(string $controller): string
81
    {
82
        return $this->config['controllers'][$controller];
83
    }
84
85
//    /**
86
//     * Vault navigation structure including sections, permissions, titles and etc.
87
//     *
88
//     * @return array
89
//     */
90
//    public function navigationSections()
91
//    {
92
//        return $this->config['navigation'];
93
//    }
94
95
    /**
96
     * @param string $name
97
     *
98
     * @return VaultRoute
99
     */
100
    public function makeRoute(string $name): VaultRoute
101
    {
102
        $route = new VaultRoute(
103
            $name,
104
            $this->config['route']['pattern'],
105
            $this->config['route']['defaults']
106
        );
107
108
        return $route->withHost(
109
            $this->config['route']['matchHost']
110
        )->withMiddleware(
111
            $this->config['route']['middlewares']
112
        );
113
    }
114
}