fix: login with google fixed

This commit is contained in:
2025-09-16 13:09:55 +03:30
parent 3d12655cd6
commit 04bbcb831a
+25 -11
View File
@@ -499,46 +499,60 @@ public function googleLogin(Request $request)
$data = $request->validate([ $data = $request->validate([
'access_token' => 'string|required', 'access_token' => 'string|required',
'package_name' => 'string|required', 'package_name' => 'string|required',
'source' => [Rule::in(PackageName::SOURCES), 'integer']
]); ]);
if (!$packageName = PackageName::where('name', $data['package_name'])->first()) { if (!$packageName = PackageName::where('name', $data['package_name'])->first()) {
return response()->json([ return response()->json([
'message' => 'package name not found' 'message' => 'package name not found'
], 404); ], 404);
} }
$response = Http::get("https://www.googleapis.com/oauth2/v3/userinfo", [ $response = Http::get("https://www.googleapis.com/oauth2/v3/userinfo", [
'access_token' => $data['access_token'] 'access_token' => $data['access_token']
])->json(); ])->json();
if (!isset($response['email'])) { if (!isset($response['email'])) {
return response()->json([ return response()->json([
'message' => 'invalid token' 'message' => 'invalid token'
], 400); ], 400);
} }
if (!$user = User::where('email', $response['email'])->first()) {
$user = User::where('email', $response['email'])->first();
if (!$user) {
$user = User::create([ $user = User::create([
'email' => $response['email'], 'email' => $response['email'],
'first_name' => $response['given_name'] ?? null, 'first_name' => $response['given_name'] ?? null,
'last_name' => $response['family_name'] ?? null, 'last_name' => $response['family_name'] ?? null,
'password' => config('app.default_password'), 'password' => config('app.default_password'),
'email_verified_at' => now(),
]); ]);
}
if (!$user->packageNames()->where('package_names.id', $packageName->id)->exists()) {
$user->packageNames()->attach($packageName->id, [ $user->packageNames()->attach($packageName->id, [
'tries' => $packageName->tries, 'tries' => $packageName->tries,
'source' => $data['source'] ?? 0, 'source' => $data['source'] ?? 0,
]); ]);
} else {
if (!$user->email_verified_at) {
$user->update([
'email_verified_at' => now(),
]);
}
if (!$user->packageNames()->where('package_names.id', $packageName->id)->exists()) {
$user->packageNames()->attach($packageName->id, [
'tries' => $packageName->tries,
'source' => $data['source'] ?? 0,
]);
}
} }
$token = $user->createToken('token', ['user'])->plainTextToken; $token = $user->createToken('token', ['user'])->plainTextToken;
return response()->json([ return response()->json([
'user' => $user, 'user' => $user,
'token' => $token, 'token' => $token,
]); ]);
} }
} }