Completed
Push — master ( 23bd67...786b39 )
by wen
14:38
created

AdminMenu::checkMenuPermission()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 14
ccs 0
cts 11
cp 0
rs 9.4285
cc 3
eloc 8
nc 1
nop 1
crap 12
1
<?php
2
3
namespace Sco\Admin\Http\Middleware;
4
5
use Auth;
6
use Closure;
7
use Route;
8
use Sco\Admin\Models\Permission;
9
10
class AdminMenu
11
{
12
    /**
13
     * Handle an incoming request.
14
     *
15
     * @param \Illuminate\Http\Request $request
16
     * @param \Closure                 $next
17
     *
18
     * @return mixed
19
     */
20
    public function handle($request, Closure $next)
21
    {
22
        $request->attributes->set('admin.menu',
23
            $this->getAdminMenu(config('admin.menus')));
24
        return $next($request);
25
    }
26
27
    protected function getAdminMenu($list)
28
    {
29
        $menus = collect();
30
        foreach ($list as $key => $items) {
31
            if (is_string($items)) {
32
                $menu = [
33
                    'title' => $items,
34
                    'url'   => $this->getRouteUrl('admin.' . $items),
35
                    'child' => [],
36
                ];
37
                $menus->push($menu);
38
            } elseif (is_array($items)) { // child
39
                $childs = $this->getAdminMenu($items);
40
                if (!empty($childs)) {
41
                    $menu = [
42
                        'title' => $key,
43
                        'url'   => '/#',
44
                        'child' => $childs,
45
                    ];
46
                    $menus->push($menu);
47
                }
48
            }
49
        }
50
        return $menus;
51
    }
52
53
    private function getRouteUrl($name)
54
    {
55
        return Route::has($name) ? route($name, [], false)
56
            : ('/' . str_replace('.', '/', $name));
57
58
    }
59
}
60