Passed
Push — master ( 4e2a61...b4d3e2 )
by Iman
09:39
created

StartGuarding   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 15
dl 0
loc 29
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A guardRoutes() 0 11 1
A start() 0 14 4
1
<?php
2
3
namespace Imanghafoori\HeyMan;
4
5
use Illuminate\Routing\Events\RouteMatched;
6
use Illuminate\Support\Facades\Route;
7
use Imanghafoori\HeyMan\WatchingStrategies\Routes\RouteMatchListener;
8
9
class StartGuarding
10
{
11
    public function start()
12
    {
13
        $data = resolve('heyman.chains')->data;
14
        unset($data['route']);
15
16
        foreach ($data as $manager => $f) {
17
            foreach ($f as $value => $callbacks) {
18
                foreach ($callbacks as $key => $cb) {
19
                    resolve($manager)->register($value, $cb, $key);
20
                }
21
            }
22
        }
23
24
        $this->guardRoutes();
25
    }
26
27
    private function guardRoutes()
28
    {
29
        Route::matched(function (RouteMatched $eventObj) {
30
            $matchedRoute = [
31
                $eventObj->route->getName(),
32
                $eventObj->route->getActionName(),
33
                $eventObj->request->method().$eventObj->route->uri,
34
            ];
35
36
            $t = resolve('heyman.chains')->data['route'] ?? [];
37
            resolve(RouteMatchListener::class)->execMatchedCallbacks($matchedRoute, $t);
38
        });
39
    }
40
}