Gestion sha256 + Gestion 'hashChain' pour le 'token de synchronisation' des machines + Correction des 'view' : 'machines' et 'users'
This commit is contained in:
parent
e3a459200f
commit
ff314a4950
|
@ -223,6 +223,19 @@
|
|||
|
||||
|
||||
"machineDefault": {
|
||||
|
||||
"sync": {
|
||||
"description": "Synchronisation d'une machine.",
|
||||
"permissions": [],
|
||||
"parameters": {
|
||||
"token": { "description": "Code d'accès évolutif dynamique.", "type": "hash" },
|
||||
"data": { "description": "Données (dépendent des modules).", "type": "array<mixed>" }
|
||||
},
|
||||
"output": {
|
||||
"data": { "description": "Données (dépendent des modules).", "type": "array<mixed>" }
|
||||
}
|
||||
},
|
||||
|
||||
"create": {
|
||||
"description": "Création d'une nouvelle machine.",
|
||||
"permissions": ["warehouse", "admin"],
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
"getByCode",
|
||||
"getByName",
|
||||
|
||||
"checkToken",
|
||||
|
||||
"search",
|
||||
|
||||
"getClusters"
|
||||
|
|
|
@ -23,6 +23,13 @@
|
|||
|
||||
|
||||
|
||||
/* [3] Gestion des authentifications et des droits
|
||||
=========================================================*/
|
||||
\manager\Authentification::check();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -44,11 +44,11 @@
|
|||
/* (3) Gestion de AUTH en fonction des tokens
|
||||
---------------------------------------------------------*/
|
||||
/* (1) Double authentification */
|
||||
if( preg_match('/^([a-f0-9]{40})([a-f0-9]{40})$/', $AUTH, $match) )
|
||||
if( preg_match('/^([a-f0-9]{64})([a-f0-9]{64})$/', $AUTH, $match) )
|
||||
$_SESSION['AUTH'] = [ $match[1], $match[2] ];
|
||||
|
||||
/* (2) Authentification unique */
|
||||
else if( preg_match('/^[a-f0-9]{40}$/', $AUTH, $match) )
|
||||
else if( preg_match('/^[a-f0-9]{64}$/', $AUTH, $match) )
|
||||
$_SESSION['AUTH'] = [ $match[0] ];
|
||||
|
||||
/* (3) Aucune authentification */
|
||||
|
@ -143,7 +143,7 @@
|
|||
public static function permission($expected){
|
||||
/* [0] Mise à jour de l'authentification
|
||||
=========================================================*/
|
||||
self::check();
|
||||
// self::check();
|
||||
|
||||
|
||||
/* [1] Gestion de l'AUTH (authentification)
|
||||
|
|
|
@ -97,7 +97,7 @@
|
|||
|
||||
// Hash sha1/md5
|
||||
case 'hash':
|
||||
return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value);
|
||||
return $checker && is_string($value) && preg_match('/^[\da-f]+$/i', $value) && (strlen($value) == 40 || strlen($value) == 64);
|
||||
break;
|
||||
|
||||
case 'alphanumeric':
|
||||
|
|
|
@ -74,10 +74,4 @@
|
|||
=========================================================*/
|
||||
\manager\sessionManager::session_start();
|
||||
|
||||
|
||||
|
||||
/* [3] Gestion des authentifications et des droits
|
||||
=========================================================*/
|
||||
\manager\Authentification::check();
|
||||
|
||||
?>
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
/* [2] On vérifie le mot de passe
|
||||
=========================================================*/
|
||||
$hash_password = sessionManager::secure_sha1($password);
|
||||
$hash_password = sessionManager::secure_hash($password);
|
||||
|
||||
// Si mot de passe faux, on retourne une erreur
|
||||
if( $nameFetched[0]['password'] != $hash_password )
|
||||
|
@ -80,7 +80,7 @@
|
|||
|
||||
/* [2] On vérifie le mot de passe
|
||||
=========================================================*/
|
||||
$hash_password = sessionManager::secure_sha1($password);
|
||||
$hash_password = sessionManager::secure_hash($password);
|
||||
|
||||
// Si mot de passe faux, on retourne une erreur
|
||||
if( $usernameFetched[0]['password'] != $hash_password )
|
||||
|
|
|
@ -372,6 +372,28 @@
|
|||
|
||||
|
||||
|
||||
/* SYNCHRONISE UNE MACHINE
|
||||
*
|
||||
* @token<String> Token de synchronisation de la machine
|
||||
* @data<Array> Données de la synchronisation
|
||||
*
|
||||
* @return data<Array> Données de retour de synchronisation
|
||||
*
|
||||
*/
|
||||
public static function sync($params){
|
||||
extract($params);
|
||||
|
||||
$checkToken = new Repo('machine/checkToken', [$token]);
|
||||
|
||||
return [
|
||||
'tokenResult' => $checkToken->answer()
|
||||
];
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
/* [1] Normalisation + verification des donnees
|
||||
=========================================================*/
|
||||
$password_hash = sessionManager::secure_sha1($password);
|
||||
$password_hash = sessionManager::secure_hash($password);
|
||||
|
||||
/* [2] Creation de l'utilisateur
|
||||
=========================================================*/
|
||||
|
@ -343,7 +343,7 @@
|
|||
|
||||
/* [2] Normalisation + verification des donnees
|
||||
=========================================================*/
|
||||
$password_hash = sessionManager::secure_sha1($password);
|
||||
$password_hash = sessionManager::secure_hash($password);
|
||||
|
||||
/* (1) Verification des parametres (si non nul + differents)*/
|
||||
$diff_param = [
|
||||
|
|
|
@ -37,8 +37,8 @@
|
|||
$insert_admin->execute([
|
||||
':username' => $username,
|
||||
':mail' => $mail,
|
||||
':password' => sessionManager::secure_sha1( $password ),
|
||||
':token' => sessionManager::secure_sha1( uniqid() )
|
||||
':password' => sessionManager::secure_hash( $password ),
|
||||
':token' => sessionManager::secure_hash( uniqid() )
|
||||
]);
|
||||
|
||||
|
||||
|
@ -79,7 +79,7 @@
|
|||
/* [2] On met à jour le token
|
||||
=========================================================*/
|
||||
/* (1) On crée un nouveau token */
|
||||
$new_token = sessionManager::secure_sha1( uniqid() );
|
||||
$new_token = sessionManager::secure_hash( uniqid() );
|
||||
|
||||
/* (2) On applique le nouveau token */
|
||||
$update_token = Database::getPDO()->prepare("UPDATE admin
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace manager\repo;
|
||||
use \manager\Database;
|
||||
use \manager\sessionManager;
|
||||
use \manager\repo\cluster as clusterRepo;
|
||||
|
||||
class machine extends parentRepo{
|
||||
|
@ -66,7 +67,7 @@
|
|||
*/
|
||||
public static function search($id_warehouse, $keyword){
|
||||
// On recupere les donnees
|
||||
$searchmachines = Database::getPDO()->prepare("SELECT * FROM machine
|
||||
$searchmachines = Database::getPDO()->prepare("SELECT id_machine, code, name FROM machine
|
||||
WHERE id_warehouse = :id_warehouse
|
||||
AND ( code LIKE '%".$keyword."%'
|
||||
OR name LIKE '%".$keyword."%'
|
||||
|
@ -359,6 +360,47 @@
|
|||
|
||||
|
||||
|
||||
/* VERIFIE MET A JOUR LE TOKEN DE SYNCHRONISATION
|
||||
*
|
||||
* @token<String> Nouveau token de synchronisation
|
||||
*
|
||||
* @return status<Boolean> VRAI si le token est correct, sinon FALSE
|
||||
*
|
||||
*/
|
||||
public static function checkToken($token){
|
||||
/* [1] On vérifie le token
|
||||
=========================================================*/
|
||||
$hash = sessionManager::secure_hash($token);
|
||||
|
||||
$byToken = self::getByToken($hash);
|
||||
|
||||
// Si aucun résultat, erreur
|
||||
if( count($byToken) < 1 )
|
||||
return false;
|
||||
|
||||
|
||||
/* [2] On met à jour le token
|
||||
=========================================================*/
|
||||
$updateToken = Database::getPDO()->prepare("UPDATE machine
|
||||
SET token = :token
|
||||
WHERE id_machine = :id_machine");
|
||||
$updateToken->execute([
|
||||
':token' => $token,
|
||||
':id_machine' => $byToken[0]['id_machine']
|
||||
]);
|
||||
|
||||
|
||||
/* [3] On retourne que tout s'est bien déroulé
|
||||
=========================================================*/
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@
|
|||
VALUES(DEFAULT, :name, :password, :token)");
|
||||
$insert_warehouse->execute([
|
||||
':name' => $name,
|
||||
':password' => sessionManager::secure_sha1( $password ),
|
||||
':token' => sessionManager::secure_sha1( uniqid() )
|
||||
':password' => sessionManager::secure_hash( $password ),
|
||||
':token' => sessionManager::secure_hash( uniqid() )
|
||||
]);
|
||||
|
||||
/* [3] On retourne l'id_warehouse ou FALSE si erreur
|
||||
|
@ -74,7 +74,7 @@
|
|||
/* [2] On met à jour le token
|
||||
=========================================================*/
|
||||
/* (1) On crée un nouveau token */
|
||||
$new_token = sessionManager::secure_sha1( uniqid() );
|
||||
$new_token = sessionManager::secure_hash( uniqid() );
|
||||
|
||||
/* (2) On applique le nouveau token */
|
||||
$update_token = Database::getPDO()->prepare("UPDATE warehouse
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
/*************************/
|
||||
/* SECURE SHA1 ALGORITHM */
|
||||
/*************************/
|
||||
public static function secure_sha1($data){
|
||||
return sha1( '">\[..|{@#))'.sha1($data.'_)Q@#((%*_$%(@#') );
|
||||
public static function secure_hash($data){
|
||||
return hash('sha256', '">\[..|{@#))'.hash('sha256', $data.'_)Q@#((%*_$%(@#') );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -185,7 +185,7 @@
|
|||
/* [5] Mot de passe
|
||||
=========================================================*/
|
||||
public function testPasswordSizeEqCorrect(){
|
||||
$password_hash = \manager\sessionManager::secure_sha1('monmotdepasse');
|
||||
$password_hash = \manager\sessionManager::secure_hash('monmotdepasse');
|
||||
|
||||
$this->assertEquals( 40, strlen($password_hash) );
|
||||
$this->assertTrue( \manager\Checker::run('user.password', $password_hash) );
|
||||
|
@ -199,7 +199,7 @@
|
|||
}
|
||||
|
||||
public function testPasswordSizeSupIncorrect(){
|
||||
$password_hash = \manager\sessionManager::secure_sha1('monmotdepasse').'a';
|
||||
$password_hash = \manager\sessionManager::secure_hash('monmotdepasse').'a';
|
||||
|
||||
$this->assertGreaterThan( 40, strlen($password_hash) );
|
||||
$this->assertFalse( \manager\Checker::run('user.password', $password_hash) );
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
=========================================================*/
|
||||
public function testSecureSHA1(){
|
||||
$plain = 'montexteclair';
|
||||
$hash = \manager\sessionManager::secure_sha1($plain);
|
||||
$hash = \manager\sessionManager::secure_hash($plain);
|
||||
|
||||
// Verification desuiee
|
||||
$this->assertEquals(40, strlen($hash) );
|
||||
|
|
|
@ -6,18 +6,19 @@
|
|||
|
||||
|
||||
|
||||
$hash = 'mySecretKey';
|
||||
$hash = 'password';
|
||||
$hashes = [];
|
||||
|
||||
|
||||
|
||||
for( $i = 0 ; $i < 1000 ; $i++ ){
|
||||
$hash = sessionManager::secure_sha1($hash);
|
||||
$hash = sessionManager::secure_hash($hash);
|
||||
|
||||
if( in_array($hash, $hashes) )
|
||||
if( isset($hashes[$hash]) )
|
||||
var_dump('already');
|
||||
|
||||
$hashes[] = $hash;
|
||||
$hashes[$hash] = null;
|
||||
var_dump($hash);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -70,8 +70,16 @@
|
|||
|
||||
// Liste des machines
|
||||
foreach( $answer->get('machines') as $machine){
|
||||
$clusters = new Repo('machine/getClusters', array($machine['id_machine']));
|
||||
$clusters = $clusters->answer();
|
||||
|
||||
/* (1) On récupère les groupes de la machine */
|
||||
$clustersReq = new ModuleRequest('machineDefault/getClusters', [
|
||||
'id_machine' => $machine['id_machine']
|
||||
]);
|
||||
$clustersRes = $clustersReq->dispatch();
|
||||
|
||||
/* (2) Gestion si erreur */
|
||||
if( $clustersRes->error == ManagerError::Success ) $clusters = $clustersRes->get('clusters');
|
||||
else $clusters = [];
|
||||
|
||||
echo "<article class='inline-box' id='".$machine['id_machine']."'>";
|
||||
// Nom de la machine
|
||||
|
|
|
@ -72,8 +72,16 @@
|
|||
|
||||
// Liste des utilisateurs
|
||||
foreach( $answer->get('users') as $user){
|
||||
$clusters = new Repo('user/getClusters', [$user['id_user']]);
|
||||
$clusters = $clusters->answer();
|
||||
|
||||
/* (1) On récupère les groupes de la machine */
|
||||
$clustersReq = new ModuleRequest('userDefault/getClusters', [
|
||||
'id_user' => $user['id_user']
|
||||
]);
|
||||
$clustersRes = $clustersReq->dispatch();
|
||||
|
||||
/* (2) Gestion si erreur */
|
||||
if( $clustersRes->error == ManagerError::Success ) $clusters = $clustersRes->get('clusters');
|
||||
else $clusters = [];
|
||||
|
||||
echo "<article class='inline-box' id='".$user['id_user']."'>";
|
||||
|
||||
|
|
Loading…
Reference in New Issue