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) Si ....css.map n'existe pas ne cherche pas */ $R->get('(.+).css.map', function($matches){ die(); }); /* (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(){ $GLOBALS['page_log']->log('admin.logout'); $GLOBALS['session_guard']->init_parent(); $_SERVER['REQUEST_METHOD'] = 'POST'; $req = new Request('authenticationDefault/admin', ['username' => '-', 'password' => '']); $res = $req->dispatch(); header('Location: /'); }); // nomPage/arg1/arg2 -> page correcte $page_list = [ 'history', 'profile', 'machines', 'users', 'groups', 'options', 'settings' ]; $R->get('((?:'.implode('|', $page_list).')(?:/[\w-]+)*/?)', function($m){ $GLOBALS['page_log']->log("admin.page(/${m[0]})"); $GLOBALS['session_guard']->init_parent(); include __PUBLIC__.'/view/view.php'; }); /* (3) Si on est pas admin, juste warehouse */ }else if( $auth == 1 ){ // warehouse logout $R->get('logout/?', function(){ $GLOBALS['page_log']->log('warehouse.logout'); $GLOBALS['session_guard']->init_parent(); $_SERVER['REQUEST_METHOD'] = 'POST'; (new Request('authenticationDefault/warehouse', ['name' => '---', 'password' => '']))->dispatch(); header('Location: /'); }); // admin login page $R->get('admin/?', function(){ $GLOBALS['page_log']->log('admin.login_page'); $GLOBALS['session_guard']->init_parent(); include __PUBLIC__.'/view/admin.php'; }); /* (4) Si on est pas co */ }else{ // warehouse login page $R->get('warehouse/?', function(){ $GLOBALS['page_log']->log('warehouse.login_page'); $GLOBALS['session_guard']->init_parent(); include __PUBLIC__.'/view/warehouse.php'; }); } /* (4) api/module/method -> Api */ $R->post('api(?:(/.*))/?', function($url){ $GLOBALS['page_log']->log('api.call('.$_SERVER['HTTP_X_TREE_TOKEN'].')'); header('Content-Type: application/json; charset=UTF-8'); if( !$GLOBALS['session_guard']->init_child() ) die(json_encode([ 'error' => 100, 'ErrorDescription' => 'session_guard.child error' ])); $request = Request::remote($url[0]); $answer = $request->dispatch(); // Si c'est une réponse (et non un download) if( $answer instanceof Response ) echo $answer->serialize(); }); /* (6) N'importe -> page d'accueil */ $R->get('.*', function(){ $GLOBALS['page_log']->log('get.redirect'); $GLOBALS['session_guard']->init_parent(); header(__REDIRECT__); }); $R->post('.*', function(){ $GLOBALS['page_log']->log('post.redirect'); header(__REDIRECT__); }); /* (3) On lance le routeur ---------------------------------------------------------*/ $R->run(); ?>