all(), [ 'login' => 'required', 'password' => 'required', ]); $login = Str::lower($request->login); $password = $request->password; if ($validator->fails()) { return back()->withErrors([ $validator->errors() ]); } $credentials = [ 'login' => $login, 'password' => $password, ]; if (!Auth::attempt($credentials)) { return back()->withErrors([ 'Неверный логин или пароль' ]); } $user = User::where('login', $login)->first(); if (!$user->is_active) { Auth::logout(); return back()->withErrors([ 'Учетная запись отключена' ]); } $request->session()->regenerate(); $tokenName = $request->session()->getId(); $token = $user->createToken($tokenName, ['*'], now()->addYears(5))->plainTextToken; $request->session()->put('token', $token); return Inertia::location(route('start')); } public function changeRole(Request $request) { $user = Auth::user(); if (!$user) return null; $data = $request->validate([ 'role_id' => 'required|integer|exists:roles,role_id' ]); $sessionId = session()->getId(); $token = $user->tokens()->where('name', $sessionId)->first(); if ($token) { $token->abilities = ['role:' . $request->role_id]; $token->save(); } DB::table('sessions') ->where('id', $sessionId) ->update(['role_id' => $request->role_id]); // $sessionKey = 'user_' . $user->id . '_current_role'; // // $user->current_role_id = $data['role_id']; // $user->save(); return redirect()->route('start')->setStatusCode(302); } public function logout(Request $request) { $user = Auth::user(); if ($user) { $tokenName = $request->session()->getId(); // Удаляем все токены пользователя $user->tokens()->where('name', $tokenName)->delete(); // Очищаем сессию $request->session()->invalidate(); $request->session()->regenerateToken(); } return redirect()->route('login'); } }