Gestion des connexions 'entrepot' et 'admin' et corrections des droits de 'ModuleRequest'/'Authentification' et création du module 'authentificationDefault'

This commit is contained in:
xdrm-brackets 2016-07-06 17:36:26 +02:00
parent fb824ad1cd
commit fa98401683
9 changed files with 158 additions and 41 deletions

View File

@ -64,22 +64,25 @@
"name": { "description": "Nom de l'entrepot.", "type": "varchar(3,30,alphanumeric)" }, "name": { "description": "Nom de l'entrepot.", "type": "varchar(3,30,alphanumeric)" },
"password": { "description": "Mot de passe de l'entrepot.", "type": "text" } "password": { "description": "Mot de passe de l'entrepot.", "type": "text" }
}, },
"output": {} "output": {
"status": { "description": "Status de la connexion.", "type": "boolean" }
}
}, },
"admin": { "admin": {
"description": "Connexion de second niveau : administrateur.", "description": "Connexion de second niveau : administrateur.",
"permissions": ["warehouse"], "permissions": ["warehouse"],
"parameters": { "parameters": {
"name": { "description": "Identifiant de l'administrateur.", "type": "varchar(1,30,alphanumeric)" }, "username": { "description": "Identifiant de l'administrateur.", "type": "varchar(1,30,alphanumeric)" },
"password": { "description": "Mot de passe de l'administrateur'.", "type": "text" } "password": { "description": "Mot de passe de l'administrateur'.", "type": "text" }
}, },
"output": {} "output": {
"status": { "description": "Status de la connexion.", "type": "boolean" }
}
} }
}, },
"userDefault": { "userDefault": {
"create": { "create": {

View File

@ -27,6 +27,8 @@
---------------------------------------------------------*/ ---------------------------------------------------------*/
if( !isset($_SESSION['AUTH']) ) $_SESSION['AUTH'] = []; if( !isset($_SESSION['AUTH']) ) $_SESSION['AUTH'] = [];
if( !isset($_SESSION['PERM']) ) $_SESSION['PERM'] = []; if( !isset($_SESSION['PERM']) ) $_SESSION['PERM'] = [];
if( !isset($_SESSION['WAREHOUSE']) ) $_SESSION['WAREHOUSE'] = [];
if( !isset($_SESSION['ADMIN']) ) $_SESSION['ADMIN'] = [];
/* (2) Gestion de AUTH (authentification) /* (2) Gestion de AUTH (authentification)
@ -50,14 +52,22 @@
$_SESSION['AUTH'] = [ $match[0] ]; $_SESSION['AUTH'] = [ $match[0] ];
/* (3) Aucune authentification */ /* (3) Aucune authentification */
else else{
$_SESSION['AUTH'] = []; $_SESSION['AUTH'] = [];
$_SESSION['PERM'] = [];
$_SESSION['WAREHOUSE'] = [];
$_SESSION['ADMIN'] = [];
}
/* (4) On vérifie l'authentification par BDD /* (4) On vérifie l'authentification par BDD
---------------------------------------------------------*/ ---------------------------------------------------------*/
if( !self::deepCheck() ) if( !self::deepCheck() ){
$_SESSION['AUTH'] = []; $_SESSION['AUTH'] = [];
$_SESSION['PERM'] = [];
$_SESSION['WAREHOUSE'] = [];
$_SESSION['ADMIN'] = [];
}
} }
@ -79,7 +89,7 @@
$checkRoot = new Repo('warehouse/getByToken', [ $_SESSION['AUTH'][0] ]); $checkRoot = new Repo('warehouse/getByToken', [ $_SESSION['AUTH'][0] ]);
/* (1) Si le token n'existe pas, on retourne une erreur */ /* (1) Si le token n'existe pas, on retourne une erreur */
if( count($checkRoot->answer()) < 1 ) if( $checkRoot->answer() == false )
return false; return false;
/* (2) On met à jour les informations de l'entrepot */ /* (2) On met à jour les informations de l'entrepot */
@ -100,7 +110,7 @@
$checkBranch = new Repo('admin/getByToken', [ $_SESSION['AUTH'][1] ]); $checkBranch = new Repo('admin/getByToken', [ $_SESSION['AUTH'][1] ]);
/* (1) Si le token n'existe pas, on retourne une erreur */ /* (1) Si le token n'existe pas, on retourne une erreur */
if( count($checkBranch->answer()) < 1 ) if( $checkBranch->answer() == false )
return false; return false;
/* (2) Si pas administrateur de l'entrepot, on retourne une erreur */ /* (2) Si pas administrateur de l'entrepot, on retourne une erreur */

View File

@ -334,17 +334,7 @@
} }
/* [3] On vérifie que le module est autorisé /* [3] Verification de l'existence de la methode (conf)
=========================================================*/
// Si le module n'est pas autorisé
// et qu'il ne finit pas par "Default"
if( !in_array($module, $_SESSION['WAREHOUSE']['modules']) && !preg_match('/^(\w+)Default$/', $module) ){
$this->error = ManagerError::DisabledModule;
return false; // On retourne FALSE, si erreur
}
/* [4] Verification de l'existence de la methode (conf)
=========================================================*/ =========================================================*/
if( array_key_exists($method, $this->modules[$module]) === false ){ // Si la methode n'est pas specifie dans la conf if( array_key_exists($method, $this->modules[$module]) === false ){ // Si la methode n'est pas specifie dans la conf
$this->error = ManagerError::UnknownMethod; $this->error = ManagerError::UnknownMethod;
@ -353,7 +343,7 @@
/* [5] Enregistrement du chemin et renvoi de SUCCESS /* [4] Enregistrement du chemin et renvoi de SUCCESS
=========================================================*/ =========================================================*/
$this->path = [ $this->path = [
'module' => $module, 'module' => $module,
@ -394,7 +384,28 @@
return false; return false;
} }
/* (2) On retourne VRAI si la permission est ok */
/* [3] On vérifie que le module est autorisé
=========================================================*/
$moduleName = $this->path['module'];
/* (1) On vérifie que le module est actif dans l'entrepot */
$allowedModule = isset($_SESSION['WAREHOUSE']['modules'])
&& is_array($_SESSION['WAREHOUSE']['modules'])
&& in_array($moduleName, $_SESSION['WAREHOUSE']['modules']);
/* (2) On vérifie si le module est un module "Default" */
$defaultModule = preg_match('/^(\w+)Default$/', $moduleName);
/* (3) Si aucune autorisation et pas module "Default" */
if( !$allowedModule && !$defaultModule ){
$this->error = ManagerError::DisabledModule;
return false; // On retourne FALSE, si erreur
}
/* On retourne VRAI si la permission est ok */
return true; return true;
} }

