From 5e31cfbc476c4a505ac438253d54b390e11ed884 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 8 Jul 2016 15:18:23 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20''sale''=20des=20pages=20des=20?= =?UTF-8?q?2=20niveaux=20d'authentification=20'warehouse'=20et=20'admin'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/container.scss | 22 +-- css/fonts.min.css | 0 index.php | 71 ++++----- manager/module/authentificationDefault.php | 12 ++ manager/sessionManager.php | 17 ++- test/testHashChain.php | 16 +- view/admin.php | 168 +++++++++++++++++++++ view.php => view/view.php | 12 +- view/warehouse.php | 168 +++++++++++++++++++++ 9 files changed, 413 insertions(+), 73 deletions(-) create mode 100644 css/fonts.min.css create mode 100644 view/admin.php rename view.php => view/view.php (96%) create mode 100644 view/warehouse.php diff --git a/css/container.scss b/css/container.scss index ec7a74f..93347de 100755 --- a/css/container.scss +++ b/css/container.scss @@ -42,7 +42,7 @@ // box-shadow: 0 0 1px #b7b7b7; background: #fff url('/f/svg/search/st/sub-menu-side/b1b1b1') .5em center no-repeat; - background-size: 1em; + background-size: 1em; transition: border .4s ease-in-out; @@ -122,7 +122,7 @@ margin: 1em; color: #333; white-space: nowrap; - + // svg (icone) svg{ display: inline-block; @@ -137,7 +137,7 @@ path{ fill: #333 !important; - + pointer-events: none; } } @@ -152,7 +152,7 @@ margin: 1em; color: #333; white-space: nowrap; - + // svg (icone) svg{ display: inline-block; @@ -255,7 +255,7 @@ } } } - + } /* [3] Formulaires @@ -274,7 +274,7 @@ background-color: #fff; transform: translateX(-50%); - + &.valid{ @@ -404,7 +404,7 @@ // Boutons valides button.valid, - &.valid > button{ + &.valid > button{ border-color: $form-valid-color; background-color: $form-valid-color; @@ -419,7 +419,7 @@ // Boutons neutres button.neutral, - &.neutral > button{ + &.neutral > button{ border-color: $form-neutral-color; background-color: $form-neutral-color; @@ -434,7 +434,7 @@ // Boutons recherche button.search, - &.search > button{ + &.search > button{ border-color: $form-search-color; background-color: $form-search-color; @@ -492,7 +492,7 @@ top: 50%; left: 50%; padding: 0 1em; - + background-color: #fff; color: $form-invalid-color; @@ -533,4 +533,4 @@ } } -} \ No newline at end of file +} diff --git a/css/fonts.min.css b/css/fonts.min.css new file mode 100644 index 0000000..e69de29 diff --git a/index.php b/index.php index 0c34935..dff6213 100755 --- a/index.php +++ b/index.php @@ -23,27 +23,16 @@ - /* [3] Gestion des authentifications et des droits + /* [1] Gestion des authentifications et des droits =========================================================*/ - \manager\Authentification::check(); - - - - - - - - - - - - /* [1] Gestion de l'authentification - =========================================================*/ - - - - + /* (1) On met à jour l'authentification et les permissions */ + Authentification::check(); + $auth = Authentification::auth(); + /* (2) On définit la page d'accueil */ + if( $auth == 2 ) $root_page = 'dashboard'; // Connecté -> Accès + elseif( $auth == 1 ) $root_page = 'admin'; // Pas identifié -> Identification + else $root_page = 'warehouse'; // Pas localisé -> Localisation @@ -56,29 +45,33 @@ ---------------------------------------------------------*/ $R = new Router( $_GET['url'] ); + /* (2) Dispatcher */ + $R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); }); - /* (2) On cree les regles de routage + + /* (3) On cree les regles de routage QUAND ON EST CONNECTE ---------------------------------------------------------*/ /* (1) Racine -> page d'accueil */ - $R->get('/?', function(){ header('Location: /dashboard/'); }); - - /* (2) Liste des pages du site */ - $page_list = [ - 'dashboard', - 'profile', - 'machines', - 'users', - 'groups', - 'analytics', - 'settings' - ]; - - // nomPage/arg1/arg2 -> inclusion de la page - $R->get('(?:'.implode('|', $page_list).')(?:/[\w-]+)*/?', function(){ include __ROOT__.'/view.php'; }); + $R->get('/?', function(){ header("Location: /$root_page/"); }); + + + /* (2) Si on est connecté */ + if( $auth == 2 ){ + + // Liste des pages du site + $page_list = [ 'dashboard', 'profile', 'machines', 'users', 'groups', 'analytics', 'settings' ]; + + // nomPage/arg1/arg2 -> inclusion de la page + $R->get('(?:'.implode('|', $page_list).')(?:/[\w-]+)*/?', function(){ include __ROOT__.'/view/view.php'; }); + + + /* (3) Si on est pas identifié */ + }else if( $auth == 1 ) + $R->get('.+', function(){ include __ROOT__.'/view/admin.php'; }); + else + $R->get('.+', function(){ include __ROOT__.'/view/warehouse.php'; }); - /* (3) Dispatcher */ - $R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); }); /* (4) api/module/method -> Api */ @@ -93,8 +86,8 @@ /* (5) N'importe -> page d'accueil */ - $R->get('.+', function(){ header('Location: /dashboard/'); }); - $R->post('.+', function(){ header('Location: /dashboard/'); }); + $R->get('.+', function(){ header("Location: /$root_page/"); }); + $R->post('.+', function(){ header("Location: /$root_page/"); }); diff --git a/manager/module/authentificationDefault.php b/manager/module/authentificationDefault.php index 30b280f..9fd226f 100644 --- a/manager/module/authentificationDefault.php +++ b/manager/module/authentificationDefault.php @@ -21,6 +21,12 @@ public static function warehouse($params){ extract($params); + + /* [0] Par défaut, on déconnecte + =========================================================*/ + $_SESSION['AUTH'] = []; + + /* [1] On recherche un entrepot avec ce nom =========================================================*/ $getName = new Repo('warehouse/getByName', [$name]); @@ -67,6 +73,12 @@ public static function admin($params){ extract($params); + + /* [0] Par défaut, on déconnecte l'administrateur + =========================================================*/ + $_SESSION['AUTH'][1] = ''; + + /* [1] On recherche un entrepot avec ce nom =========================================================*/ $getUsername = new Repo('admin/getByUsername', [$username]); diff --git a/manager/sessionManager.php b/manager/sessionManager.php index 377ccee..7f208d8 100755 --- a/manager/sessionManager.php +++ b/manager/sessionManager.php @@ -11,8 +11,21 @@ /*************************/ /* SECURE SHA1 ALGORITHM */ /*************************/ - public static function secure_hash($data){ - return hash('sha256', '">\[..|{@#))'.hash('sha256', $data.'_)Q@#((%*_$%(@#') ); + public static function secure_hash($data, $depth=1){ + /* [1] On hash @depth fois + =========================================================*/ + $hash = $data; + $c = 0; + + for( $h = 0 ; $h < $depth ; $h++ ){ + $hash = hash('sha256', '">\[..|{@#))'.hash('sha256', $hash.'_)Q@#((%*_$%(@#') ); + $c++; + } + + + /* [2] On renvoie le résultat + =========================================================*/ + return $hash; } diff --git a/test/testHashChain.php b/test/testHashChain.php index cf9f70d..113348d 100644 --- a/test/testHashChain.php +++ b/test/testHashChain.php @@ -7,24 +7,10 @@ $hash = 'password'; - $hashes = []; + var_dump( sessionManager::secure_hash($hash, 1000) ); - for( $i = 0 ; $i < 1000 ; $i++ ){ - $hash = sessionManager::secure_hash($hash); - - if( isset($hashes[$hash]) ) - var_dump('already'); - - $hashes[$hash] = null; - var_dump($hash); - } - - - - var_dump( count($hashes) ); - ?> diff --git a/view/admin.php b/view/admin.php new file mode 100644 index 0000000..d23bcc8 --- /dev/null +++ b/view/admin.php @@ -0,0 +1,168 @@ + + + + + Authentification + + + + + + + + + + + + + + + + + + + + + + + + +
+ Authentification + + + + + +
+ + + + + + + + diff --git a/view.php b/view/view.php similarity index 96% rename from view.php rename to view/view.php index 9033fe2..94e22eb 100755 --- a/view.php +++ b/view/view.php @@ -16,7 +16,7 @@ - + @@ -34,7 +34,7 @@
- + - + - \ No newline at end of file + diff --git a/view/warehouse.php b/view/warehouse.php new file mode 100644 index 0000000..4d4f7ab --- /dev/null +++ b/view/warehouse.php @@ -0,0 +1,168 @@ + + + + + Connexion au Parc + + + + + + + + + + + + + + + + + + + + + + + + +
+ Connexion au Parc + + + + + +
+ + + + + + + +