
php artisan migrate
Параметры для создания таблиц уже указаны в файлах из папки migrations. В результате в базе данных будут созданы три таблицы: migrations / password_resets / users.
Далее, в проекте нам нужно установить аутентификацию из коробки. Делается это с помощью команды:
php artisan make:auth
После чего в браузере вы можете увидеть следующую картинку:

Route::post('logout-others', function (Request $request) {
if(Hash::check($request["password"], $request->user()->getAuthPassword())) {
auth()->logoutOtherDevices($request["password"]);
return redirect('/home')->with('status', 'Вышли на других устройствах');
}
else {
return redirect('/home')->with('warning', 'Пароль не совпадает с текущим');
}
});
Этот код отрабатывает, когда пользователь нажимает кнопку выхода на других устройствах. Здесь $request["password"] - это пароль пользователя, который он вводит перед тем как нажать на кнопку выхода на других устройствах. Обратите внимание, что здесь мы проверяем совпадает ли введенный пользователем пароль с сохраненным в БД паролем. Почему мы это делаем? А потому что без этой проверки функция logoutOtherDevices() перезапишет текущий пароль на введенный пользователем. То есть если пользователь введет свой же пароль с опечаткой и потом разлогинется на сайте, то уже не сможет зайти под своим старым паролем.
Также не забудьте в начале файла добавить строчку:
use Illuminate\Http\Request;
Далее в файле app/Http/Kernel.php найдите группу 'web' => [ … ] и в ней раскомментируйте строчку:
\Illuminate\Session\Middleware\AuthenticateSession::class,
Теперь нам осталось добавить форму для выхода на других устройствах на домашней странице пользователя.
Откроем файл вида home.blade.php (папка /resources/views). И в блок добавим следующее содержимое:
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
@if (session('warning'))
<div class="alert alert-warning" role="alert">
{{ session('warning') }}
</div>
@endif
<form method="POST" action="{{ url('logout-others') }}">
@csrf
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Пароль') }}</label>
<div class="col-md-6">
<input class="form-control" id="password" type="password" name="password" required>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Выйти на других устройствах') }}
</button>
</div>
</div>
</form>
Здесь вначале идет вывод сообщения об успешном выходе на других устройствах и сообщения о несовпадении введенных паролей. Каждое из них выводится в зависимости от полученных данных из формы: если введенный пароль совпадает с текущим, то выводится первое сообщение, если не совпадает, то выводится второе. А далее идет форма с полем для ввода пароля и с кнопкой отправки пароля на сервер.
На этом все. Можно попробовать открыть сайт в разных браузерах и проверить результат своей работы.
Оставьте свой комментарий
Комментариев нет