socialite
This commit is contained in:
@@ -75,12 +75,21 @@ class LoginController extends Controller
|
|||||||
* @return Socialite
|
* @return Socialite
|
||||||
*/
|
*/
|
||||||
public function redirectToProvider($profile = null, Socialite $social) {
|
public function redirectToProvider($profile = null, Socialite $social) {
|
||||||
|
//The default scope is public data for everyone due to OAuth2 Tokens
|
||||||
|
$scopes = ['publicData'];
|
||||||
|
|
||||||
|
//Collect any other scopes we need if we are logged in.
|
||||||
|
if(Auth::check()) {
|
||||||
|
$extraScopes = EsiScope::where([
|
||||||
|
'character_id' => auth()->user()->getId(),
|
||||||
|
])->get(['scope'])->toArray();
|
||||||
|
|
||||||
|
array_push($scopes, $extraScopes);
|
||||||
|
}
|
||||||
|
|
||||||
return $social->driver('eveonline')
|
return $social->driver('eveonline')
|
||||||
->scopes([])
|
->scopes($scopes)
|
||||||
->redirect();
|
->redirect();
|
||||||
|
|
||||||
//return Socialite::driver('eveonline')->redirect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -61,36 +61,19 @@ class EveOnlineOAuthProvider extends AbstractProvider {
|
|||||||
//Get the character Id from the token returned
|
//Get the character Id from the token returned
|
||||||
$characterId = strtr($user['sub'], ['CHARACTER:EVE:' => '']);
|
$characterId = strtr($user['sub'], ['CHARACTER:EVE:' => '']);
|
||||||
|
|
||||||
|
//Return a user object with the mapped out variables below
|
||||||
if(isset($user['scp'])) {
|
return (new User)->setRaw($user)->map([
|
||||||
//Return a user object with the mapped out variables below
|
'id' => $characterId,
|
||||||
return (new User)->setRaw($user)->map([
|
'name' => $user['name'],
|
||||||
'id' => $characterId,
|
'nickname' => $user['name'],
|
||||||
'name' => $user['name'],
|
'owner_hash' => $user['owner'],
|
||||||
'nickname' => $user['name'],
|
'scopes' => is_array($user['scp']) ? $user['scp'] : [$user['scp']],
|
||||||
'owner_hash' => $user['owner'],
|
'expires_on' => $user['exp'],
|
||||||
'scopes' => null,
|
'avatar' => 'https://image.eveonline.com/Character/' . $characterId . '_128.jpg',
|
||||||
'expires_on' => $user['exp'],
|
'iss' => $user['iss'],
|
||||||
'avatar' => 'https://image.eveonline.com/Character/' . $characterId . '_128.jpg',
|
'region' => $user['region'],
|
||||||
'iss' => $user['iss'],
|
'tier' => $user['tier']
|
||||||
'region' => $user['region'],
|
]);
|
||||||
'tier' => $user['tier']
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
//Return a user object with the mapped out variables below
|
|
||||||
return (new User)->setRaw($user)->map([
|
|
||||||
'id' => $characterId,
|
|
||||||
'name' => $user['name'],
|
|
||||||
'nickname' => $user['name'],
|
|
||||||
'owner_hash' => $user['owner'],
|
|
||||||
'scopes' => is_array($user['scp']) ? $user['scp'] : [$user['scp']],
|
|
||||||
'expires_on' => $user['exp'],
|
|
||||||
'avatar' => 'https://image.eveonline.com/Character/' . $characterId . '_128.jpg',
|
|
||||||
'iss' => $user['iss'],
|
|
||||||
'region' => $user['region'],
|
|
||||||
'tier' => $user['tier']
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -139,8 +122,7 @@ class EveOnlineOAuthProvider extends AbstractProvider {
|
|||||||
//Declare variables
|
//Declare variables
|
||||||
$jws = null;
|
$jws = null;
|
||||||
|
|
||||||
//$scopes = session()->pull('scopes', []);
|
$scopes = session()->pull('scopes', []);
|
||||||
$scopes = array();
|
|
||||||
|
|
||||||
// pulling JWK sets from CCP
|
// pulling JWK sets from CCP
|
||||||
$sets = $this->getJwkSets();
|
$sets = $this->getJwkSets();
|
||||||
@@ -149,34 +131,20 @@ class EveOnlineOAuthProvider extends AbstractProvider {
|
|||||||
$jwk_sets = JWKSet::createFromKeyData($sets);
|
$jwk_sets = JWKSet::createFromKeyData($sets);
|
||||||
|
|
||||||
// attempt to parse the JWT and collect payload
|
// attempt to parse the JWT and collect payload
|
||||||
if($scopes == null) {
|
$jws = Load::jws($access_token)
|
||||||
$jws = Load::jws($access_token)
|
->algs(['RS256', 'ES256', 'HS256'])
|
||||||
->algs(['RS256', 'ES256', 'HS256'])
|
->exp()
|
||||||
->exp()
|
->iss('login.eveonline.com')
|
||||||
->iss('login.eveonline.com')
|
->header('typ', new TypeChecker(['JWT'], true))
|
||||||
->header('typ', new TypeChecker(['JWT'], true))
|
->claim('scp', new ScpChecker($scopes))
|
||||||
->claim('sub', new SubEveCharacterChecker())
|
->claim('sub', new SubEveCharacterChecker())
|
||||||
->claim('azp', new AzpChecker(config('esi.client_id')))
|
->claim('azp', new AzpChecker(config('esi.client_id')))
|
||||||
->claim('name', new NameChecker())
|
->claim('name', new NameChecker())
|
||||||
->claim('owner', new OwnerChecker())
|
->claim('owner', new OwnerChecker())
|
||||||
->keyset($jwk_sets)
|
->keyset($jwk_sets)
|
||||||
->run();
|
->run();
|
||||||
} else {
|
|
||||||
$jws = Load::jws($access_token)
|
|
||||||
->algs(['RS256', 'ES256', 'HS256'])
|
|
||||||
->exp()
|
|
||||||
->iss('login.eveonline.com')
|
|
||||||
->header('typ', new TypeChecker(['JWT'], true))
|
|
||||||
->claim('scp', new ScpChecker($scopes))
|
|
||||||
->claim('sub', new SubEveCharacterChecker())
|
|
||||||
->claim('azp', new AzpChecker(config('esi.client_id')))
|
|
||||||
->claim('name', new NameChecker())
|
|
||||||
->claim('owner', new OwnerChecker())
|
|
||||||
->keyset($jwk_sets)
|
|
||||||
->run();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
//Return the data collected
|
||||||
return $jws->claims->all();
|
return $jws->claims->all();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user