From 4997f8a590be964618e29da760e64266006dde5c Mon Sep 17 00:00:00 2001 From: joddyabott Date: Wed, 2 Jul 2025 17:31:30 +0330 Subject: [PATCH 1/3] chamge position login and improved --- app/Http/Controllers/AuthController.php | 31 +++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 2736a87..235287c 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -8,6 +8,8 @@ use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Session; class AuthController extends Controller { @@ -15,7 +17,28 @@ class AuthController extends Controller public function login(LoginRequest $request): JsonResponse { - if ($this->attemptLogin($request)) + $inputTelephoneId = $request->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); @@ -35,9 +58,13 @@ class AuthController extends Controller 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([ From 2e499c782de31bf364d99fbdeac59d9588e47fa1 Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 7 Jul 2025 09:39:22 +0330 Subject: [PATCH 2/3] change login code for auth --- app/Http/Controllers/AuthController.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 235287c..82ee9e0 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -17,28 +17,28 @@ class AuthController extends Controller public function login(LoginRequest $request): JsonResponse { - $inputTelephoneId = $request->input('telephone_id'); - $user = User::where('username', $request->username)->first(); + $telephoneId = $user->telephone_id; - if ($user->is_online && !empty($user->telephone_id)) { - return $this->errorResponse(__('messages.user_already_online'), 409); // 409 Conflict + if ($user->is_online) { + return $this->errorResponse(__('messages.user_already_online'), 409); } - if (!empty($inputTelephoneId)) { - $previousUserOnThisSystem = User::where('telephone_id', $inputTelephoneId) + + if ($telephoneId) { + $previousOfflineUser = User::where('telephone_id', $telephoneId) + ->where('id', '!=', $user->id) ->where('is_online', false) ->first(); - if ($previousUserOnThisSystem) { + if ($previousOfflineUser) { DB::table('sessions') - ->where('user_id', $previousUserOnThisSystem->id) + ->where('user_id', $previousOfflineUser->id) ->delete(); } } - - if ($this->attemptLogin($request)) + if ($this->attemptLogin($request)) { $request->session()->regenerate(); $this->updateUserInfo($request); From 4ebaf67a435dc51b58039c2971aaa44227777a8e Mon Sep 17 00:00:00 2001 From: joddyabott Date: Mon, 7 Jul 2025 11:52:23 +0330 Subject: [PATCH 3/3] change login code for auth login --- app/Http/Controllers/AuthController.php | 30 +------------------------ app/Http/Requests/Auth/LoginRequest.php | 2 +- 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 82ee9e0..f9a7ab6 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -4,12 +4,9 @@ namespace App\Http\Controllers; use App\Http\Requests\Auth\LoginRequest; use App\Http\Traits\ApiResponse; -use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Session; class AuthController extends Controller { @@ -17,27 +14,6 @@ class AuthController extends Controller public function login(LoginRequest $request): JsonResponse { - $user = User::where('username', $request->username)->first(); - $telephoneId = $user->telephone_id; - - if ($user->is_online) { - return $this->errorResponse(__('messages.user_already_online'), 409); - - } - - if ($telephoneId) { - $previousOfflineUser = User::where('telephone_id', $telephoneId) - ->where('id', '!=', $user->id) - ->where('is_online', false) - ->first(); - - if ($previousOfflineUser) { - DB::table('sessions') - ->where('user_id', $previousOfflineUser->id) - ->delete(); - } - } - if ($this->attemptLogin($request)) { $request->session()->regenerate(); @@ -58,13 +34,9 @@ class AuthController extends Controller 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([ diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php index a2cd90f..b1de752 100644 --- a/app/Http/Requests/Auth/LoginRequest.php +++ b/app/Http/Requests/Auth/LoginRequest.php @@ -14,7 +14,7 @@ class LoginRequest extends FormRequest */ public function authorize(): bool { - return true; + return !User::query()->where('username', '=', $this->username)->value('is_online'); } /**