Я пытаюсь создать приложение Laravel, и я хотел бы добавить функцию блокировки экрана, и я искал в Google, чтобы увидеть, как это работает,
И я нахожу этот красивый и простой учебник GitHub: laravel-auth-lock-screen
Но похоже, что в коде что-то не так, Может кто-нибудь мне помочь, пожалуйста!
Ошибка
После истечения времени ожидания сеанса приложение перенаправляет меня на корректный маршрут «вход в систему / заблокирован», но браузер показывает, что localhost перенаправляет вас слишком много раз. 'ERR_TOO_MANY_REDIRECTS'
Маршрут \ web.php
<?php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::get('login/locked', 'Auth\LoginController@locked')->middleware('auth')->name('login.locked');
Route::post('login/locked', 'Auth\LoginController@unlock')->name('login.unlock');
LoginController
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except([
'logout',
'locked',
'unlock'
]);
}
public function locked()
{
if(!session('lock-expires-at')){
return redirect('/');
}
if(session('lock-expires-at') > now()){
return redirect('/');
}
return view('auth.locked');
}
public function unlock(Request $request)
{
$check = Hash::check($request->input('password'), $request->user()->password);
if(!$check){
return redirect()->route('login.locked')->withErrors([
'Your password does not match your profile.'
]);
}
session(['lock-expires-at' => now()->addMinutes($request->user()->getLockoutTime())]);
return redirect('/');
}
}
Middleware
<?php
namespace App\Http\Middleware;
use Closure;
class AuthLock
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!$request->user()){
return $next($request);
}
// If the user does not have this feature enabled, then just return next.
if (!$request->user()->hasLockoutTime()) {
// Check if previous session was set, if so, remove it because we don't need it here.
if (session('lock-expires-at')) {
session()->forget('lock-expires-at');
}
return $next($request);
}
if ($lockExpiresAt = session('lock-expires-at')) {
if ($lockExpiresAt < now()) {
return redirect()->route('login.locked');
}
}
session(['lock-expires-at' => now()->addMinutes($request->user()->getLockoutTime())]);
return $next($request);
}
}
Модель пользователя
use LockableTrait;
Спасибо.