]> _ Git - cubist_socialite.git/commitdiff
wip #4765
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 8 Oct 2021 17:07:39 +0000 (19:07 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 8 Oct 2021 17:07:39 +0000 (19:07 +0200)
src/Http/Controllers/SocialiteController.php

index 09128a729de0e79a5eebf5f781ab5094265b29a2..7ffd98a042b2be7ac78ee90f3f56c612474378a7 100644 (file)
@@ -31,12 +31,37 @@ class SocialiteController extends Controller
     {
         $provider = request()->provider;
         if (in_array($provider, $this->providers, true)) {
-            $user = User::fromProvider($provider);
-            if ($user) {
-                Auth::login($user, true);
-                debug('callback', $user);
-                return redirect('/test');
-            }
+            $user = Socialite::driver($provider)->user();
+            $authUser = $this->findOrCreateUser($user, $provider);
+
+            Auth::login($authUser, true);
+            return redirect('/test');
         }
     }
+
+    private function findOrCreateUser($user, $provider)
+    {
+        if ($authUser = User::where('id', $user->id)->first()) {
+            $authUser->update([
+                'id' => $user->id,
+                'avatar' => $user->avatar,
+                'name' => $user->name,
+                'username' => $user->nickname,
+                'url' => 'http://' . $provider . '.com/' . $user->nickname
+            ]);
+
+            return $authUser;
+        }
+
+        return User::create([
+            'id' => $user->id,
+            'avatar' => $user->avatar,
+            'name' => $user->name,
+            'username' => $user->nickname,
+            'url' => 'http://' . $provider . '.com/' . $user->nickname,
+            'provider' => $provider
+        ]);
+
+
+    }
 }
\ No newline at end of file