feat: sync with appro table
This commit is contained in:
@@ -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)
|
||||
{
|
||||
@@ -435,8 +472,14 @@ public function updateProfile(Request $request)
|
||||
|
||||
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([
|
||||
'user' => $user
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user