feat: sync with appro table

This commit is contained in:
2025-09-22 12:29:20 +03:30
parent 919ec2ada6
commit 6ab690be27
+46 -3
View File
@@ -85,7 +85,44 @@ public function loginV2(Request $request)
]; ];
} }
private function syncUserFromStatus(array $response, ?User $user = null): User
{
// Try to find user if not passed
if (!$user) {
if (!empty($response['uuid'])) {
$user = User::where('identifier', $response['uuid'])->first();
}
if (!$user && !empty($response['email'])) {
$user = User::where('email', $response['email'])->first();
}
}
$mobile = $response['mobile'] ?? null;
if ($mobile && User::where('mobile', $mobile)->where('id', '!=', $user?->id)->exists()) {
$mobile = null; // avoid duplicate
}
if (!$user) {
// create new
$user = User::create([
'email' => $response['email'],
'identifier' => $response['uuid'] ?? null,
'password' => config('app.default_password'),
'mobile' => $mobile,
'first_name' => $response['first_name'] ?? null,
'last_name' => $response['last_name'] ?? null,
]);
} else {
// update existing
$user->first_name = $response['first_name'] ?? $user->first_name;
$user->last_name = $response['last_name'] ?? $user->last_name;
$user->mobile = $mobile ?? $user->mobile;
$user->save();
}
return $user;
}
public function loginForeginer(Request $request) public function loginForeginer(Request $request)
{ {
@@ -435,8 +472,14 @@ public function updateProfile(Request $request)
public function profile() public function profile()
{ {
$user = auth()->user()->load(['breathingSessions.template']); $user = auth()->user();
$response = Http::acceptJson()->withToken($request->bearerToken())->get('https://api.approagency.ir/api/status', [
'package_name' => $request->get('package_name') // you may need to pass it from frontend
]);
if ($response->successful()) {
$user = $this->syncUserFromStatus($response->json(), $user);
}
return response()->json([ return response()->json([
'user' => $user 'user' => $user
]); ]);