This commit is contained in:
2026-06-23 17:36:20 +03:30
parent 1a0645daef
commit a6f41ed6f8
+16 -3
View File
@@ -43,11 +43,17 @@ public function loginV2(Request $request)
if (!empty($response['uuid'])) { if (!empty($response['uuid'])) {
$user = User::where('identifier', $response['uuid'])->first(); $user = User::where('identifier', $response['uuid'])->first();
} }
// If not found, try by email // Then by email — only when an email exists. (where('email', null) would
if (!$user) { // match an arbitrary mobile-only user and cross-link the wrong account.)
if (!$user && !empty($response['email'])) {
$user = User::where('email', $response['email'])->first(); $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; $mobile = $response['mobile'] ?? null;
// If mobile already exists, set it null to avoid duplicate error // If mobile already exists, set it null to avoid duplicate error
@@ -68,6 +74,9 @@ public function loginV2(Request $request)
]); ]);
} else { } else {
// Only update name and mobile for existing user // 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->first_name = $response['first_name'] ?? $user->first_name;
$user->last_name = $response['last_name'] ?? $user->last_name; $user->last_name = $response['last_name'] ?? $user->last_name;
// $user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['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'])) { if (!$user && !empty($response['email'])) {
$user = User::where('email', $response['email'])->first(); $user = User::where('email', $response['email'])->first();
} }
if (!$user && !empty($response['mobile'])) {
$user = User::where('mobile', $response['mobile'])->first();
}
} }
$mobile = $response['mobile'] ?? null; $mobile = $response['mobile'] ?? null;
@@ -127,6 +139,7 @@ private function syncUserFromStatus(array $response, ?User $user = null): User
]); ]);
} else { } else {
// update existing // update existing
$user->identifier = $response['uuid'] ?? $user->identifier;
$user->first_name = $response['first_name'] ?? $user->first_name; $user->first_name = $response['first_name'] ?? $user->first_name;
$user->last_name = $response['last_name'] ?? $user->last_name; $user->last_name = $response['last_name'] ?? $user->last_name;
$user->mobile = $mobile ?? $user->mobile; $user->mobile = $mobile ?? $user->mobile;