RedirectIfAuthenticated::handle()   A
last analyzed

Complexity

Conditions 6
Paths 3

Size

Total Lines 17
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 6.0702

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 7
c 2
b 0
f 0
dl 0
loc 17
ccs 7
cts 8
cp 0.875
rs 9.2222
cc 6
nc 3
nop 2
crap 6.0702
1
<?php 
2
3
namespace Distilleries\Expendable\Http\Middleware;
4
5
use Closure;
6
use Illuminate\Contracts\Auth\Guard;
7
use Illuminate\Contracts\Config\Repository;
8
use Illuminate\Contracts\Routing\Registrar;
9
use Illuminate\Http\RedirectResponse;
10
11
class RedirectIfAuthenticated {
12
13
    /**
14
     * The Guard implementation.
15
     *
16
     * @var Guard
17
     */
18
    protected $auth;
19
    protected $router;
20
    protected $config;
21
22
    /**
23
     * Create a new filter instance.
24
     *
25
     * @param  Guard $auth
26
     */
27 28
    public function __construct(Guard $auth, Registrar $router, Repository $config)
28
    {
29 28
        $this->auth   = $auth;
30 28
        $this->router = $router;
31 28
        $this->config = $config;
32
    }
33
34
    /**
35
     * Handle an incoming request.
36
     *
37
     * @param  \Illuminate\Http\Request $request
38
     * @param  \Closure $next
39
     * @return mixed
40
     */
41 28
    public function handle($request, Closure $next)
42
    {
43 28
        if ($this->auth->check() && $this->router->current()->getActionName() != $this->config->get('expendable.logout_action'))
44
        {
45 2
            $menu = $this->config->get('expendable.menu');
46 2
            $user = $this->auth->user();
47
48 2
            if (method_exists($user, 'getFirstRedirect') && !empty($menu) && !empty($menu['left']))
49
            {
50 2
                return new RedirectResponse($this->auth->user()->getFirstRedirect($menu['left']));
51
            }
52
53
            return new RedirectResponse('/');
54
55
        }
56
57 26
        return $next($request);
58
    }
59
}