From: Vincent Vanwaelscappel Date: Fri, 8 Oct 2021 17:07:39 +0000 (+0200) Subject: wip #4765 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=101ac45f01b10cab279a535dc28c2bd3fceb0557;p=cubist_socialite.git wip #4765 --- diff --git a/src/Http/Controllers/SocialiteController.php b/src/Http/Controllers/SocialiteController.php index 09128a7..7ffd98a 100644 --- a/src/Http/Controllers/SocialiteController.php +++ b/src/Http/Controllers/SocialiteController.php @@ -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