Laravel вернуться посмотреть на middleWare - PullRequest
0 голосов
/ 18 мая 2018

в laravel я пытаюсь проверить пользовательский столбец active, и если его 0, то должен быть показан простой вид как your account is disable, после реализации приведенных ниже кодов я получаю эту ошибку:

Call to a member function setCookie() on null

мое промежуточное ПО:

class CheckUserActive
{
    public function handle($request, Closure $next)
    {
        if (auth()->check()) {
            if (auth()->user()->active == 0) {
                auth()->logout();
                $message = 'your account is disable';
                return view('layouts.frontend.pages.user-messages', compact('message'));
            }
        }
        return $next($request);
    }
}

kernel.php:

...
    protected $middlewareGroups = [
        'web' => [
            ...
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \App\Http\Middleware\CheckUserActive::class,

        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];
...

user-messages.blade.php:

@extends('layouts.frontend.main')

@section('content')
    <div class="content-wrapper">
        <div class="container">
            <div class="row">
                <div class="col-md-8 col-md-offset-2">
                    <div class="panel panel-default">
                        <div class="panel-body">
                            <p style="text-align: center;">
                                {!! $message !!}
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>
@endsection

Ответы [ 5 ]

0 голосов
/ 14 июня 2019

Эта работа для возврата из промежуточного программного обеспечения

return new response(view('view.path'));
0 голосов
/ 09 августа 2018

на основе документации, вы можете получить доступ к просмотру, используя response()->view('custom');

0 голосов
/ 18 мая 2018

Вы пытались удалить:

$response->header->setCookie(...);

и изменить с помощью:

$response->withCookie(..your cookie here...);

Посмотрите на эту запись

0 голосов
/ 18 мая 2018

Вы должны попробовать это:

use Auth;

class CheckUserActive
{
    public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            if (Auth::user()->active == 0) {
                Auth::logout();
                $message = 'your account is disable';
                return view('layouts.frontend.pages.user-messages', compact('message'));
            }
        }
        return $next($request);
    }
}
0 голосов
/ 18 мая 2018

Вы не должны использовать промежуточное ПО для возврата вида, скорее используйте его для перенаправления на маршрут, а затем верните представление с вашего контроллера.

В вашем промежуточном ПО:

use Auth;

class CheckUserActive
{
    public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            if (Auth::User()->active == 0) {
                Auth::logout();
                retrun redirect()->route('redirect-route');
            }
        }
        return $next($request);
    }
}

Создайте новый маршрут:

Route::get('/', [
        'as' => 'redirect-route',
        'uses' => 'PageController@redirectFunction',
    ]);

Теперь создайте функцию в вашем контроллере:

public function redirectFunction() 
{ 
    $message = 'your account is disable';
    return view('layouts.frontend.pages.user-messages', compact('message'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...