Création du manager 'Authentification' et gestion de l'authentification, vérification via REPO à faire, et toute la gestion des droits aussi
This commit is contained in:
parent
32c44516de
commit
f89c530634
|
@ -40,6 +40,28 @@
|
|||
}
|
||||
},
|
||||
|
||||
"authentificationDefault": {
|
||||
"root": {
|
||||
"description": "Connexion de premier niveau : token",
|
||||
"permissions": [],
|
||||
"parameters": {
|
||||
"name": { "description": "Nom de l'entrepot.", "type": "varchar(3,30,alphanumeric)" },
|
||||
"password": { "description": "Mot de passe de l'entrepot.", "type": "text" }
|
||||
},
|
||||
"output": {}
|
||||
|
||||
},
|
||||
|
||||
"branch": {
|
||||
"description": "Connexion de second niveau : administrateur",
|
||||
"permissions": [],
|
||||
"parameters": {
|
||||
"name": { "description": "Identifiant de l'administrateur.", "type": "varchar(1,30,alphanumeric)" },
|
||||
"password": { "description": "Mot de passe de l'administrateur'.", "type": "text" }
|
||||
},
|
||||
"output": {}
|
||||
}
|
||||
},
|
||||
|
||||
"download": {
|
||||
|
||||
|
|
124
index.php
124
index.php
|
@ -8,6 +8,7 @@
|
|||
use \manager\ModuleRequest;
|
||||
use \manager\ModuleResponse;
|
||||
use \manager\ManagerError;
|
||||
use \manager\Authentification;
|
||||
|
||||
|
||||
/*******************************************/
|
||||
|
@ -15,56 +16,83 @@
|
|||
/*******************************************/
|
||||
debug();
|
||||
/*******************************************/
|
||||
|
||||
$_SESSION['permission'] = array();
|
||||
|
||||
|
||||
/* [0] On initialise le routeur
|
||||
===================================================*/
|
||||
$R = new Router( $_GET['url'] );
|
||||
// var_dump($R);
|
||||
|
||||
/* [1] On cree les regles de routage
|
||||
===================================================*/
|
||||
// Racine -> page d'accueil
|
||||
$R->get('/?', function(){ header('Location: /dashboard/'); });
|
||||
|
||||
// Liste des pages du site
|
||||
$page_list = array(
|
||||
'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'; });
|
||||
|
||||
// Dispatcher
|
||||
$R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); });
|
||||
|
||||
// Api
|
||||
$R->post('api(?:/(.*))?', function($url){
|
||||
$request = ModuleRequest::fromPost($url, $_POST);
|
||||
$answer = $request->dispatch();
|
||||
|
||||
// Si c'est une réponse (et non un download)
|
||||
if( $answer instanceof ModuleResponse )
|
||||
echo $answer->serialize();
|
||||
});
|
||||
|
||||
|
||||
// N'importe -> page d'accueil
|
||||
$R->get('.+', function(){ header('Location: /dashboard/'); });
|
||||
$R->post('.+', function(){ header('Location: /dashboard/'); });
|
||||
/* DEBUGGER */
|
||||
/*******************************************/
|
||||
|
||||
|
||||
|
||||
/* [2] On lance le routeur
|
||||
===================================================*/
|
||||
$R->run();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* [1] Gestion de l'authentification
|
||||
=========================================================*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* [2] Gestion du routage
|
||||
=========================================================*/
|
||||
|
||||
/* (1) On initialise le routeur
|
||||
---------------------------------------------------------*/
|
||||
$R = new Router( $_GET['url'] );
|
||||
|
||||
|
||||
/* (2) On cree les regles de routage
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Racine -> page d'accueil */
|
||||
$R->get('/?', function(){ header('Location: /dashboard/'); });
|
||||
|
||||
/* (2) Liste des pages du site */
|
||||
$page_list = array(
|
||||
'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'; });
|
||||
|
||||
|
||||
/* (3) Dispatcher */
|
||||
$R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); });
|
||||
|
||||
|
||||
/* (4) api/module/method -> Api */
|
||||
$R->post('api(?:/(.*))?', function($url){
|
||||
$request = ModuleRequest::fromPost($url, $_POST);
|
||||
$answer = $request->dispatch();
|
||||
|
||||
// Si c'est une réponse (et non un download)
|
||||
if( $answer instanceof ModuleResponse )
|
||||
echo $answer->serialize();
|
||||
});
|
||||
|
||||
|
||||
/* (5) N'importe -> page d'accueil */
|
||||
$R->get('.+', function(){ header('Location: /dashboard/'); });
|
||||
$R->post('.+', function(){ header('Location: /dashboard/'); });
|
||||
|
||||
|
||||
|
||||
/* (3) On lance le routeur
|
||||
---------------------------------------------------------*/
|
||||
$R->run();
|
||||
|
||||
?>
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
<?php
|
||||
|
||||
namespace manager;
|
||||
|
||||
use \manager\Repo;
|
||||
|
||||
|
||||
|
||||
|
||||
class Authentification{
|
||||
|
||||
// Constantes
|
||||
public static $config_path = 'f/json/modules/auth';
|
||||
|
||||
// Contiendra les erreurs
|
||||
public $error;
|
||||
|
||||
|
||||
|
||||
|
||||
/* INITIALISATION DU SYSTEME ET MISE A JOUR CONSTANTES D'AUTHENTIFICATION
|
||||
*
|
||||
*
|
||||
*/
|
||||
public static function init(){
|
||||
/* (1) Initialisation
|
||||
---------------------------------------------------------*/
|
||||
if( !isset($_SESSION['AUTH']) ) $_SESSION['AUTH'] = array();
|
||||
if( !isset($_SESSION['PERM']) ) $_SESSION['PERM'] = array();
|
||||
|
||||
|
||||
/* (2) Gestion de AUTH (authentification)
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Si Auth dans HEADER, on le récupère */
|
||||
$AUTH = isset($_SERVER['PHP_AUTH_DIGEST']) ? $_SERVER['PHP_AUTH_DIGEST'] : '';
|
||||
|
||||
/* (2) Si Auth dans SESSION, on le récupère */
|
||||
if( $AUTH == '' && isset($_SESSION['AUTH']) )
|
||||
$AUTH = implode('', $_SESSION['AUTH']);
|
||||
|
||||
|
||||
/* (3) Gestion de AUTH en fonction des tokens
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Double authentification */
|
||||
if( preg_match('/^([a-f0-9]{40})([a-f0-9]{40})$/', $AUTH, $match) )
|
||||
$_SESSION['AUTH'] = array( $match[1], $match[2] );
|
||||
|
||||
/* (2) Authentification unique */
|
||||
else if( preg_match('/^[a-f0-9]{40}$/', $AUTH, $match) )
|
||||
$_SESSION['AUTH'] = array( $match[0] );
|
||||
|
||||
/* (3) Aucune authentification */
|
||||
else
|
||||
$_SESSION['AUTH'] = array();
|
||||
|
||||
|
||||
/* (4) On retourne le niveau d'authentification
|
||||
---------------------------------------------------------*/
|
||||
return authLevel();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* VERIFICATION DE L'AUTHENTIFICATION
|
||||
*
|
||||
*
|
||||
*/
|
||||
public static function check(){
|
||||
/* [1] Si aucune authentification
|
||||
=========================================================*/
|
||||
|
||||
/* [2] Si authentification unique
|
||||
=========================================================*/
|
||||
|
||||
/* [3] Si authentification double
|
||||
=========================================================*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
/* [1] On définit __SERVER_HOST__ et __SERVER_ROOT__ si c'est pas déja fait
|
||||
=========================================================*/
|
||||
if( !defined('__SERVER_HOST__') || !defined('__SERVER_ROOT') ){
|
||||
if( !defined('__SERVER_HOST__') || !defined('__SERVER_ROOT__') ){
|
||||
/* (1) On charge le fichier de configuration */
|
||||
$json = json_decode( file_get_contents(__ROOT__.'/config/server.json'), true );
|
||||
|
||||
|
@ -76,12 +76,17 @@
|
|||
|
||||
|
||||
|
||||
/* [3] Gestion des droits des utilisateurs
|
||||
/* [3] Gestion des authentifications et des droits
|
||||
=========================================================*/
|
||||
\manager\Authentification::init();
|
||||
|
||||
/* (0) Retourne le niveau de connexion */
|
||||
function authLevel(){ return !is_array($_SESSION['AUTH']) ? 0 : count($_SESSION['AUTH']); }
|
||||
|
||||
/* (1) Retourne si l'utilisateur est connecte ou non */
|
||||
function connected(){ return isset($_SESSION['permission']) && count($_SESSION['permission']) > 0; }
|
||||
function connected(){ return isset($_SESSION['PERM']) && count($_SESSION['PERM']) > 0; }
|
||||
|
||||
/* (2) Retourne si l'utilisateur a le status en question */
|
||||
function permission($type){ return connected() && in_array($type, $_SESSION['permission']); }
|
||||
function permission($type){ return connected() && in_array($type, $_SESSION['PERM']); }
|
||||
|
||||
?>
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<?php define('__ROOT__', dirname(dirname(__FILE__)) );
|
||||
require_once __ROOT__.'/manager/autoloader.php';
|
||||
|
||||
|
||||
|
||||
var_dump($_SESSION['AUTH']);
|
||||
var_dump( authLevel() );
|
||||
|
||||
?>
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
|
||||
|
||||
/* NSERTION DES UTILISATEURS DANS LA BDD DEPUIS JSON
|
||||
/* INSERTION DES UTILISATEURS DANS LA BDD DEPUIS JSON
|
||||
*
|
||||
*
|
||||
* @return status<Boolean> TRUE si aucune erreur, sinon FALSE
|
||||
|
@ -309,9 +309,7 @@
|
|||
|
||||
|
||||
|
||||
var_dump( Database::check('varchar(3,5)', "blabl") );
|
||||
var_dump( Database::check('varchar(3,5)', "bla -") );
|
||||
var_dump( Database::check('varchar(3,5,subtest,subsub)', "blabl") );
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue