diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 77dcf09..f271286 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -32,7 +32,6 @@ public function loginV2(Request $request) $response = Http::acceptJson()->withToken($data['token'])->get('https://api.approagency.ir/api/status', [ 'package_name' => $request['package_name'] ]); - if (!$response->successful()) { return response()->json(['message' => 'invalid token'], 401); } @@ -49,22 +48,28 @@ public function loginV2(Request $request) if (!$user) { $user = User::where('email', $response['email'])->first(); } - + $mobile = $response['mobile'] ?? null; + + // If mobile already exists, set it null to avoid duplicate error + if ($mobile && User::where('mobile', $mobile)->where('id', '!=', $user?->id)->exists()) { + $mobile = null; + } // If user still doesn't exist, create new if (!$user) { - $user = User::create([ - 'email' => $response['email'], - 'identifier' => $response['uuid'] ?? null, - 'password' => config('app.default_password'), - 'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')), - 'mobile' => $response['mobile'] ?? null, - ]); - } else { - // Only update name and mobile for existing user - $user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')); - $user->mobile = $response['mobile'] ?? $user->mobile; - $user->save(); // Do NOT update identifier! - } + $user = User::create([ + 'email' => $response['email'], + 'identifier' => $response['uuid'] ?? null, + 'password' => config('app.default_password'), + 'name' => trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')), + 'mobile' => $mobile, + ]); + } else { + // Only update name and mobile for existing user + $user->name = trim(($response['first_name'] ?? '') . ' ' . ($response['last_name'] ?? '')); + $user->mobile = $mobile ?? $user->mobile; + $user->save(); + } + $access_token = $user->createToken('user')->plainTextToken; @@ -556,4 +561,12 @@ public function googleLogin(Request $request) 'token' => $token, ]); } + + public function leaderBoard(){ + $users = User::where('xp', '>', 0) + ->orderBy('xp', 'desc') + ->get(); + + return $users; + } } diff --git a/routes/api.php b/routes/api.php index db3a3a7..a9deeb7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -58,7 +58,9 @@ // --------- user profile Route::post('/profile', [UserController::class, 'updateProfile']); Route::get('/profile', [UserController::class, 'profile']); - + + ////-- leader board + Route::get('/leader-board', [UserController::class, 'leaderBoard']); ///-- mood routes