setting up jwt framework
This commit is contained in:
@@ -2,8 +2,18 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
//Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
use Throwable;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\Esi\EsiScope;
|
||||
|
||||
class EsiScopeController extends Controller
|
||||
{
|
||||
@@ -28,5 +38,15 @@ class EsiScopeController extends Controller
|
||||
])->get();
|
||||
|
||||
return view('scopes.select')->with('scopes', $scopes);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect to the socialite provider
|
||||
*
|
||||
* @return RequestResponse
|
||||
*/
|
||||
public function redirectToProvider(Request $request): RequestResponse
|
||||
{
|
||||
return Socialite::driver('eveonline')->setScopes($request->scopes)->redirect();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,19 @@
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
//Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
use Throwable;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\Esi\EsiScope;
|
||||
|
||||
class EveLoginController extends Controller
|
||||
{
|
||||
public function showLogin()
|
||||
@@ -20,7 +25,7 @@ class EveLoginController extends Controller
|
||||
public function redirectToProvider(): RedirectResponse
|
||||
{
|
||||
// "eveonline" driver registered via SocialiteProviders
|
||||
return Socialite::driver('eveonline')->redirect();
|
||||
return Socialite::driver('eveonline')->scopes(['publicData'])->redirect();
|
||||
}
|
||||
|
||||
public function handleProviderCallback(Request $request): RedirectResponse
|
||||
@@ -57,8 +62,12 @@ class EveLoginController extends Controller
|
||||
]
|
||||
);
|
||||
|
||||
Auth::login($user, true);
|
||||
//Issue JWT and store in the "user" column per your spec
|
||||
$jwt = $jwtService->make($user);
|
||||
$user->user = $jwt;
|
||||
$user->save();
|
||||
|
||||
Auth::login($user, true);
|
||||
$request->session()->regenerate();
|
||||
|
||||
return redirect()->route('dashboard');
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
<?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.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user