Я создаю Laravel Приложение. У меня есть 3 типа пользователей
Одиночный: Можно войти в систему на одном браузере / устройстве
Двойной: Можно войти в систему на двух браузерах / устройствах
Несколько: Можно войти на пять браузеров / устройств
Я использую Laravel База данных сеансов для отслеживания
Вот как выглядит мой код
public function authenticated(Request $request, User $user)
{
if(Auth::check())
{ //check if the user is logged in or not
$user = Auth::user();
// $login = Session::where('user_id', Auth::id())->count();
$login = DB::table('sessions')->where('user_id', Auth::id())->count();
// dd($login);
if ($user->isSingle())
{
if ($login > 0)
{
Auth::logout();
session()->flash('logout', "You are Logged in on other devices");
return redirect('login');
}
return redirect(route('welcome'));
}
elseif ($user->isDouble())
{
if ($login > 1)
{
Auth::logout();
session()->flash('logout', "You are Logged in on other devices");
return redirect('login');
}
return redirect(route('welcome'));
}
elseif ($user->isMultipe())
{
if ($login > 5)
{
Auth::logout();
session()->flash('logout', "You are Logged in on other devices");
return redirect('login');
}
return redirect(route('welcome'));
}
}
else
{
return redirect(route('welcome'));
}
}
Это схема для таблицы сеансов
Schema::create('sessions', function ($table) {
$table->string('id')->unique();
$table->unsignedInteger('user_id')->nullable();
$table->string('ip_address', 45)->nullable();
$table->text('user_agent')->nullable();
$table->text('payload');
$table->integer('last_activity');
});
Когда пользователь выходит из системы, user_id превращается в ноль, что идеально.
Но когда пользователь выходит из системы из-за неактивности какое-то время, user_id не обнуляется, пока через пару часов.
Мой вопрос: как я могу убедиться, что когда сеанс завершается либо из-за выхода из системы, либо из-за неактивности (когда приложение выводит пользователя из системы), столбец user_id в базе данных сеанса становится пустым?