Completed
Push — master ( 1aa7c1...01cdf2 )
by wen
03:12
created

AdminMenu::checkMenuPermission()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 14
rs 9.4285
ccs 0
cts 7
cp 0
cc 3
eloc 7
nc 1
nop 1
crap 12
1
<?php
2
3
namespace Sco\Admin\Http\Middleware;
4
5
use Closure;
6
use Route;
7
use Auth;
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', $this->getAdminMenu());
23
        $request->attributes->set('currentMenuIds', $this->getCurrentMenuIds());
24
        return $next($request);
25
    }
26
27
    protected function getAdminMenu()
28
    {
29
        return $this->checkMenuPermission((new Permission())->getMenuList());
30
31
    }
32
33
    private function checkMenuPermission($list)
34
    {
35
36
        $return = $list->filter(function ($permission, $key) {
0 ignored issues
show
Unused Code introduced by
The parameter $key is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
37
            if (request()->user()->can($permission->name)) {
38
                if (!$permission->child->isEmpty()) {
39
                    $permission->child = $this->checkMenuPermission($permission->child);
40
                }
41
                return $permission;
42
            }
43
        });
44
45
        return $return;
46
    }
47
48
    protected function getCurrentMenuIds()
49
    {
50
        $parentTree = (new Permission())->getParentTreeAndSelfByName(Route::currentRouteName());
51
        $currentMenuIds = 0;
52
        if ($parentTree) {
53
            $currentMenuIds = $parentTree->pluck('id');
54
        }
55
56
        return $currentMenuIds;
57
    }
58
}
59