PublicMiddleware::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 5
rs 9.4286
cc 1
eloc 3
nc 1
nop 2
1
<?php namespace Modules\Core\Http\Middleware;
2
3
use Illuminate\Http\Request;
4
use Illuminate\Support\Facades\App;
5
use Modules\Menu\Repositories\MenuItemRepository;
6
7
class PublicMiddleware
8
{
9
    /**
10
     * @var Request
11
     */
12
    private $request;
13
    /**
14
     * @var MenuItemRepository
15
     */
16
    private $menuItem;
17
18
    public function __construct(Request $request, MenuItemRepository $menuItem)
0 ignored issues
show
Bug introduced by
You have injected the Request via parameter $request. This is generally not recommended as there might be multiple instances during a request cycle (f.e. when using sub-requests). Instead, it is recommended to inject the RequestStack and retrieve the current request each time you need it via getCurrentRequest().
Loading history...
19
    {
20
        $this->request = $request;
21
        $this->menuItem = $menuItem;
22
    }
23
24
    /**
25
     * Handle an incoming request.
26
     *
27
     * @param  \Illuminate\Http\Request $request
28
     * @param  \Closure                 $next
29
     * @return mixed
30
     */
31
    public function handle($request, \Closure $next)
32
    {
33
        $locale = $this->request->segment(1) ?: App::getLocale();
34
        $item = $this->menuItem->findByUriInLanguage($this->request->segment(2), $locale);
35
36
        if ($this->isOffline($item)) {
37
            App::abort(404);
38
        }
39
40
        return $next($request);
41
    }
42
43
    /**
44
     * Checks if the given menu item is offline
45
     * @param  object $item
46
     * @return bool
47
     */
48
    private function isOffline($item)
49
    {
50
        return is_null($item);
51
    }
52
}
53