Add all files
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace Paymenter\Extensions\Others\Authentik\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Extension;
|
||||
|
||||
class ForceAuthentikOnly
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||||
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function handle(Request $request, Closure $next)
|
||||
{
|
||||
// Vérifier si l'extension Authentik est activée et configurée pour forcer l'utilisation uniquement
|
||||
$extension = Extension::where('extension', 'Authentik')->first();
|
||||
|
||||
if ($extension && $extension->enabled) {
|
||||
$settings = $extension->settings->pluck('value', 'key')->toArray();
|
||||
|
||||
// Si l'option "force_authentik_only" est activée
|
||||
if (!empty($settings['force_authentik_only'])) {
|
||||
// Éviter les boucles de redirection
|
||||
$currentPath = $request->path();
|
||||
$currentRoute = $request->route() ? $request->route()->getName() : null;
|
||||
|
||||
// Routes et chemins à exclure de la redirection
|
||||
$excludedRoutes = ['oauth.authentik.redirect', 'oauth.authentik.callback'];
|
||||
$excludedPaths = ['oauth/authentik', 'oauth/authentik/callback'];
|
||||
|
||||
// Vérifier si on est sur une route ou chemin exclu
|
||||
$isExcludedRoute = in_array($currentRoute, $excludedRoutes);
|
||||
$isExcludedPath = false;
|
||||
foreach ($excludedPaths as $excludedPath) {
|
||||
if (str_starts_with($currentPath, $excludedPath)) {
|
||||
$isExcludedPath = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Ne pas rediriger si on est déjà sur une route Authentik ou si l'utilisateur est connecté
|
||||
if (!$isExcludedRoute && !$isExcludedPath && !auth()->check()) {
|
||||
// Vérifier que la configuration Authentik est complète avant de rediriger
|
||||
if (!empty($settings['client_id']) && !empty($settings['client_secret']) && !empty($settings['base_url'])) {
|
||||
return redirect()->route('oauth.authentik.redirect');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user