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:
xdrm-brackets 2016-07-04 11:04:49 +02:00
parent 009b174437
commit 692e8e508f
6 changed files with 203 additions and 57 deletions

View File

@ -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": {

View File

@ -8,6 +8,7 @@
use \manager\ModuleRequest;
use \manager\ModuleResponse;
use \manager\ManagerError;
use \manager\Authentification;
/*******************************************/
@ -15,21 +16,46 @@
/*******************************************/
debug();
/*******************************************/
$_SESSION['permission'] = array();
/* DEBUGGER */
/*******************************************/
/* [0] On initialise le routeur
===================================================*/
/* [1] Gestion de l'authentification
=========================================================*/
/* [2] Gestion du routage
=========================================================*/
/* (1) On initialise le routeur
---------------------------------------------------------*/
$R = new Router( $_GET['url'] );
// var_dump($R);
/* [1] On cree les regles de routage
===================================================*/
// Racine -> page d'accueil
/* (2) On cree les regles de routage
---------------------------------------------------------*/
/* (1) Racine -> page d'accueil */
$R->get('/?', function(){ header('Location: /dashboard/'); });
// Liste des pages du site
/* (2) Liste des pages du site */
$page_list = array(
'dashboard',
'profile',
@ -43,10 +69,12 @@
// nomPage/arg1/arg2 -> inclusion de la page
$R->get('(?:'.implode('|', $page_list).')(?:/[\w-]+)*/?', function(){ include __ROOT__.'/view.php'; });
// Dispatcher
/* (3) Dispatcher */
$R->get('f(?:/([\w-]+))*/?', function(){ new ResourceDispatcher($_GET['url'], true); });
// Api
/* (4) api/module/method -> Api */
$R->post('api(?:/(.*))?', function($url){
$request = ModuleRequest::fromPost($url, $_POST);
$answer = $request->dispatch();
@ -57,14 +85,14 @@
});
// N'importe -> page d'accueil
/* (5) N'importe -> page d'accueil */
$R->get('.+', function(){ header('Location: /dashboard/'); });
$R->post('.+', function(){ header('Location: /dashboard/'); });
/* [2] On lance le routeur
===================================================*/
/* (3) On lance le routeur
---------------------------------------------------------*/
$R->run();
?>

View File

@ -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
=========================================================*/
}
}
?>

View File

@ -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']); }
?>

9
test/authTest.php Normal file
View File

@ -0,0 +1,9 @@
<?php define('__ROOT__', dirname(dirname(__FILE__)) );
require_once __ROOT__.'/manager/autoloader.php';
var_dump($_SESSION['AUTH']);
var_dump( authLevel() );
?>

View File

@ -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") );
?>