98 lines
2.6 KiB
PHP
98 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
|
|
//Internal Library
|
|
use App\Library\Login\LoginHelper;
|
|
|
|
class LoginController extends Controller
|
|
{
|
|
/**
|
|
* Where to redirect users after login.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $redirectto = '/dashboard';
|
|
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct() {
|
|
$this->middleware('guest')->except(['logout',
|
|
'handleProviderCallback',
|
|
'redirectToProvider']);
|
|
}
|
|
|
|
/**
|
|
* Logout function
|
|
*
|
|
* @return void
|
|
*/
|
|
public function logout() {
|
|
Auth::logout();
|
|
return redirect('/');
|
|
}
|
|
|
|
/**
|
|
* Redirect to provider's website
|
|
*
|
|
* @return param
|
|
*/
|
|
public function redirectToEveonline() {
|
|
return Socialite::driver('eveonline')->scopes(['publicData'])->redirect();
|
|
}
|
|
|
|
/**
|
|
* Create a new controller instance
|
|
*
|
|
* @return void
|
|
*/
|
|
public function handleEveonlineCallback() {
|
|
try {
|
|
$user = Socialite::driver('eveonline')->user();
|
|
$findUser = User::where('character_id', $user->character_id)->first();
|
|
|
|
if($findUser) {
|
|
Auth::login($finduser);
|
|
return redirect()->intended('home');
|
|
} else {
|
|
$newUser = User::updateOrCreate(['character_id' => $user->character_id], [
|
|
'character_name' => $user->character_name,
|
|
'character_id' => $user->character_id,
|
|
'token' => $user->token,
|
|
'refresh_token' => $user->refresh_token,
|
|
'expiresIn' => $user->expiresIn,
|
|
'user_jwt_token' => $user->user,
|
|
]);
|
|
|
|
Auth::login($newUser);
|
|
|
|
return redirect()->intended('home');
|
|
}
|
|
} catch(Exception $e) {
|
|
dd($e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get token from callback
|
|
* Redirect to the dashboard if logging in successfully.
|
|
*
|
|
* @return redirect()
|
|
*/
|
|
public function handleProviderCallback(Socialite $social) {
|
|
//Get the sso user from the socialite driver
|
|
$ssoUser = $social->driver('eveonline')->user();
|
|
|
|
$scpSession = session()->pull('scopes');
|
|
|
|
$user = LoginHelper::createOrGetUser($ssoUser);
|
|
auth()->login($user, true);
|
|
return redirect()->to('/dashboard')->with('success', 'Successfully Logged In.');
|
|
}
|
|
} |