Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php
Строк: 110
<?php

namespace IlluminateSessionMiddleware;

use 
Closure;
use 
IlluminateAuthAuthenticationException;
use 
IlluminateContractsAuthFactory as AuthFactory;
use 
IlluminateContractsSessionMiddlewareAuthenticatesSessions;
use 
IlluminateHttpRequest;

class 
AuthenticateSession implements AuthenticatesSessions
{
    
/**
     * The authentication factory implementation.
     *
     * @var IlluminateContractsAuthFactory
     */
    
protected $auth;

    
/**
     * Create a new middleware instance.
     *
     * @param  IlluminateContractsAuthFactory  $auth
     * @return void
     */
    
public function __construct(AuthFactory $auth)
    {
        
$this->auth $auth;
    }

    
/**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @return mixed
     */
    
public function handle($requestClosure $next)
    {
        if (! 
$request->hasSession() || ! $request->user()) {
            return 
$next($request);
        }

        if (
$this->guard()->viaRemember()) {
            
$passwordHash explode('|'$request->cookies->get($this->guard()->getRecallerName()))[2] ?? null;

            if (! 
$passwordHash || $passwordHash != $request->user()->getAuthPassword()) {
                
$this->logout($request);
            }
        }

        if (! 
$request->session()->has('password_hash_'.$this->auth->getDefaultDriver())) {
            
$this->storePasswordHashInSession($request);
        }

        if (
$request->session()->get('password_hash_'.$this->auth->getDefaultDriver()) !== $request->user()->getAuthPassword()) {
            
$this->logout($request);
        }

        return 
tap($next($request), function () use ($request) {
            if (! 
is_null($this->guard()->user())) {
                
$this->storePasswordHashInSession($request);
            }
        });
    }

    
/**
     * Store the user's current password hash in the session.
     *
     * @param  IlluminateHttpRequest  $request
     * @return void
     */
    
protected function storePasswordHashInSession($request)
    {
        if (! 
$request->user()) {
            return;
        }

        
$request->session()->put([
            
'password_hash_'.$this->auth->getDefaultDriver() => $request->user()->getAuthPassword(),
        ]);
    }

    
/**
     * Log the user out of the application.
     *
     * @param  IlluminateHttpRequest  $request
     * @return void
     *
     * @throws IlluminateAuthAuthenticationException
     */
    
protected function logout($request)
    {
        
$this->guard()->logoutCurrentDevice();

        
$request->session()->flush();

        throw new 
AuthenticationException(
            
'Unauthenticated.', [$this->auth->getDefaultDriver()], $this->redirectTo($request)
        );
    }

    
/**
     * Get the guard instance that should be used by the middleware.
     *
     * @return IlluminateContractsAuthFactory|IlluminateContractsAuthGuard
     */
    
protected function guard()
    {
        return 
$this->auth;
    }

    
/**
     * Get the path the user should be redirected to when their session is not authenticated.
     *
     * @param  IlluminateHttpRequest  $request
     * @return string|null
     */
    
protected function redirectTo(Request $request)
    {
        
//
    
}
}
Онлайн: 2
Реклама