diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index e4d2622..ee2638d 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -499,46 +499,60 @@ public function googleLogin(Request $request) $data = $request->validate([ 'access_token' => 'string|required', 'package_name' => 'string|required', - 'source' => [Rule::in(PackageName::SOURCES), 'integer'] ]); - + if (!$packageName = PackageName::where('name', $data['package_name'])->first()) { return response()->json([ 'message' => 'package name not found' ], 404); } - + $response = Http::get("https://www.googleapis.com/oauth2/v3/userinfo", [ 'access_token' => $data['access_token'] ])->json(); - + if (!isset($response['email'])) { return response()->json([ 'message' => 'invalid token' ], 400); } - if (!$user = User::where('email', $response['email'])->first()) { + + $user = User::where('email', $response['email'])->first(); + + if (!$user) { $user = User::create([ 'email' => $response['email'], 'first_name' => $response['given_name'] ?? null, 'last_name' => $response['family_name'] ?? null, 'password' => config('app.default_password'), + '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, ]); + } 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; - + return response()->json([ 'user' => $user, 'token' => $token, ]); } + }