Compare commits
3
Commits
f8d88c91fc
..
v1.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
470596e0b4 | ||
|
|
d0b7c9872b | ||
|
|
ccd7934bb8 |
@@ -19,6 +19,10 @@ class DelegateAuthServiceProvider extends ServiceProvider
|
|||||||
__DIR__.'/../config/delegate-auth.php' => config_path('delegate-auth.php'),
|
__DIR__.'/../config/delegate-auth.php' => config_path('delegate-auth.php'),
|
||||||
], 'delegate-auth-config');
|
], 'delegate-auth-config');
|
||||||
|
|
||||||
|
$this->publishes([
|
||||||
|
__DIR__.'/../resources/views/errors/401.blade.php' => resource_path('views/errors/401.blade.php'),
|
||||||
|
], 'delegate-auth-views');
|
||||||
|
|
||||||
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
|
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
|
||||||
|
|
||||||
if ($this->app->runningInConsole()) {
|
if ($this->app->runningInConsole()) {
|
||||||
|
|||||||
@@ -10,58 +10,53 @@ class DelegateAuthController extends Controller
|
|||||||
{
|
{
|
||||||
public function login(Request $request)
|
public function login(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate(['token' => 'required|string']);
|
$request->validate(["token" => "required|string"]);
|
||||||
|
|
||||||
$payload = $this->decryptToken($request->input('token'));
|
$payload = $this->decryptToken($request->input("token"));
|
||||||
|
|
||||||
abort_if(! $payload, 401, 'Token invalide.');
|
abort_if(!$payload, 401, "Token invalide.");
|
||||||
|
|
||||||
$field = config('delegate-auth.user_field');
|
$field = config("delegate-auth.user_field");
|
||||||
|
|
||||||
abort_if(empty($payload[$field]), 401, 'Token invalide : champ '.$field.' manquant.');
|
abort_if(
|
||||||
|
empty($payload[$field]),
|
||||||
|
401,
|
||||||
|
"Token invalide : champ " . $field . " manquant.",
|
||||||
|
);
|
||||||
|
|
||||||
$guard = Auth::guard(config('delegate-auth.guard'));
|
$guard = Auth::guard(config("delegate-auth.guard"));
|
||||||
$user = $guard->getProvider()->retrieveByCredentials([$field => $payload[$field]]);
|
$user = $guard
|
||||||
|
->getProvider()
|
||||||
|
->retrieveByCredentials([$field => $payload[$field]]);
|
||||||
|
|
||||||
abort_if(! $user, 401, 'Utilisateur introuvable.');
|
abort_if(!$user, 401, "Utilisateur introuvable.");
|
||||||
|
|
||||||
$guard->login($user);
|
$guard->login($user);
|
||||||
|
|
||||||
return redirect(config('delegate-auth.redirect_after_login'));
|
return redirect(config("delegate-auth.redirect_after_login"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function logout(Request $request)
|
public function logout(Request $request)
|
||||||
{
|
{
|
||||||
$guard = Auth::guard(config('delegate-auth.guard'));
|
$guard = Auth::guard(config("delegate-auth.guard"));
|
||||||
$guard->logout();
|
$guard->logout();
|
||||||
|
|
||||||
$request->session()->invalidate();
|
$request->session()->invalidate();
|
||||||
$request->session()->regenerateToken();
|
$request->session()->regenerateToken();
|
||||||
|
|
||||||
return redirect(config('delegate-auth.redirect_after_logout'));
|
return redirect(config("delegate-auth.redirect_after_logout"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function decryptToken(string $token): ?array
|
private function decryptToken(string $token): ?array
|
||||||
{
|
{
|
||||||
if (!str_contains($token, '.')) {
|
$data = base64_decode(urldecode($token));
|
||||||
return null;
|
$payload = openssl_decrypt(
|
||||||
}
|
substr($data, 16),
|
||||||
|
"AES-256-CBC",
|
||||||
[$ivB64, $encrypted] = explode('.', $token, 2);
|
config("delegate.encrypt_key"),
|
||||||
|
0,
|
||||||
$iv = base64_decode($ivB64, strict: true);
|
substr($data, 0, 16),
|
||||||
$key = substr(hash('sha256', config('delegate-auth.encrypt_key'), binary: true), 0, 32);
|
);
|
||||||
|
|
||||||
if ($iv === false || strlen($iv) !== 16) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$payload = openssl_decrypt($encrypted, 'AES-256-CBC', $key, 0, $iv);
|
|
||||||
|
|
||||||
if ($payload === false) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = json_decode($payload, associative: true);
|
$data = json_decode($payload, associative: true);
|
||||||
|
|
||||||
return is_array($data) ? $data : null;
|
return is_array($data) ? $data : null;
|
||||||
|
|||||||
Reference in New Issue
Block a user