Primo Committ
This commit is contained in:
33
vendor/laravel/framework/src/Illuminate/Foundation/Http/Events/RequestHandled.php
vendored
Normal file
33
vendor/laravel/framework/src/Illuminate/Foundation/Http/Events/RequestHandled.php
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Events;
|
||||
|
||||
class RequestHandled
|
||||
{
|
||||
/**
|
||||
* The request instance.
|
||||
*
|
||||
* @var \Illuminate\Http\Request
|
||||
*/
|
||||
public $request;
|
||||
|
||||
/**
|
||||
* The response instance.
|
||||
*
|
||||
* @var \Illuminate\Http\Response
|
||||
*/
|
||||
public $response;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Illuminate\Http\Response $response
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($request, $response)
|
||||
{
|
||||
$this->request = $request;
|
||||
$this->response = $response;
|
||||
}
|
||||
}
|
||||
55
vendor/laravel/framework/src/Illuminate/Foundation/Http/Exceptions/MaintenanceModeException.php
vendored
Normal file
55
vendor/laravel/framework/src/Illuminate/Foundation/Http/Exceptions/MaintenanceModeException.php
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Exceptions;
|
||||
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Date;
|
||||
use Symfony\Component\HttpKernel\Exception\ServiceUnavailableHttpException;
|
||||
use Throwable;
|
||||
|
||||
class MaintenanceModeException extends ServiceUnavailableHttpException
|
||||
{
|
||||
/**
|
||||
* When the application was put in maintenance mode.
|
||||
*
|
||||
* @var \Illuminate\Support\Carbon
|
||||
*/
|
||||
public $wentDownAt;
|
||||
|
||||
/**
|
||||
* The number of seconds to wait before retrying.
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retryAfter;
|
||||
|
||||
/**
|
||||
* When the application should next be available.
|
||||
*
|
||||
* @var \Illuminate\Support\Carbon
|
||||
*/
|
||||
public $willBeAvailableAt;
|
||||
|
||||
/**
|
||||
* Create a new exception instance.
|
||||
*
|
||||
* @param int $time
|
||||
* @param int|null $retryAfter
|
||||
* @param string|null $message
|
||||
* @param \Throwable|null $previous
|
||||
* @param int $code
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($time, $retryAfter = null, $message = null, Throwable $previous = null, $code = 0)
|
||||
{
|
||||
parent::__construct($retryAfter, $message, $previous, $code);
|
||||
|
||||
$this->wentDownAt = Date::createFromTimestamp($time);
|
||||
|
||||
if ($retryAfter) {
|
||||
$this->retryAfter = $retryAfter;
|
||||
|
||||
$this->willBeAvailableAt = Date::instance(Carbon::createFromTimestamp($time)->addRealSeconds($this->retryAfter));
|
||||
}
|
||||
}
|
||||
}
|
||||
249
vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php
vendored
Normal file
249
vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php
vendored
Normal file
@@ -0,0 +1,249 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http;
|
||||
|
||||
use Illuminate\Auth\Access\AuthorizationException;
|
||||
use Illuminate\Contracts\Container\Container;
|
||||
use Illuminate\Contracts\Validation\Factory as ValidationFactory;
|
||||
use Illuminate\Contracts\Validation\ValidatesWhenResolved;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Redirector;
|
||||
use Illuminate\Validation\ValidatesWhenResolvedTrait;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class FormRequest extends Request implements ValidatesWhenResolved
|
||||
{
|
||||
use ValidatesWhenResolvedTrait;
|
||||
|
||||
/**
|
||||
* The container instance.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Container\Container
|
||||
*/
|
||||
protected $container;
|
||||
|
||||
/**
|
||||
* The redirector instance.
|
||||
*
|
||||
* @var \Illuminate\Routing\Redirector
|
||||
*/
|
||||
protected $redirector;
|
||||
|
||||
/**
|
||||
* The URI to redirect to if validation fails.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirect;
|
||||
|
||||
/**
|
||||
* The route to redirect to if validation fails.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectRoute;
|
||||
|
||||
/**
|
||||
* The controller action to redirect to if validation fails.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectAction;
|
||||
|
||||
/**
|
||||
* The key to be used for the view error bag.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $errorBag = 'default';
|
||||
|
||||
/**
|
||||
* The validator instance.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected $validator;
|
||||
|
||||
/**
|
||||
* Get the validator instance for the request.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function getValidatorInstance()
|
||||
{
|
||||
if ($this->validator) {
|
||||
return $this->validator;
|
||||
}
|
||||
|
||||
$factory = $this->container->make(ValidationFactory::class);
|
||||
|
||||
if (method_exists($this, 'validator')) {
|
||||
$validator = $this->container->call([$this, 'validator'], compact('factory'));
|
||||
} else {
|
||||
$validator = $this->createDefaultValidator($factory);
|
||||
}
|
||||
|
||||
if (method_exists($this, 'withValidator')) {
|
||||
$this->withValidator($validator);
|
||||
}
|
||||
|
||||
$this->setValidator($validator);
|
||||
|
||||
return $this->validator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the default validator instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Validation\Factory $factory
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function createDefaultValidator(ValidationFactory $factory)
|
||||
{
|
||||
return $factory->make(
|
||||
$this->validationData(), $this->container->call([$this, 'rules']),
|
||||
$this->messages(), $this->attributes()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get data to be validated from the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function validationData()
|
||||
{
|
||||
return $this->all();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a failed validation attempt.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Validation\Validator $validator
|
||||
* @return void
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
*/
|
||||
protected function failedValidation(Validator $validator)
|
||||
{
|
||||
throw (new ValidationException($validator))
|
||||
->errorBag($this->errorBag)
|
||||
->redirectTo($this->getRedirectUrl());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the URL to redirect to on a validation error.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getRedirectUrl()
|
||||
{
|
||||
$url = $this->redirector->getUrlGenerator();
|
||||
|
||||
if ($this->redirect) {
|
||||
return $url->to($this->redirect);
|
||||
} elseif ($this->redirectRoute) {
|
||||
return $url->route($this->redirectRoute);
|
||||
} elseif ($this->redirectAction) {
|
||||
return $url->action($this->redirectAction);
|
||||
}
|
||||
|
||||
return $url->previous();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the request passes the authorization check.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function passesAuthorization()
|
||||
{
|
||||
if (method_exists($this, 'authorize')) {
|
||||
return $this->container->call([$this, 'authorize']);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a failed authorization attempt.
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
protected function failedAuthorization()
|
||||
{
|
||||
throw new AuthorizationException;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validated data from the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function validated()
|
||||
{
|
||||
return $this->validator->validated();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom messages for validator errors.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function messages()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom attributes for validator errors.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function attributes()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Validator instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Validation\Validator $validator
|
||||
* @return $this
|
||||
*/
|
||||
public function setValidator(Validator $validator)
|
||||
{
|
||||
$this->validator = $validator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Redirector instance.
|
||||
*
|
||||
* @param \Illuminate\Routing\Redirector $redirector
|
||||
* @return $this
|
||||
*/
|
||||
public function setRedirector(Redirector $redirector)
|
||||
{
|
||||
$this->redirector = $redirector;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the container implementation.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Container\Container $container
|
||||
* @return $this
|
||||
*/
|
||||
public function setContainer(Container $container)
|
||||
{
|
||||
$this->container = $container;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
447
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
vendored
Normal file
447
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
vendored
Normal file
@@ -0,0 +1,447 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http;
|
||||
|
||||
use Illuminate\Contracts\Debug\ExceptionHandler;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Http\Kernel as KernelContract;
|
||||
use Illuminate\Foundation\Http\Events\RequestHandled;
|
||||
use Illuminate\Routing\Pipeline;
|
||||
use Illuminate\Routing\Router;
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
use InvalidArgumentException;
|
||||
use Throwable;
|
||||
|
||||
class Kernel implements KernelContract
|
||||
{
|
||||
/**
|
||||
* The application implementation.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Foundation\Application
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* The router instance.
|
||||
*
|
||||
* @var \Illuminate\Routing\Router
|
||||
*/
|
||||
protected $router;
|
||||
|
||||
/**
|
||||
* The bootstrap classes for the application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $bootstrappers = [
|
||||
\Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables::class,
|
||||
\Illuminate\Foundation\Bootstrap\LoadConfiguration::class,
|
||||
\Illuminate\Foundation\Bootstrap\HandleExceptions::class,
|
||||
\Illuminate\Foundation\Bootstrap\RegisterFacades::class,
|
||||
\Illuminate\Foundation\Bootstrap\RegisterProviders::class,
|
||||
\Illuminate\Foundation\Bootstrap\BootProviders::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* The application's middleware stack.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middleware = [];
|
||||
|
||||
/**
|
||||
* The application's route middleware groups.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewareGroups = [];
|
||||
|
||||
/**
|
||||
* The application's route middleware.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $routeMiddleware = [];
|
||||
|
||||
/**
|
||||
* The priority-sorted list of middleware.
|
||||
*
|
||||
* Forces non-global middleware to always be in the given order.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $middlewarePriority = [
|
||||
\Illuminate\Session\Middleware\StartSession::class,
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\Illuminate\Contracts\Auth\Middleware\AuthenticatesRequests::class,
|
||||
\Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
\Illuminate\Session\Middleware\AuthenticateSession::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\Illuminate\Auth\Middleware\Authorize::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* Create a new HTTP kernel instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Foundation\Application $app
|
||||
* @param \Illuminate\Routing\Router $router
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Application $app, Router $router)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->router = $router;
|
||||
|
||||
$this->syncMiddlewareToRouter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming HTTP request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function handle($request)
|
||||
{
|
||||
try {
|
||||
$request->enableHttpMethodParameterOverride();
|
||||
|
||||
$response = $this->sendRequestThroughRouter($request);
|
||||
} catch (Throwable $e) {
|
||||
$this->reportException($e);
|
||||
|
||||
$response = $this->renderException($request, $e);
|
||||
}
|
||||
|
||||
$this->app['events']->dispatch(
|
||||
new RequestHandled($request, $response)
|
||||
);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the given request through the middleware / router.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
protected function sendRequestThroughRouter($request)
|
||||
{
|
||||
$this->app->instance('request', $request);
|
||||
|
||||
Facade::clearResolvedInstance('request');
|
||||
|
||||
$this->bootstrap();
|
||||
|
||||
return (new Pipeline($this->app))
|
||||
->send($request)
|
||||
->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
|
||||
->then($this->dispatchToRouter());
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the application for HTTP requests.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function bootstrap()
|
||||
{
|
||||
if (! $this->app->hasBeenBootstrapped()) {
|
||||
$this->app->bootstrapWith($this->bootstrappers());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the route dispatcher callback.
|
||||
*
|
||||
* @return \Closure
|
||||
*/
|
||||
protected function dispatchToRouter()
|
||||
{
|
||||
return function ($request) {
|
||||
$this->app->instance('request', $request);
|
||||
|
||||
return $this->router->dispatch($request);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the terminate method on any terminable middleware.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Illuminate\Http\Response $response
|
||||
* @return void
|
||||
*/
|
||||
public function terminate($request, $response)
|
||||
{
|
||||
$this->terminateMiddleware($request, $response);
|
||||
|
||||
$this->app->terminate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the terminate method on any terminable middleware.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Illuminate\Http\Response $response
|
||||
* @return void
|
||||
*/
|
||||
protected function terminateMiddleware($request, $response)
|
||||
{
|
||||
$middlewares = $this->app->shouldSkipMiddleware() ? [] : array_merge(
|
||||
$this->gatherRouteMiddleware($request),
|
||||
$this->middleware
|
||||
);
|
||||
|
||||
foreach ($middlewares as $middleware) {
|
||||
if (! is_string($middleware)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
[$name] = $this->parseMiddleware($middleware);
|
||||
|
||||
$instance = $this->app->make($name);
|
||||
|
||||
if (method_exists($instance, 'terminate')) {
|
||||
$instance->terminate($request, $response);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gather the route middleware for the given request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
protected function gatherRouteMiddleware($request)
|
||||
{
|
||||
if ($route = $request->route()) {
|
||||
return $this->router->gatherRouteMiddleware($route);
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a middleware string to get the name and parameters.
|
||||
*
|
||||
* @param string $middleware
|
||||
* @return array
|
||||
*/
|
||||
protected function parseMiddleware($middleware)
|
||||
{
|
||||
[$name, $parameters] = array_pad(explode(':', $middleware, 2), 2, []);
|
||||
|
||||
if (is_string($parameters)) {
|
||||
$parameters = explode(',', $parameters);
|
||||
}
|
||||
|
||||
return [$name, $parameters];
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the kernel has a given middleware.
|
||||
*
|
||||
* @param string $middleware
|
||||
* @return bool
|
||||
*/
|
||||
public function hasMiddleware($middleware)
|
||||
{
|
||||
return in_array($middleware, $this->middleware);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new middleware to beginning of the stack if it does not already exist.
|
||||
*
|
||||
* @param string $middleware
|
||||
* @return $this
|
||||
*/
|
||||
public function prependMiddleware($middleware)
|
||||
{
|
||||
if (array_search($middleware, $this->middleware) === false) {
|
||||
array_unshift($this->middleware, $middleware);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new middleware to end of the stack if it does not already exist.
|
||||
*
|
||||
* @param string $middleware
|
||||
* @return $this
|
||||
*/
|
||||
public function pushMiddleware($middleware)
|
||||
{
|
||||
if (array_search($middleware, $this->middleware) === false) {
|
||||
$this->middleware[] = $middleware;
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepend the given middleware to the given middleware group.
|
||||
*
|
||||
* @param string $group
|
||||
* @param string $middleware
|
||||
* @return $this
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function prependMiddlewareToGroup($group, $middleware)
|
||||
{
|
||||
if (! isset($this->middlewareGroups[$group])) {
|
||||
throw new InvalidArgumentException("The [{$group}] middleware group has not been defined.");
|
||||
}
|
||||
|
||||
if (array_search($middleware, $this->middlewareGroups[$group]) === false) {
|
||||
array_unshift($this->middlewareGroups[$group], $middleware);
|
||||
}
|
||||
|
||||
$this->syncMiddlewareToRouter();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append the given middleware to the given middleware group.
|
||||
*
|
||||
* @param string $group
|
||||
* @param string $middleware
|
||||
* @return $this
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function appendMiddlewareToGroup($group, $middleware)
|
||||
{
|
||||
if (! isset($this->middlewareGroups[$group])) {
|
||||
throw new InvalidArgumentException("The [{$group}] middleware group has not been defined.");
|
||||
}
|
||||
|
||||
if (array_search($middleware, $this->middlewareGroups[$group]) === false) {
|
||||
$this->middlewareGroups[$group][] = $middleware;
|
||||
}
|
||||
|
||||
$this->syncMiddlewareToRouter();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepend the given middleware to the middleware priority list.
|
||||
*
|
||||
* @param string $middleware
|
||||
* @return $this
|
||||
*/
|
||||
public function prependToMiddlewarePriority($middleware)
|
||||
{
|
||||
if (! in_array($middleware, $this->middlewarePriority)) {
|
||||
array_unshift($this->middlewarePriority, $middleware);
|
||||
}
|
||||
|
||||
$this->syncMiddlewareToRouter();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append the given middleware to the middleware priority list.
|
||||
*
|
||||
* @param string $middleware
|
||||
* @return $this
|
||||
*/
|
||||
public function appendToMiddlewarePriority($middleware)
|
||||
{
|
||||
if (! in_array($middleware, $this->middlewarePriority)) {
|
||||
$this->middlewarePriority[] = $middleware;
|
||||
}
|
||||
|
||||
$this->syncMiddlewareToRouter();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync the current state of the middleware to the router.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function syncMiddlewareToRouter()
|
||||
{
|
||||
$this->router->middlewarePriority = $this->middlewarePriority;
|
||||
|
||||
foreach ($this->middlewareGroups as $key => $middleware) {
|
||||
$this->router->middlewareGroup($key, $middleware);
|
||||
}
|
||||
|
||||
foreach ($this->routeMiddleware as $key => $middleware) {
|
||||
$this->router->aliasMiddleware($key, $middleware);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the bootstrap classes for the application.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function bootstrappers()
|
||||
{
|
||||
return $this->bootstrappers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Report the exception to the exception handler.
|
||||
*
|
||||
* @param \Throwable $e
|
||||
* @return void
|
||||
*/
|
||||
protected function reportException(Throwable $e)
|
||||
{
|
||||
$this->app[ExceptionHandler::class]->report($e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the exception to a response.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Throwable $e
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function renderException($request, Throwable $e)
|
||||
{
|
||||
return $this->app[ExceptionHandler::class]->render($request, $e);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the application's route middleware groups.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getMiddlewareGroups()
|
||||
{
|
||||
return $this->middlewareGroups;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the application's route middleware.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getRouteMiddleware()
|
||||
{
|
||||
return $this->routeMiddleware;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Laravel application instance.
|
||||
*
|
||||
* @return \Illuminate\Contracts\Foundation\Application
|
||||
*/
|
||||
public function getApplication()
|
||||
{
|
||||
return $this->app;
|
||||
}
|
||||
}
|
||||
86
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php
vendored
Normal file
86
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Foundation\Http\Exceptions\MaintenanceModeException;
|
||||
use Symfony\Component\HttpFoundation\IpUtils;
|
||||
|
||||
class CheckForMaintenanceMode
|
||||
{
|
||||
/**
|
||||
* The application implementation.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Foundation\Application
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* The URIs that should be accessible while maintenance mode is enabled.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [];
|
||||
|
||||
/**
|
||||
* Create a new middleware instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Foundation\Application $app
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Application $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*
|
||||
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
|
||||
* @throws \Illuminate\Foundation\Http\Exceptions\MaintenanceModeException
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if ($this->app->isDownForMaintenance()) {
|
||||
$data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true);
|
||||
|
||||
if (isset($data['allowed']) && IpUtils::checkIp($request->ip(), (array) $data['allowed'])) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
if ($this->inExceptArray($request)) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the request has a URI that should be accessible in maintenance mode.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return bool
|
||||
*/
|
||||
protected function inExceptArray($request)
|
||||
{
|
||||
foreach ($this->except as $except) {
|
||||
if ($except !== '/') {
|
||||
$except = trim($except, '/');
|
||||
}
|
||||
|
||||
if ($request->fullUrlIs($except) || $request->is($except)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
18
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php
vendored
Normal file
18
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Middleware;
|
||||
|
||||
class ConvertEmptyStringsToNull extends TransformsRequest
|
||||
{
|
||||
/**
|
||||
* Transform the given value.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function transform($key, $value)
|
||||
{
|
||||
return is_string($value) && $value === '' ? null : $value;
|
||||
}
|
||||
}
|
||||
93
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
vendored
Normal file
93
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
|
||||
class TransformsRequest
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$this->clean($request);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the request's data.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return void
|
||||
*/
|
||||
protected function clean($request)
|
||||
{
|
||||
$this->cleanParameterBag($request->query);
|
||||
|
||||
if ($request->isJson()) {
|
||||
$this->cleanParameterBag($request->json());
|
||||
} elseif ($request->request !== $request->query) {
|
||||
$this->cleanParameterBag($request->request);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the data in the parameter bag.
|
||||
*
|
||||
* @param \Symfony\Component\HttpFoundation\ParameterBag $bag
|
||||
* @return void
|
||||
*/
|
||||
protected function cleanParameterBag(ParameterBag $bag)
|
||||
{
|
||||
$bag->replace($this->cleanArray($bag->all()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the data in the given array.
|
||||
*
|
||||
* @param array $data
|
||||
* @param string $keyPrefix
|
||||
* @return array
|
||||
*/
|
||||
protected function cleanArray(array $data, $keyPrefix = '')
|
||||
{
|
||||
return collect($data)->map(function ($value, $key) use ($keyPrefix) {
|
||||
return $this->cleanValue($keyPrefix.$key, $value);
|
||||
})->all();
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean the given value.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function cleanValue($key, $value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
return $this->cleanArray($value, $key.'.');
|
||||
}
|
||||
|
||||
return $this->transform($key, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform the given value.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function transform($key, $value)
|
||||
{
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
31
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php
vendored
Normal file
31
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Middleware;
|
||||
|
||||
class TrimStrings extends TransformsRequest
|
||||
{
|
||||
/**
|
||||
* The attributes that should not be trimmed.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
//
|
||||
];
|
||||
|
||||
/**
|
||||
* Transform the given value.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
protected function transform($key, $value)
|
||||
{
|
||||
if (in_array($key, $this->except, true)) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
return is_string($value) ? trim($value) : $value;
|
||||
}
|
||||
}
|
||||
55
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php
vendored
Normal file
55
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Exceptions\PostTooLargeException;
|
||||
|
||||
class ValidatePostSize
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*
|
||||
* @throws \Illuminate\Http\Exceptions\PostTooLargeException
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$max = $this->getPostMaxSize();
|
||||
|
||||
if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) {
|
||||
throw new PostTooLargeException;
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the server 'post_max_size' as bytes.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function getPostMaxSize()
|
||||
{
|
||||
if (is_numeric($postMaxSize = ini_get('post_max_size'))) {
|
||||
return (int) $postMaxSize;
|
||||
}
|
||||
|
||||
$metric = strtoupper(substr($postMaxSize, -1));
|
||||
$postMaxSize = (int) $postMaxSize;
|
||||
|
||||
switch ($metric) {
|
||||
case 'K':
|
||||
return $postMaxSize * 1024;
|
||||
case 'M':
|
||||
return $postMaxSize * 1048576;
|
||||
case 'G':
|
||||
return $postMaxSize * 1073741824;
|
||||
default:
|
||||
return $postMaxSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
210
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
vendored
Normal file
210
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
vendored
Normal file
@@ -0,0 +1,210 @@
|
||||
<?php
|
||||
|
||||
namespace Illuminate\Foundation\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Contracts\Encryption\DecryptException;
|
||||
use Illuminate\Contracts\Encryption\Encrypter;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Support\Responsable;
|
||||
use Illuminate\Cookie\CookieValuePrefix;
|
||||
use Illuminate\Cookie\Middleware\EncryptCookies;
|
||||
use Illuminate\Session\TokenMismatchException;
|
||||
use Illuminate\Support\InteractsWithTime;
|
||||
use Symfony\Component\HttpFoundation\Cookie;
|
||||
|
||||
class VerifyCsrfToken
|
||||
{
|
||||
use InteractsWithTime;
|
||||
|
||||
/**
|
||||
* The application instance.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Foundation\Application
|
||||
*/
|
||||
protected $app;
|
||||
|
||||
/**
|
||||
* The encrypter implementation.
|
||||
*
|
||||
* @var \Illuminate\Contracts\Encryption\Encrypter
|
||||
*/
|
||||
protected $encrypter;
|
||||
|
||||
/**
|
||||
* The URIs that should be excluded from CSRF verification.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [];
|
||||
|
||||
/**
|
||||
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $addHttpCookie = true;
|
||||
|
||||
/**
|
||||
* Create a new middleware instance.
|
||||
*
|
||||
* @param \Illuminate\Contracts\Foundation\Application $app
|
||||
* @param \Illuminate\Contracts\Encryption\Encrypter $encrypter
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(Application $app, Encrypter $encrypter)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->encrypter = $encrypter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*
|
||||
* @throws \Illuminate\Session\TokenMismatchException
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (
|
||||
$this->isReading($request) ||
|
||||
$this->runningUnitTests() ||
|
||||
$this->inExceptArray($request) ||
|
||||
$this->tokensMatch($request)
|
||||
) {
|
||||
return tap($next($request), function ($response) use ($request) {
|
||||
if ($this->shouldAddXsrfTokenCookie()) {
|
||||
$this->addCookieToResponse($request, $response);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
throw new TokenMismatchException('CSRF token mismatch.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the HTTP request uses a ‘read’ verb.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return bool
|
||||
*/
|
||||
protected function isReading($request)
|
||||
{
|
||||
return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the application is running unit tests.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function runningUnitTests()
|
||||
{
|
||||
return $this->app->runningInConsole() && $this->app->runningUnitTests();
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the request has a URI that should pass through CSRF verification.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return bool
|
||||
*/
|
||||
protected function inExceptArray($request)
|
||||
{
|
||||
foreach ($this->except as $except) {
|
||||
if ($except !== '/') {
|
||||
$except = trim($except, '/');
|
||||
}
|
||||
|
||||
if ($request->fullUrlIs($except) || $request->is($except)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the session and input CSRF tokens match.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return bool
|
||||
*/
|
||||
protected function tokensMatch($request)
|
||||
{
|
||||
$token = $this->getTokenFromRequest($request);
|
||||
|
||||
return is_string($request->session()->token()) &&
|
||||
is_string($token) &&
|
||||
hash_equals($request->session()->token(), $token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the CSRF token from the request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return string
|
||||
*/
|
||||
protected function getTokenFromRequest($request)
|
||||
{
|
||||
$token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');
|
||||
|
||||
if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
|
||||
try {
|
||||
$token = CookieValuePrefix::remove($this->encrypter->decrypt($header, static::serialized()));
|
||||
} catch (DecryptException $e) {
|
||||
$token = '';
|
||||
}
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the cookie should be added to the response.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function shouldAddXsrfTokenCookie()
|
||||
{
|
||||
return $this->addHttpCookie;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the CSRF token to the response cookies.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Symfony\Component\HttpFoundation\Response $response
|
||||
* @return \Symfony\Component\HttpFoundation\Response
|
||||
*/
|
||||
protected function addCookieToResponse($request, $response)
|
||||
{
|
||||
$config = config('session');
|
||||
|
||||
if ($response instanceof Responsable) {
|
||||
$response = $response->toResponse($request);
|
||||
}
|
||||
|
||||
$response->headers->setCookie(
|
||||
new Cookie(
|
||||
'XSRF-TOKEN', $request->session()->token(), $this->availableAt(60 * $config['lifetime']),
|
||||
$config['path'], $config['domain'], $config['secure'], false, false, $config['same_site'] ?? null
|
||||
)
|
||||
);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the cookie contents should be serialized.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function serialized()
|
||||
{
|
||||
return EncryptCookies::serialized('XSRF-TOKEN');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user