From a6f41ed6f8ed31bac102ae800b670df766913584 Mon Sep 17 00:00:00 2001 From: AmirmahdiNourkazemi Date: Tue, 23 Jun 2026 17:36:20 +0330 Subject: [PATCH] fix --- app/Http/Controllers/UserController.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 3983779..5376763 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -43,11 +43,17 @@ public function loginV2(Request $request) if (!empty($response['uuid'])) { $user = User::where('identifier', $response['uuid'])->first(); } - - // If not found, try by email - if (!$user) { + + // Then by email — only when an email exists. (where('email', null) would + // match an arbitrary mobile-only user and cross-link the wrong account.) + if (!$user && !empty($response['email'])) { $user = User::where('email', $response['email'])->first(); } + + // Finally by mobile, so mobile-only users reconnect to their account + if (!$user && !empty($response['mobile'])) { + $user = User::where('mobile', $response['mobile'])->first(); + } $mobile = $response['mobile'] ?? null; // If mobile already exists, set it null to avoid duplicate error @@ -68,6 +74,9 @@ public function loginV2(Request $request) ]); } else { // Only update name and mobile for existing user + // Keep the local identifier aligned with the current approagency uuid + // (e.g. when the user was matched by mobile, not identifier). + $user->identifier = $response['uuid'] ?? $user->identifier; $user->first_name = $response['first_name'] ?? $user->first_name; $user->last_name = $response['last_name'] ?? $user->last_name; // $user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')); @@ -106,6 +115,9 @@ private function syncUserFromStatus(array $response, ?User $user = null): User if (!$user && !empty($response['email'])) { $user = User::where('email', $response['email'])->first(); } + if (!$user && !empty($response['mobile'])) { + $user = User::where('mobile', $response['mobile'])->first(); + } } $mobile = $response['mobile'] ?? null; @@ -127,6 +139,7 @@ private function syncUserFromStatus(array $response, ?User $user = null): User ]); } else { // update existing + $user->identifier = $response['uuid'] ?? $user->identifier; $user->first_name = $response['first_name'] ?? $user->first_name; $user->last_name = $response['last_name'] ?? $user->last_name; $user->mobile = $mobile ?? $user->mobile;