Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Illuminate\Auth\Middleware;
4
 
5
use Closure;
6
use Illuminate\Contracts\Routing\ResponseFactory;
7
use Illuminate\Contracts\Routing\UrlGenerator;
8
 
9
class RequirePassword
10
{
11
    /**
12
     * The response factory instance.
13
     *
14
     * @var \Illuminate\Contracts\Routing\ResponseFactory
15
     */
16
    protected $responseFactory;
17
 
18
    /**
19
     * The URL generator instance.
20
     *
21
     * @var \Illuminate\Contracts\Routing\UrlGenerator
22
     */
23
    protected $urlGenerator;
24
 
25
    /**
26
     * The password timeout.
27
     *
28
     * @var int
29
     */
30
    protected $passwordTimeout;
31
 
32
    /**
33
     * Create a new middleware instance.
34
     *
35
     * @param  \Illuminate\Contracts\Routing\ResponseFactory  $responseFactory
36
     * @param  \Illuminate\Contracts\Routing\UrlGenerator  $urlGenerator
37
     * @param  int|null  $passwordTimeout
38
     * @return void
39
     */
40
    public function __construct(ResponseFactory $responseFactory, UrlGenerator $urlGenerator, $passwordTimeout = null)
41
    {
42
        $this->responseFactory = $responseFactory;
43
        $this->urlGenerator = $urlGenerator;
44
        $this->passwordTimeout = $passwordTimeout ?: 10800;
45
    }
46
 
47
    /**
48
     * Handle an incoming request.
49
     *
50
     * @param  \Illuminate\Http\Request  $request
51
     * @param  \Closure  $next
52
     * @param  string|null  $redirectToRoute
53
     * @param  int|null  $passwordTimeoutSeconds
54
     * @return mixed
55
     */
56
    public function handle($request, Closure $next, $redirectToRoute = null, $passwordTimeoutSeconds = null)
57
    {
58
        if ($this->shouldConfirmPassword($request, $passwordTimeoutSeconds)) {
59
            if ($request->expectsJson()) {
60
                return $this->responseFactory->json([
61
                    'message' => 'Password confirmation required.',
62
                ], 423);
63
            }
64
 
65
            return $this->responseFactory->redirectGuest(
66
                $this->urlGenerator->route($redirectToRoute ?? 'password.confirm')
67
            );
68
        }
69
 
70
        return $next($request);
71
    }
72
 
73
    /**
74
     * Determine if the confirmation timeout has expired.
75
     *
76
     * @param  \Illuminate\Http\Request  $request
77
     * @param  int|null  $passwordTimeoutSeconds
78
     * @return bool
79
     */
80
    protected function shouldConfirmPassword($request, $passwordTimeoutSeconds = null)
81
    {
82
        $confirmedAt = time() - $request->session()->get('auth.password_confirmed_at', 0);
83
 
84
        return $confirmedAt > ($passwordTimeoutSeconds ?? $this->passwordTimeout);
85
    }
86
}