проверка того, изменился ли статус учетной записи пользователя, и выход из него, если он был установлен в неактивное состояние администратором в laravel

проверка того, изменился ли статус учетной записи пользователя, и выход из него, если он был установлен в неактивное состояние администратором в laravel

26.06.2020 05:57:03 Источник

Я хочу знать, есть ли правильный способ сделать это, скажем, я администратор на своем сайте, и пользователь просматривает сайт, уже вошедший в систему, и я захожу и устанавливаю статус своей учетной записи на 2 (в активном состоянии)

1 = Active
2 = In Active
3 = Terminated

Laravel не проверяет автоматически, поэтому мне нужно было бы создать, Я предполагаю промежуточное программное обеспечение, но я не уверен, как писать код для моих 2 разных охранников (admin и web). С помощью моей функции входа в систему я использую документацию laravel для проверки, если статус равен 1, так что мне уже не нужно беспокоиться о том, что они снова войдут в систему, но если их сеанс уже запущен, мне нужно закончить его, и я предполагаю, что запускаю промежуточное программное обеспечение на каждой проверке HTTP-запроса и вижу, используется ли оба или только 1 guard, а затем проверяю его статус. если он активен, то ничего не делает, если он установлен в Active (2) или Terminated(3), то нам нужно выйти из системы. Может ли кто-нибудь дать мне начало?

У вопроса есть решение - Посмотреть?

Ответы - проверка того, изменился ли статус учетной записи пользователя, и выход из него, если он был установлен в неактивное состояние администратором в laravel / checking if user account status has changed and logging them out if its been set to inactive by admin in laravel

Digvijay

26.06.2020 06:26:23

Я лично никогда не пробовал этого, но всегда бывает первый раз. Вы находитесь на правильном пути, чтобы поместить этот код в промежуточное программное обеспечение.

php artisan make:middleware CheckUserStatus

Добавьте вновь созданную середину в ваше приложение / Http / ядро.РНР

protected $routeMiddleware = [
    .
    .
    'status' => \App\Http\Middleware\CheckUserStatusMiddleware::class
]

Внутри вашего CheckUserStatusMiddleware

public function handle($request, Closure $next, $redirectToRoute = null)
{
    if ($request->user() && $request->user()->status != 1) {
        auth()->logout();
        return abort(403, 'Your status is not active anymore.');
    }

    return $next($request);
}

Наконец, добавьте промежуточное программное обеспечение к вашему вызову маршрута

Route::get('/', 'HomeController@index')->middleware('status');
Закрыть X