Commit 63648fab authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

contrôle renforcé

parent b2ec2020
Loading
Loading
Loading
Loading
Loading
+17 −59
Changes for code/Contrôle des guards.php: 17 added lines, 59 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@
 * @var $io         \Symfony\Component\Console\Style\SymfonyStyle
 */

use Unicaen\Framework\Router\Router;

$router = $container->get(\Unicaen\Framework\Router\Router::class);

$routes = $router->getRoutes();
@@ -13,58 +15,19 @@ $routes = $router->getRoutes();
$ok = [
    // divers
    "/ocra_service_manager_yuml",
    "/maintenance",
    "/icons",
    "/cache/js[/:version]",
    "/cache/css[/:version]",

    // unicaen/authentification
    "/auth",
    "/auth/creation-compte",
    "/auth/change-password",
    "/auth/change-email",

    "/utilisateur",
    "/utilisateur/:action[/:id]",

    // unicaen/import
    "/import",
    "/import/tableau-bord",
    "/import/maj-vues-fonctions",
    "/import/sources",
    "/import/sources/edition[/:source]",
    "/import/sources/suppression/:source",
    "/import/differentiel",
    "/import/tables/modifier/:table",
    "/import/tables/trier",
    "/import/tables/synchro-switch",
    "/import/tables/add-non-referenced",
    "/import/tables",
    "/import/differentiel/maj-vue-materialisee[/:table]",
    "/import/differentiel/synchronisation[/:table]",
    "/import/differentiel/details[/:table]",

    // unicaen/code
    "/unicaen-code[/:view]",

    // unicaen/signature
    "/signature/internal",
    "/signature/internal/visa/:key",
    "/signature/internal/document/:key",
    "/signature/process",

    // unicaen/siham
    "/siham",
];


$guards = $container->get(\Unicaen\Framework\Authorize\GuardProvider::class)->getAll();
$guardProvider = $container->get(\Unicaen\Framework\Authorize\GuardProvider::class);
$authorize = $container->get(\Unicaen\Framework\Authorize\Authorize::class);

foreach ($routes as $route) {
    $controller = $route->getController();
    $action     = $route->getAction();

    $privileges = $route->getPrivileges();

    if (in_array($route->getRoute(), $ok)) {
        continue;
    }
@@ -77,30 +40,25 @@ foreach($routes as $route) {
        continue;
    }

    if (!empty($privileges)){
        // privileges OK
        continue;
    }
    $guard  = $guardProvider->get($controller, $action);

    $guard = $guards[$controller][$action] ?? null;
    $privileges = $guard?->privileges;

    if (!empty($privileges)){
        // privileges OK
    $actionRule = $guardProvider->get($controller, $action);
    if ($actionRule && ($actionRule->privileges || $actionRule->roles || $actionRule->assertion)) {
        continue;
    }

    if (!empty($guard->roles)){
        continue;
    }
    if (!empty($guard->assertion)){
    $controllerRule = $guardProvider->get($controller);
    if ($controllerRule && ($controllerRule->privileges || $controllerRule->roles || $controllerRule->assertion)) {
        continue;
    }

    echo '<h2>'.$route->getRoute().'</h2>';
    //$url = $this->url($route->getRoute());
    //echo $url;
    if (!(bool)($actionRule || $controllerRule)) {
        echo '<h2>' . $route->getName() . '</h2>';
        echo "uri: ".$route->getRoute().'<br />';
        echo "controller: ".$controller.'<br />';
        echo "action: ".$action.'<br />';

        dump($controller . '.' . $action);
        dump($route);
    dump($guard);
    }
}
 No newline at end of file