View File

@ -47,13 +47,6 @@
*/ */
public function __construct($path=null, $params=null){ public function __construct($path=null, $params=null){
// Si pas authentifié, erreur
if( Authentification::auth() < 2 ){
$this->error = ManagerError::PermissionError;
return false;
}
// Si pas parametre manquant, on quitte // Si pas parametre manquant, on quitte
if( $path == null ){ if( $path == null ){
$this->error = ManagerError::MissingPath; $this->error = ManagerError::MissingPath;

View File

@ -0,0 +1,102 @@
<?php
namespace manager\module;
use \manager\Database;
use \manager\sessionManager;
use \manager\Authentification;
use \manager\ManagerError;
use \manager\Repo;
use \manager\repo\cluster as clusterRepo;
class authentificationDefault{
/* CONNEXION A UN ENTREPOT
*
* @name<String> Nom de l'entrepot
* @password<String> Mot de passe de l'entrepot
*
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
*
*/
public static function warehouse($params){
extract($params);
/* [1] On recherche un entrepot avec ce nom
=========================================================*/
$getName = new Repo('warehouse/getByName', [$name]);
$nameFetched = $getName->answer();
// Si aucun résultat, on retourne une erreur
if( count($nameFetched) == 0 )
return [ 'status' => false ];
/* [2] On vérifie le mot de passe
=========================================================*/
$hash_password = sessionManager::secure_sha1($password);
// Si mot de passe faux, on retourne une erreur
if( $nameFetched[0]['password'] != $hash_password )
return [ 'status' => false ];
/* [3] On définit le token
=========================================================*/
$_SESSION['AUTH'][0] = $nameFetched[0]['token'];
// On retourne le status
return [ 'status' => true ];
}
/* CONNEXION EN TANT QU'ADMINISTRATEUR
*
* @username<String> Nom de l'administrateur
* @password<String> Mot de passe de l'administrateur
*
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
*
*/
public static function admin($params){
extract($params);
/* [1] On recherche un entrepot avec ce nom
=========================================================*/
$getUsername = new Repo('admin/getByUsername', [$username]);
$usernameFetched = $getUsername->answer();
// Si aucun résultat, on retourne une erreur
if( count($usernameFetched) == 0 )
return [ 'status' => false ];
/* [2] On vérifie le mot de passe
=========================================================*/
$hash_password = sessionManager::secure_sha1($password);
// Si mot de passe faux, on retourne une erreur
if( $usernameFetched[0]['password'] != $hash_password )
return [ 'status' => false ];
/* [3] On définit le token
=========================================================*/
$_SESSION['AUTH'][1] = $usernameFetched[0]['token'];
// On retourne le status
return [ 'status' => true ];
}
}
?>

View File

@ -96,7 +96,7 @@
public static function getClusters($id_warehouse, $id_machine){ public static function getClusters($id_warehouse, $id_machine){
/* [1] On redige/execute la requete /* [1] On redige/execute la requete
=========================================================*/ =========================================================*/
$get_clusters = Database::getPDO()->prepare("SELECT c.* $get_clusters = Database::getPDO()->prepare("SELECT c.id_cluster, c.name
FROM cluster as c, cluster_merge as cm, machine as m FROM cluster as c, cluster_merge as cm, machine as m
WHERE cm.id_cluster = c.id_cluster WHERE cm.id_cluster = c.id_cluster
AND cm.id_entity = m.id_machine AND cm.id_entity = m.id_machine

View File

@ -110,7 +110,7 @@
public static function getClusters($id_warehouse, $id_user){ public static function getClusters($id_warehouse, $id_user){
/* [1] On redige/execute la requete /* [1] On redige/execute la requete
=========================================================*/ =========================================================*/
$get_clusters = Database::getPDO()->prepare("SELECT c.* $get_clusters = Database::getPDO()->prepare("SELECT c.id_cluster, c.name
FROM cluster as c, cluster_merge as cm, user as u FROM cluster as c, cluster_merge as cm, user as u
WHERE cm.id_cluster = c.id_cluster WHERE cm.id_cluster = c.id_cluster
AND cm.id_entity = u.id_user AND cm.id_entity = u.id_user

View File

@ -2,6 +2,7 @@
require_once __ROOT__.'/manager/autoloader.php'; require_once __ROOT__.'/manager/autoloader.php';
use \manager\Authentification; use \manager\Authentification;
use \manager\Repo;
var_dump( Authentification::auth() ); var_dump( Authentification::auth() );

View File

@ -2,6 +2,7 @@
require_once __ROOT__.'/manager/autoloader.php'; require_once __ROOT__.'/manager/autoloader.php';
use \manager\ModuleRequest; use \manager\ModuleRequest;
use \manager\sessionManager;
use \manager\ResourceDispatcher; use \manager\ResourceDispatcher;
use \manager\ManagerError; use \manager\ManagerError;
use \manager\Repo; use \manager\Repo;
@ -322,11 +323,7 @@
$getAll = new Repo('admin/getAll'); $getAll = new Repo('admin/getAll');
}createWarehouse(); }//createWarehouse();
?> ?>