socialite

This commit is contained in:
2021-02-12 18:20:57 +09:00
parent 6e7ec0564f
commit 0ce7d24f69
2 changed files with 40 additions and 63 deletions

View File

@@ -75,12 +75,21 @@ class LoginController extends Controller
* @return Socialite
*/
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')
->scopes([])
->scopes($scopes)
->redirect();
//return Socialite::driver('eveonline')->redirect();
}
/**

View File

@@ -61,36 +61,19 @@ class EveOnlineOAuthProvider extends AbstractProvider {
//Get the character Id from the token returned
$characterId = strtr($user['sub'], ['CHARACTER:EVE:' => '']);
if(isset($user['scp'])) {
//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' => null,
'expires_on' => $user['exp'],
'avatar' => 'https://image.eveonline.com/Character/' . $characterId . '_128.jpg',
'iss' => $user['iss'],
'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']
]);
}
//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
$jws = null;
//$scopes = session()->pull('scopes', []);
$scopes = array();
$scopes = session()->pull('scopes', []);
// pulling JWK sets from CCP
$sets = $this->getJwkSets();
@@ -149,34 +131,20 @@ class EveOnlineOAuthProvider extends AbstractProvider {
$jwk_sets = JWKSet::createFromKeyData($sets);
// attempt to parse the JWT and collect payload
if($scopes == null) {
$jws = Load::jws($access_token)
->algs(['RS256', 'ES256', 'HS256'])
->exp()
->iss('login.eveonline.com')
->header('typ', new TypeChecker(['JWT'], true))
->claim('sub', new SubEveCharacterChecker())
->claim('azp', new AzpChecker(config('esi.client_id')))
->claim('name', new NameChecker())
->claim('owner', new OwnerChecker())
->keyset($jwk_sets)
->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();
}
$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();
}
}