Completed
Pull Request — develop (#50)
by Abdelrahman
07:29 queued 01:52
created

Reauthenticate::handle()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 17
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 10
nc 3
nop 5
dl 0
loc 17
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cortex\Fort\Http\Middleware;
6
7
use Closure;
8
9
class Reauthenticate
10
{
11
    /**
12
     * Handle an incoming request.
13
     *
14
     * @param \Illuminate\Http\Request $request
15
     * @param \Closure                 $next
16
     * @param string                   $type
17
     * @param int                      $timeout
0 ignored issues
show
Documentation introduced by
Should the type for parameter $timeout not be integer|null?

This check looks for @param annotations where the type inferred by our type inference engine differs from the declared type.

It makes a suggestion as to what type it considers more descriptive.

Most often this is a case of a parameter that can be null in addition to its declared types.

Loading history...
18
     * @param bool                     $renew
19
     *
20
     * @return mixed
21
     */
22
    public function handle($request, Closure $next, $type = 'password', $timeout = null, $renew = false)
23
    {
24
        $timeout = $timeout ?? config('cortex.fort.reauthentication.timeout');
25
        $session_name = 'cortex.fort.reauthentication.'.$request->route()->getName();
26
       
27
        if(is_null(session($session_name)) || time() - session($session_name) >= $timeout) {
28
            session()->forget($session_name);
29
            session()->put('cortex.fort.reauthentication.intended', $request->url());
30
            session()->put('cortex.fort.reauthentication.session_name', $session_name);
31
32
            return view('cortex/fort::frontarea.common.reauthentication.'.$type);
33
        }
34
35
        ! $renew || session()->put($session_name, time());
36
37
        return $next($request);
38
    }
39
}
40