Laravel Custom Exception дает мне неопределенное свойство :: $ headers - PullRequest
0 голосов
/ 06 декабря 2018

Я сейчас работаю над исключением в laravel, которое демонстрирует странное поведение, которого я раньше не видел и не могу найти много информации.Я получаю это сообщение об ошибке Неопределенное свойство: App \ Exceptions \ UserNotApproved :: $ headers.Не уверен, что происходит.

<?php

namespace App\Exceptions;

use Exception;

class UserNotApproved extends Exception
{
    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        parent::report($exception);
    }

    /**
     * Render the exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request
     * @return \Illuminate\Http\Response
     */
    public function render($request)
    {
        return response()->view('errors.not_approved',['exception'=>$this],403);
    }
}


/var/www/epg_intranet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php

$ response-> headers-> setCookie в строке 159

<?php

namespace App\Http\Middleware;

use App\Exceptions\UserNotApproved;
use App\User;
use Closure;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;

class VerifyUserApproval
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::check() && Auth::user()->user_type == null){
            return new UserNotApproved();
        }
        return $next($request);
    }
}

Я вызываю это в промежуточном программном обеспечении.Что, может быть связано с ошибкой?

1 Ответ

0 голосов
/ 06 декабря 2018
public function handle($request, Closure $next)
{
    if (Auth::check() && Auth::user()->user_type == null){
        return new UserNotApproved();
    }
    return $next($request);
}

Промежуточное программное обеспечение должно принимать ответ, смотреть на него и что-то делать, а затем возвращать ответ, чтобы следующее промежуточное программное обеспечение могло также выполнить свою работу.Возвращение класса UserNotApproved вызывает эту ошибку, поскольку следующее промежуточное ПО не получает объект запроса.

Вы можете сделать что-то вроде этого:

public function handle($request, Closure $next) {
    if (Auth::check() && Auth::user()->user_type == null) {
        abort(400, 'User not approved.');
    }
    return $next($request);
}

Вы можете сделать этоа также

public function handle($request, Closure $next) {
    if (Auth::check() && Auth::user()->user_type == null) {
        throw new UserNotApproved();
    }
    return $next($request);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...