Accès elseif( $auth == 1 ) define('__REDIRECT__', 'Location: /admin/'); // Pas identifié -> Identification else define('__REDIRECT__', 'Location: /warehouse/'); // Pas localisé -> Localisation /* [2] Gestion du routage =========================================================*/ /* (1) On initialise le routeur ---------------------------------------------------------*/ $R = new Router( $_GET['url'] ); /* (2) Gestion des SVG avec couleur modifiée */ // path/to/resource/filename-HEXADE.svg $R->get('(.+)@([a-f0-9]{6})(\.svg)', function($matches){ $path = __PUBLIC__.'/'.$matches[0].$matches[2]; header('Content-Type: image/svg+xml'); // On crée la partie ajoutée $stylesheet = "\n"; // On récupère le fichier $file = file_get_contents($path); // On ajoute le style $file = str_replace('', $stylesheet, $file); echo $file; }); /* (3) On cree les regles de routage QUAND ON EST CONNECTE ---------------------------------------------------------*/ /* (2) Si on est connecté */ if( $auth == 2 ){ // logout from admin $R->get('logout/?', function(){ $_SERVER['REQUEST_METHOD'] = 'POST'; $req = new Request('authentificationDefault/admin', ['username' => '-', 'password' => '']); $res = $req->dispatch(); header('Location: /'); }); // nomPage/arg1/arg2 -> inclusion de la page $R->get('(.*)', function($m){ // Liste des pages du site $page_list = [ 'history', 'profile', 'machines', 'users', 'groups', 'extensions', 'settings' ]; if( !preg_match('#^(?:'.implode('|', $page_list).')(?:/[\w-]+)*/?$#i', $m[0]) ) header(__REDIRECT__); else include __PUBLIC__.'/view/view.php'; }); /* (3) Si on est pas authentifié */ }else if( $auth == 1 ){ // warehouse logout $R->get('logout/?', function(){ $_SERVER['REQUEST_METHOD'] = 'POST'; (new Request('authentificationDefault/warehouse', ['name' => '---', 'password' => '']))->dispatch(); header('Location: /'); }); // admin login page $R->get('(.*)', function($m){ if( !preg_match('#^admin/$#', $m[0]) ) header(__REDIRECT__); else include __PUBLIC__.'/view/admin.php'; }); }else{ $R->get('(.*)', function($m){ if( !preg_match('#^warehouse/$#', $m[0]) ) header(__REDIRECT__); else include __PUBLIC__.'/view/warehouse.php'; }); } /* (4) api/module/method -> Api */ $R->post('api(?:(/.*))/?', function($url){ $request = Request::remote($url[0]); $answer = $request->dispatch(); // Si c'est une réponse (et non un download) if( $answer instanceof Response ){ header('Content-Type: application/json; charset=UTF-8'); echo $answer->serialize(); } }); /* (6) N'importe -> page d'accueil */ $R->get('.+', function(){ header(__REDIRECT__); }); $R->post('.+', function(){ header(__REDIRECT__); }); /* (3) On lance le routeur ---------------------------------------------------------*/ $R->run(); ?>