Completed
Pull Request — develop (#50)
by Marcus
01:49
created

Reauthenticate   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 6
lcom 0
cbo 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B handle() 0 27 6
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 string|null               $session_name
18
     * @param int|null                  $timeout
19
     * @param bool                      $renew
20
     *
21
     * @return mixed
22
     */
23
    public function handle($request, Closure $next, $type='password', $session_name=null, $timeout=null, $renew=false)
24
    {
25
26
        $timeout = $timeout ?? config('cortex.fort.reauthentication.timeout');
27
28
        if( is_null($session_name) || empty($session_name) ) {
29
            $session_name = config('cortex.fort.reauthentication.prefix').$request->route()->getName();
30
        } else {
31
            $session_name = config('cortex.fort.reauthentication.prefix').$session_name;
32
        }
33
34
        if( is_null( session( $session_name ) ) || time() - session( $session_name ) >= $timeout ) {
35
36
            session()->forget( $session_name );
37
            session()->put('rinvex.fort.twofactor.totp', true);
38
            session()->put(config('cortex.fort.reauthentication.prefix').'.intended', $request->url());
39
            session()->put(config('cortex.fort.reauthentication.prefix').'.session_name', $session_name);
40
41
            return view('cortex/fort::frontarea.common.reauthentication.'.$type);
42
        }
43
44
        if( $renew ) {
45
            session()->put($session_name, time());
46
        }
47
48
        return $next($request);
49
    }
50
}