fixing up the authenticator to allow identiy chaining
This commit is contained in:
+35
-27
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
use SocialNorm\Exceptions\ApplicationRejectedException;
|
||||
use SocialNorm\Exceptions\InvalidAuthorizationCodeException;
|
||||
use SocialNorm\ProviderUser;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -36,52 +37,59 @@ Route::get('/home', 'HomeController@index')->name('home');
|
||||
|
||||
// ----------------- SOCIAL LOGIN --------------------
|
||||
|
||||
function _loginVia($method) {
|
||||
try {
|
||||
SocialAuth::login($method, function (\App\Models\User $user, ProviderUser $details) {
|
||||
// update user name first time user logs in
|
||||
if (!$user->exists) {
|
||||
$user->name = $details->nickname ?: ($details->full_name ?: $details->email);
|
||||
}
|
||||
|
||||
// set e-mail from provider data, only if user e-mail is empty
|
||||
if ("$user->email" === "") {
|
||||
$user->email = $details->email;
|
||||
}
|
||||
});
|
||||
} catch (ApplicationRejectedException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
} catch (InvalidAuthorizationCodeException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
}
|
||||
return Redirect::intended();
|
||||
};
|
||||
|
||||
|
||||
Route::get('/auth/github/authorize', function() {
|
||||
return SocialAuth::authorize('github');
|
||||
})->name('oauth-github-authorize');
|
||||
|
||||
Route::get('/auth/github/callback', function() {
|
||||
try {
|
||||
SocialAuth::login('github');
|
||||
} catch (ApplicationRejectedException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
} catch (InvalidAuthorizationCodeException $e) {
|
||||
abort(401, $e->getMessage());
|
||||
}
|
||||
return Redirect::intended();
|
||||
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() {
|
||||
try {
|
||||
SocialAuth::login('google');
|
||||
} catch (ApplicationRejectedException $e) {
|
||||
abort(401);
|
||||
} catch (InvalidAuthorizationCodeException $e) {
|
||||
abort(401);
|
||||
}
|
||||
return Redirect::intended();
|
||||
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() {
|
||||
try {
|
||||
SocialAuth::login('facebook');
|
||||
} catch (ApplicationRejectedException $e) {
|
||||
abort(401);
|
||||
} catch (InvalidAuthorizationCodeException $e) {
|
||||
abort(401);
|
||||
}
|
||||
return Redirect::intended();
|
||||
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');
|
||||
|
||||
Reference in New Issue
Block a user