exists && !$wasLoggedIn) { // check if this identity already existed if (! $user->socialIdentities() ->where('provider', $details->provider) ->where('provider_user_id', $details->id) ->exists()) { Auth::logout(); abort(403, "Account with this e-mail already exists. Add the identity to the account manually after logging in through an existing authentication method."); } } // update user name first time user logs in if (!$user->exists) { if (!config('app.allow_regs')) { abort(403, "Registrations are closed."); } $basename = $details->nickname ?: ($details->full_name ?: $details->email); $user->name = $basename; $cnt = 1; while (User::where('name', $user->name)->exists()) { $cnt++; $user->name = $basename . $cnt; } } // set e-mail from provider data, only if user e-mail is empty if ("$user->email" === "") { $user->email = $details->email; } $user->confirmed = true; // mark as confirmed, we trust the provider }); } catch (ApplicationRejectedException $e) { abort(401, $e->getMessage()); } catch (InvalidAuthorizationCodeException $e) { abort(401, $e->getMessage()); } if ($wasLoggedIn) return redirect(route('profile.manage-oauth')); else return Redirect::intended(); }; Route::get('/auth/github/authorize', function() { return SocialAuth::authorize('github'); })->name('oauth-github-authorize'); Route::get('/auth/github/callback', function() { return _loginVia('github'); })->name('oauth-github-callback'); Route::get('/auth/google/authorize', function() { return SocialAuth::authorize('google'); })->name('oauth-google-authorize'); Route::get('/auth/google/callback', function() { return _loginVia('google'); })->name('oauth-google-callback'); Route::get('/auth/facebook/authorize', function() { return SocialAuth::authorize('facebook'); })->name('oauth-facebook-authorize'); Route::get('/auth/facebook/callback', function() { return _loginVia('facebook'); })->name('oauth-facebook-callback'); /* Route::get('/auth/stack/authorize', function() { return SocialAuth::authorize('stack'); })->name('oauth-stack-authorize'); Route::get('/auth/stack/callback', function() { return _loginVia('stack'); })->name('oauth-stack-callback'); */