socialite updates
This commit is contained in:
@@ -79,6 +79,8 @@ class LoginController extends Controller
|
|||||||
$scopes = ['publicData'];
|
$scopes = ['publicData'];
|
||||||
|
|
||||||
//Collect any other scopes we need if we are logged in.
|
//Collect any other scopes we need if we are logged in.
|
||||||
|
//If we are logged in we are linking another character to this one.
|
||||||
|
//Attempt to use the same scopes for this character as the original one
|
||||||
if(Auth::check()) {
|
if(Auth::check()) {
|
||||||
$extraScopes = EsiScope::where([
|
$extraScopes = EsiScope::where([
|
||||||
'character_id' => auth()->user()->getId(),
|
'character_id' => auth()->user()->getId(),
|
||||||
@@ -88,11 +90,14 @@ class LoginController extends Controller
|
|||||||
foreach($extraScopes as $extra) {
|
foreach($extraScopes as $extra) {
|
||||||
array_push($scopes, $extra->scope);
|
array_push($scopes, $extra->scope);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//Place the scopes in the session to verify later after the redirect
|
/**
|
||||||
//has been completed and a token is received
|
* Place the scopes in the session.
|
||||||
|
* Place the original character id in the session.
|
||||||
|
*/
|
||||||
session()->put('scopes', $scopes);
|
session()->put('scopes', $scopes);
|
||||||
|
session()->put('orgCharacter', auth()->user()->getId());
|
||||||
|
}
|
||||||
|
|
||||||
return $social->driver('eveonline')
|
return $social->driver('eveonline')
|
||||||
->scopes($scopes)
|
->scopes($scopes)
|
||||||
@@ -107,41 +112,34 @@ class LoginController extends Controller
|
|||||||
//Get the sso user from the socialite driver
|
//Get the sso user from the socialite driver
|
||||||
$ssoUser = $social->driver('eveonline')->user();
|
$ssoUser = $social->driver('eveonline')->user();
|
||||||
|
|
||||||
$scpSession = session()->get('scopes');
|
$scpSession = session()->pull('scopes');
|
||||||
|
|
||||||
//If the user was already logged in, let's do some checks to see if we are adding
|
//If the user was already logged in, let's do some checks to see if we are adding
|
||||||
//additional scopes to the user's account
|
//additional scopes to the user's account
|
||||||
if(Auth::check()) {
|
if(Auth::check()) {
|
||||||
//If more scopes than just public Data are present on the return, then we are doing
|
//If we are logged in already and the session contains the original characters, then we are creating an alt
|
||||||
//a scope callback to update scopes for an access token
|
//for the original character
|
||||||
if(sizeof($ssoUser->scopes) > 1) {
|
if(session()->has('orgCharacter')) {
|
||||||
//Check to see if an access token is present already for the character
|
$orgCharacter = session()->pull('orgCharacter');
|
||||||
$tokenCount = EsiToken::where([
|
|
||||||
'character_id' => $ssoUser->id,
|
|
||||||
])->count();
|
|
||||||
//If a token is present, we need to update it.
|
|
||||||
if($tokenCount > 0) {
|
|
||||||
//Update the Esi Token
|
|
||||||
$this->UpdateEsiToken($ssoUser);
|
|
||||||
} else {
|
|
||||||
//Save the ESI token as it is new
|
|
||||||
$this->SaveEsiToken($ssoUser);
|
|
||||||
}
|
|
||||||
|
|
||||||
//After either creating the new token or updating an old token, we need to set the scopes available for the token
|
if($this->createAlt($ssoUser, $orgCharacter)) {
|
||||||
$this->SetScopes($ssoUser->scopes, $ssoUser->id);
|
|
||||||
|
|
||||||
//Redirect to the dashboard with the correct message
|
|
||||||
return redirect()->to('/dashboard')->with('success', 'Successfully updated ESI Scopes.');
|
|
||||||
} else {
|
|
||||||
//Retrieve the session data for altCall, and delete it from the session
|
|
||||||
$alt = session()->pull('altCall');
|
|
||||||
|
|
||||||
if($this->createAlt($ssoUser)) {
|
|
||||||
return redirect()->to('/profile')->with('success', 'Alt registered.');
|
return redirect()->to('/profile')->with('success', 'Alt registered.');
|
||||||
} else {
|
} else {
|
||||||
return redirect()->to('/profile')->with('error', 'Unable to register alt or it was previously registered.');
|
return redirect()->to('/profile')->with('error', 'Unable to register alt or it was previously registered.');
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if(sizeof($ssoUser->scopes) > 1) {
|
||||||
|
$tokenCount = EsiToken::where([
|
||||||
|
'character_id' => $ssoUser->id,
|
||||||
|
])->count();
|
||||||
|
if($tokenCount > 0) {
|
||||||
|
$this->UpdateEsiToken($ssoUser);
|
||||||
|
} else {
|
||||||
|
$this->SaveEsiToken($ssoUser);
|
||||||
|
}
|
||||||
|
$this->SetScopes($ssoUser->scopes, $ssoUser->id);
|
||||||
|
return redirect()->to('/dashboard')->with('success', 'Successfully updated ESI scopes.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//If the user wasn't logged in, then create a new user
|
//If the user wasn't logged in, then create a new user
|
||||||
@@ -159,12 +157,12 @@ class LoginController extends Controller
|
|||||||
*
|
*
|
||||||
* @param \Laravel\Socialite\Two\User $user
|
* @param \Laravel\Socialite\Two\User $user
|
||||||
*/
|
*/
|
||||||
private function createAlt($user) {
|
private function createAlt($user, $orgCharacter) {
|
||||||
$altCount = UserAlt::where('character_id', $user->id)->count();
|
$altCount = UserAlt::where('character_id', $user->id)->count();
|
||||||
if($altCount == 0) {
|
if($altCount == 0) {
|
||||||
$newAlt = new UserAlt;
|
$newAlt = new UserAlt;
|
||||||
$newAlt->name = $user->getName();
|
$newAlt->name = $user->getName();
|
||||||
$newAlt->main_id = auth()->user()->getId();
|
$newAlt->main_id = $orgCharacter;
|
||||||
$newAlt->character_id = $user->id;
|
$newAlt->character_id = $user->id;
|
||||||
$newAlt->avatar = $user->avatar;
|
$newAlt->avatar = $user->avatar;
|
||||||
$newAlt->access_token = $user->token;
|
$newAlt->access_token = $user->token;
|
||||||
|
|||||||
Reference in New Issue
Block a user