input('telephone_id'); $user = User::where('username', $request->username)->first(); if ($user->is_online && !empty($user->telephone_id)) { return $this->errorResponse(__('messages.user_already_online'), 409); // 409 Conflict } if (!empty($inputTelephoneId)) { $previousUserOnThisSystem = User::where('telephone_id', $inputTelephoneId) ->where('is_online', false) ->first(); if ($previousUserOnThisSystem) { DB::table('sessions') ->where('user_id', $previousUserOnThisSystem->id) ->delete(); } } if ($this->attemptLogin($request)) { $request->session()->regenerate(); $this->updateUserInfo($request); return $this->successResponse(); } return $this->errorResponse(__('messages.invalid_credentials')); } protected function attemptLogin(Request $request): bool { return Auth::guard()->attempt($request->only('username', 'password')); } protected function updateUserInfo(Request $request): void { Auth::user()->update([ 'last_login' => now(), 'telephone_id' => $request->telephone_id, 'is_online' => true ]); DB::table('sessions') ->where('user_id', Auth::id()) ->where('id', '!=', Session::getId()) ->delete(); } public function logout(Request $request): JsonResponse { Auth::user()->update([ 'telephone_id' => null, ]); Auth::guard()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return $this->successResponse(); } }