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

namespace IlluminateAuthMiddleware;

use 
Closure;
use 
IlluminateContractsAuthAccessGate;
use 
IlluminateDatabaseEloquentModel;

class 
Authorize
{
    
/**
     * The gate instance.
     *
     * @var IlluminateContractsAuthAccessGate
     */
    
protected $gate;

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

    
/**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @param  string  $ability
     * @param  array|null  ...$models
     * @return mixed
     *
     * @throws IlluminateAuthAuthenticationException
     * @throws IlluminateAuthAccessAuthorizationException
     */
    
public function handle($requestClosure $next$ability, ...$models)
    {
        
$this->gate->authorize($ability$this->getGateArguments($request$models));

        return 
$next($request);
    }

    
/**
     * Get the arguments parameter for the gate.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  array|null  $models
     * @return IlluminateDatabaseEloquentModel|array|string
     */
    
protected function getGateArguments($request$models)
    {
        if (
is_null($models)) {
            return [];
        }

        return 
collect($models)->map(function ($model) use ($request) {
            return 
$model instanceof Model $model $this->getModel($request$model);
        })->
all();
    }

    
/**
     * Get the model to authorize.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  string  $model
     * @return IlluminateDatabaseEloquentModel|string
     */
    
protected function getModel($request$model)
    {
        if (
$this->isClassName($model)) {
            return 
trim($model);
        } else {
            return 
$request->route($modelnull) ??
                ((
preg_match("/^['"](.*)['"]$/", trim($model), $matches)) ? $matches[1] : null);
        }
    }

    /**
     * Checks if the given string looks like a fully qualified class name.
     *
     * @param  string  $value
     * @return bool
     */
    protected function isClassName($value)
    {
        return str_contains($value, '
\');
    }
}
Онлайн: 0
Реклама