Merge branch 'dev' into feature/SATS/states
This commit is contained in:
commit
e208dade95
|
@ -44,6 +44,27 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************/
|
||||||
|
/* SECURE SHA1 ALGORITHM */
|
||||||
|
/*************************/
|
||||||
|
function secure_hash($data, $salt='">\[..|{@#))', $depth=1){
|
||||||
|
/* (1) On hash @depth fois
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
$hash = $data;
|
||||||
|
$c = 0;
|
||||||
|
|
||||||
|
for( $h = 0 ; $h < $depth ; $h++ ){
|
||||||
|
$hash = hash('sha512', $salt.hash('sha512', $hash.'_)Q@#((%*_$%(@#') );
|
||||||
|
$c++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* (2) On renvoie le résultat
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
return $hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@
|
||||||
|
|
||||||
// Hash sha1/md5
|
// Hash sha1/md5
|
||||||
case 'hash':
|
case 'hash':
|
||||||
return $checker && is_string($value) && preg_match('/^[\da-f]+$/i', $value) && (strlen($value) == 40 || strlen($value) == 64);
|
return $checker && is_string($value) && preg_match('/^[\da-f]+$/i', $value) && (strlen($value) == 64 || strlen($value) == 128);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'alphanumeric':
|
case 'alphanumeric':
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
namespace api\module;
|
namespace api\module;
|
||||||
use \database\core\DatabaseDriver;
|
use \database\core\DatabaseDriver;
|
||||||
use \manager\sessionManager;
|
|
||||||
use \api\core\Authentification;
|
use \api\core\Authentification;
|
||||||
use \database\core\Repo;
|
use \database\core\Repo;
|
||||||
use \manager\repo\cluster as clusterRepo;
|
use \manager\repo\cluster as clusterRepo;
|
||||||
|
@ -47,7 +46,7 @@
|
||||||
|
|
||||||
/* [2] On vérifie le mot de passe
|
/* [2] On vérifie le mot de passe
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$hash_password = sessionManager::secure_hash($password);
|
$hash_password = secure_hash($password, $name);
|
||||||
|
|
||||||
// Si mot de passe faux, on retourne le status FALSE
|
// Si mot de passe faux, on retourne le status FALSE
|
||||||
if( $nameFetched[0]['password'] != $hash_password )
|
if( $nameFetched[0]['password'] != $hash_password )
|
||||||
|
@ -101,7 +100,7 @@
|
||||||
|
|
||||||
/* [2] On vérifie le mot de passe
|
/* [2] On vérifie le mot de passe
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$hash_password = sessionManager::secure_hash($password);
|
$hash_password = secure_hash($password, $username);
|
||||||
|
|
||||||
// Si mot de passe faux, on retourne le status FALSE
|
// Si mot de passe faux, on retourne le status FALSE
|
||||||
if( $usernameFetched['password'] != $hash_password )
|
if( $usernameFetched['password'] != $hash_password )
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
// Si une erreur est retournee, on retourne une erreur
|
// Si une erreur est retournee, on retourne une erreur
|
||||||
if( $id_machine === false )
|
if( $id_machine === false )
|
||||||
return ['error' => new Error(Err::error)];
|
return ['error' => new Error(Err::ModuleError)];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -429,19 +429,38 @@
|
||||||
|
|
||||||
/* ENVOI DES DONNEES D'INITIALISATION DU SYSTEME DES MACHINES
|
/* ENVOI DES DONNEES D'INITIALISATION DU SYSTEME DES MACHINES
|
||||||
*
|
*
|
||||||
* @return data<Array> Données d'initialisation du système
|
* @return id_machine<int> UID de la machine
|
||||||
|
* @return token<string> Nouveau token d'identification (hashage cyclique)
|
||||||
|
* @return unlock<string> Code de déblocage de la machine
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function init($params){
|
public function init($params){
|
||||||
extract($params);
|
extract($params);
|
||||||
|
|
||||||
/* [1] On récupére la liste des actions
|
|
||||||
|
/* [1] On essaie de débloquer la machine
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) On rédige la requête */
|
||||||
|
$unlockReq = new Repo('machine/unlock', [
|
||||||
|
$_SESSION['WAREHOUSE']['id'],
|
||||||
|
$id_machine,
|
||||||
|
$unlock,
|
||||||
|
$token
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* (2) On gère l'erreur */
|
||||||
|
if( $unlockReq->error->get() != Err::Success || !$unlockReq->answer() )
|
||||||
|
return [ 'error' => new Error(Err::TokenError) ];
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] On récupére la liste des actions
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$actionsReq = new Repo('action/getAll');
|
$actionsReq = new Repo('action/getAll');
|
||||||
$actions = ($actionsReq->error->get()==Err::Success) ? $actionsReq->answer() : [];
|
$actions = ($actionsReq->error->get()==Err::Success) ? $actionsReq->answer() : [];
|
||||||
// var_dump($actionsReq->answer());
|
// var_dump($actionsReq->answer());
|
||||||
|
|
||||||
/* [2] On regroupe les actions par TIMEOUT
|
|
||||||
|
/* [3] On regroupe les actions par TIMEOUT
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$sorted_actions = [];
|
$sorted_actions = [];
|
||||||
|
|
||||||
|
@ -459,12 +478,14 @@
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [3] On récupère la liste des états
|
|
||||||
|
/* [4] On récupère la liste des états
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$globalStatesReq = new Repo('global_state/getAll');
|
$globalStatesReq = new Repo('global_state/getAll');
|
||||||
$globalStates = ($globalStatesReq->error->get()==Err::Success) ? $globalStatesReq->answer() : [];
|
$globalStates = ($globalStatesReq->error->get()==Err::Success) ? $globalStatesReq->answer() : [];
|
||||||
|
|
||||||
/* [4] On récupère la liste des MODULES (puces)
|
|
||||||
|
/* [5] On récupère la liste des MODULES (puces)
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$chipsReq = new Repo('chip/getAll', [$_SESSION['WAREHOUSE']['id']]);
|
$chipsReq = new Repo('chip/getAll', [$_SESSION['WAREHOUSE']['id']]);
|
||||||
$chips = ($chipsReq->error->get()==Err::Success) ? $chipsReq->answer() : [];
|
$chips = ($chipsReq->error->get()==Err::Success) ? $chipsReq->answer() : [];
|
||||||
|
@ -499,7 +520,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* [7] On récupère les utilisateurs + accès sur la machine
|
/* [6] On récupère les utilisateurs + accès sur la machine
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
/* (1) On récupère les utilisateurs et leurs permissions */
|
/* (1) On récupère les utilisateurs et leurs permissions */
|
||||||
$permissionsReq = new Repo('action_merge/getAccess', [
|
$permissionsReq = new Repo('action_merge/getAccess', [
|
||||||
|
@ -582,7 +603,7 @@
|
||||||
$checkToken = new Repo('machine/checkToken', [ $_SESSION['WAREHOUSE']['id'], $token, $renew ]);
|
$checkToken = new Repo('machine/checkToken', [ $_SESSION['WAREHOUSE']['id'], $token, $renew ]);
|
||||||
|
|
||||||
// Si token incorrect, on envoie une erreur
|
// Si token incorrect, on envoie une erreur
|
||||||
if( $checkToken->answer() !== true )
|
if( !$checkToken->answer() )
|
||||||
return [ 'error' => new Error(Err::TokenError) ];
|
return [ 'error' => new Error(Err::TokenError) ];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
namespace database\repo;
|
namespace database\repo;
|
||||||
use \database\core\DatabaseDriver;
|
use \database\core\DatabaseDriver;
|
||||||
use \manager\sessionManager;
|
|
||||||
use \orm\core\Table;
|
use \orm\core\Table;
|
||||||
use \orm\core\Rows;
|
use \orm\core\Rows;
|
||||||
use \api\core\Checker;
|
use \api\core\Checker;
|
||||||
|
@ -28,7 +27,8 @@
|
||||||
'id_machine' => Rows::INSERT_DEFAULT,
|
'id_machine' => Rows::INSERT_DEFAULT,
|
||||||
'id_warehouse' => $id_warehouse,
|
'id_warehouse' => $id_warehouse,
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'token' => sessionManager::secure_hash( uniqid() )
|
'token' => Rows::NULL,
|
||||||
|
'unlock_code' => Rows::NULL
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Si erreur (car name doit être unique)
|
// Si erreur (car name doit être unique)
|
||||||
|
@ -66,7 +66,8 @@
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
->whereName(["%$keyword%", Rows::COND_LIKE])
|
->whereName(["%$keyword%", Rows::COND_LIKE])
|
||||||
->select('id_machine')
|
->select('id_machine')
|
||||||
->select('name');
|
->select('name')
|
||||||
|
->orderby('name', Rows::ORDER_ASC);
|
||||||
|
|
||||||
return $search->fetch();
|
return $search->fetch();
|
||||||
}
|
}
|
||||||
|
@ -89,6 +90,7 @@
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$cluster = Table::get('machine_cluster')
|
$cluster = Table::get('machine_cluster')
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
|
->orderby('name', Rows::ORDER_ASC)
|
||||||
->select('*');
|
->select('*');
|
||||||
$cluster_merge = Table::get('machine_cluster_merge')
|
$cluster_merge = Table::get('machine_cluster_merge')
|
||||||
->whereIdMachine($id_machine)
|
->whereIdMachine($id_machine)
|
||||||
|
@ -182,6 +184,7 @@
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
->select('id_machine')
|
->select('id_machine')
|
||||||
->select('name')
|
->select('name')
|
||||||
|
->orderby('id_machine', Rows::ORDER_ASC)
|
||||||
->unique();
|
->unique();
|
||||||
|
|
||||||
return $machine->fetch();
|
return $machine->fetch();
|
||||||
|
@ -211,7 +214,8 @@
|
||||||
->whereName($name)
|
->whereName($name)
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
->select('id_machine')
|
->select('id_machine')
|
||||||
->selcet('name')
|
->select('name')
|
||||||
|
->orderby('name', Rows::ORDER_ASC)
|
||||||
->unique();
|
->unique();
|
||||||
|
|
||||||
return $machine->fetch();
|
return $machine->fetch();
|
||||||
|
@ -242,6 +246,7 @@
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
->select('id_machine')
|
->select('id_machine')
|
||||||
->select('name')
|
->select('name')
|
||||||
|
->orderby('name', Rows::ORDER_ASC)
|
||||||
->unique();
|
->unique();
|
||||||
|
|
||||||
return $machine->fetch();
|
return $machine->fetch();
|
||||||
|
@ -268,6 +273,7 @@
|
||||||
$machine = Table::get('machine')
|
$machine = Table::get('machine')
|
||||||
->whereIdWarehouse($id_warehouse)
|
->whereIdWarehouse($id_warehouse)
|
||||||
->select('id_machine')
|
->select('id_machine')
|
||||||
|
->orderby('name', Rows::ORDER_ASC)
|
||||||
->select('name');
|
->select('name');
|
||||||
|
|
||||||
return $machine->fetch();
|
return $machine->fetch();
|
||||||
|
@ -275,13 +281,55 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* DEBLOQUE UNE MACHINE (PREMIER TOKEN) AVEC UN CODE DE DEBLOCAGE
|
||||||
|
*
|
||||||
|
* @id_warehouse<int> UID de l'entrepot
|
||||||
|
* @id_machine<int> UID de la machine
|
||||||
|
* @unlock_code<string> Code de déblocage
|
||||||
|
* @first_token<string> Premier token de hashage cyclique
|
||||||
|
*
|
||||||
|
* @return unlocked<bool> TRUE si débloqué, sinon FALSE
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function unlock($id_warehouse, $id_machine, $unlock_code, $first_token){
|
||||||
|
/* [1] On vérifie le code déblocage
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) On effectue la requête */
|
||||||
|
$machine = Table::get('machine')
|
||||||
|
->select('id_machine')
|
||||||
|
->select('name')
|
||||||
|
->whereId($id_machine)
|
||||||
|
->whereIdWarehouse($id_warehouse)
|
||||||
|
->whereUnlockCode($unlock_code)
|
||||||
|
->fetch();
|
||||||
|
|
||||||
|
/* (2) On vérifie si on a bien le bon code */
|
||||||
|
if( count($machine) < 1 )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Si le code est bon, on le supprime et on met le token
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) Update (edit) machine */
|
||||||
|
$updated = Table::get('machine')
|
||||||
|
->whereId($id_machine)
|
||||||
|
->whereIdWarehouse($id_warehouse)
|
||||||
|
->edit([
|
||||||
|
'unlock_code' => null,
|
||||||
|
'token' => $first_token
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* (2) Manage edition error */
|
||||||
|
return $updated;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* VERIFIE MET A JOUR LE TOKEN DE SYNCHRONISATION
|
/* VERIFIE MET A JOUR LE TOKEN DE SYNCHRONISATION
|
||||||
*
|
*
|
||||||
* @id_warehouse<int> UID de l'entrepot
|
* @id_warehouse<int> UID de l'entrepot
|
||||||
* @token<String> Token de synchronisation
|
* @token<String> Token de synchronisation
|
||||||
* @newToken<String> Nouveau token de synchronisation (optionnel, uniquement quand on arrive à la fin du cycle de la hashChain)
|
* @newToken<String> Nouveau token de synchronisation (optionnel, uniquement quand on arrive à la fin du cycle de la hashChain)
|
||||||
*
|
*
|
||||||
* @return status<Boolean> VRAI si le token est correct, sinon FALSE
|
* @return status<Boolean> VRAI si le token est correct, sinon FALSE
|
||||||
|
@ -290,22 +338,22 @@
|
||||||
public static function checkToken($id_warehouse, $token, $newToken=null){
|
public static function checkToken($id_warehouse, $token, $newToken=null){
|
||||||
/* [1] On vérifie le token
|
/* [1] On vérifie le token
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$hash = sessionManager::secure_hash($token);
|
$hash = hash('sha512', $token);
|
||||||
|
|
||||||
$byToken = self::getByToken($id_warehouse, $hash);
|
$byToken = self::getByToken($id_warehouse, $hash);
|
||||||
|
|
||||||
// Si aucun résultat, erreur
|
// Si aucun résultat, erreur
|
||||||
if( count($byToken) < 1 )
|
if( $byToken == false )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
/* [2] On met à jour le token
|
/* [2] On met à jour le token
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
$updated = Table::get('machine')
|
$updated = Table::get('machine')
|
||||||
->whereId($id_machine)
|
->whereId($byToken['id_machine'])
|
||||||
->edit([
|
->edit([
|
||||||
'token' => Checker::run('hash', $newToken) ? $newToken : $token,
|
'token' => Checker::run('hash', $newToken) ? $newToken : $token,
|
||||||
'id_machine' => $byToken[0]['id_machine']
|
'id_machine' => $byToken['id_machine']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace manager;
|
|
||||||
|
|
||||||
|
|
||||||
class sessionManager{
|
|
||||||
|
|
||||||
private static $prefix;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************/
|
|
||||||
/* SECURE SHA1 ALGORITHM */
|
|
||||||
/*************************/
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************/
|
|
||||||
/* INITIALISATION DE SESSION */
|
|
||||||
/*****************************/
|
|
||||||
private static function reset_session($session_id=null){
|
|
||||||
// On ferme la session
|
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
// On definit l'id session si donne en argument
|
|
||||||
if( $session_id != null )
|
|
||||||
session_id( $session_id );
|
|
||||||
|
|
||||||
// Precaution: on met a jour le cookie
|
|
||||||
setcookie('PHPSESSID', session_id(), time()+60*30 );
|
|
||||||
|
|
||||||
// On redemarre la session avec le bon id session
|
|
||||||
\session_start();
|
|
||||||
|
|
||||||
// On met a jour le token
|
|
||||||
self::update_token();
|
|
||||||
|
|
||||||
|
|
||||||
header('Refresh: 0');
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************/
|
|
||||||
/* GENERE UN TOKEN */
|
|
||||||
/*******************/
|
|
||||||
private static function update_token(){
|
|
||||||
$token = self::$prefix.self::secure_sha1(uniqid());
|
|
||||||
|
|
||||||
// On definit le token en session
|
|
||||||
$_SESSION['session_token'] = $token;
|
|
||||||
|
|
||||||
// On definit le token en cookie
|
|
||||||
$_COOKIE['session_token'] = $_SESSION['session_token'];
|
|
||||||
setcookie('session_token', $_COOKIE['session_token'], time()+60*30 );
|
|
||||||
}
|
|
||||||
|
|
||||||
/************/
|
|
||||||
/* AMORCEUR */
|
|
||||||
/************/
|
|
||||||
public static function session_start(){
|
|
||||||
|
|
||||||
\session_start();
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [1] Génération et Gestion des donnees a utiliser
|
|
||||||
==============================================================*/
|
|
||||||
// On genere le hash a partir des donnees personnelles
|
|
||||||
self::$prefix = self::secure_sha1( $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'] );
|
|
||||||
|
|
||||||
// On cree un id session associe a ces donnees personnelles
|
|
||||||
$sessid = substr(self::$prefix,0,5) . substr(self::secure_sha1(uniqid()),0,24);
|
|
||||||
|
|
||||||
// On genere un token pour l'execution suivante
|
|
||||||
$token = self::$prefix.self::secure_sha1(uniqid());
|
|
||||||
|
|
||||||
// On definit/recupere le token
|
|
||||||
$session_token = (isset($_COOKIE['session_token'])) ? $_COOKIE['session_token'] : null;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [2] Verification de l'id session
|
|
||||||
==============================================================*/
|
|
||||||
\session_start();
|
|
||||||
|
|
||||||
// On verifie l'id session (5 premiers chars du hash des donnees perso)
|
|
||||||
$valid_sessid = strpos( session_id(), substr(self::$prefix,0,5) ) === 0;
|
|
||||||
|
|
||||||
// Si id session incorrect ou pas de token
|
|
||||||
if( !$valid_sessid )
|
|
||||||
self::reset_session( $sessid ); // On initialise la session (bon id session)
|
|
||||||
|
|
||||||
|
|
||||||
// si id session invalide
|
|
||||||
|
|
||||||
|
|
||||||
/* [3] Verification du token
|
|
||||||
==============================================================*/
|
|
||||||
// On verifie que le token est valide
|
|
||||||
$valid_token = $session_token != null; // verification de l'existence du cookie
|
|
||||||
$valid_token = $valid_token && strpos($session_token, self::$prefix) === 0; // verification des donnes personnelles
|
|
||||||
$valid_token = $valid_token && isset($_SESSION['session_token']); // verification que la variable session associee existe
|
|
||||||
$valid_token = $valid_token && $_SESSION['session_token'] == $_COOKIE['session_token']; // verification que la session est coherente
|
|
||||||
|
|
||||||
/* [4] Si token inexistant
|
|
||||||
==============================================================*/
|
|
||||||
if( !$valid_token )
|
|
||||||
self::reset_session($sessid); // On initialise la session
|
|
||||||
else
|
|
||||||
self::update_token(); // Dans tous les cas, on cree un nouveau token
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
// {3} Constantes d'insertion //
|
// {3} Constantes d'insertion //
|
||||||
const INSERT_DEFAULT = '__DEFAULT__'; // Valeur DEFAULT (pour insertion)
|
const INSERT_DEFAULT = '__DEFAULT__'; // Valeur DEFAULT (pour insertion)
|
||||||
|
const NULL = '__NULL__'; // Valeur DEFAULT (pour insertion)
|
||||||
|
|
||||||
/* Attributs */
|
/* Attributs */
|
||||||
private $driver; // Database driver label
|
private $driver; // Database driver label
|
||||||
|
@ -169,7 +170,7 @@
|
||||||
|
|
||||||
/* FILTRAGE DYNAMIQUES
|
/* FILTRAGE DYNAMIQUES
|
||||||
*
|
*
|
||||||
* @method<String> Nom de la méthode
|
* @method<String> Nom de la méthode
|
||||||
* @parameter<mixed> Valeur du paramètre
|
* @parameter<mixed> Valeur du paramètre
|
||||||
* @parameter<Array> Valeur du paramètre + type de vérification (tableau)
|
* @parameter<Array> Valeur du paramètre + type de vérification (tableau)
|
||||||
*
|
*
|
||||||
|
@ -266,9 +267,13 @@
|
||||||
/* (2) On vérifie le type de chaque valeur */
|
/* (2) On vérifie le type de chaque valeur */
|
||||||
$type = $this->schema['columns'][$field]['type'];
|
$type = $this->schema['columns'][$field]['type'];
|
||||||
|
|
||||||
if( $type == 'int' && !is_numeric($args[0][0]) ) return $this;
|
if( !is_null($args[0][0]) ){
|
||||||
if( $type == 'float' && !is_numeric($args[0][0]) ) return $this;
|
|
||||||
if( in_array($type, ['text', 'varchar']) && !is_string($args[0][0]) ) return $this;
|
if( $type == 'int' && !is_numeric($args[0][0]) ) return $this;
|
||||||
|
if( $type == 'float' && !is_numeric($args[0][0]) ) return $this;
|
||||||
|
if( in_array($type, ['text', 'varchar']) && !is_string($args[0][0]) ) return $this;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -511,6 +516,10 @@
|
||||||
/* (3) On vérifie les types des champs */
|
/* (3) On vérifie les types des champs */
|
||||||
foreach($cleared as $field=>$value){
|
foreach($cleared as $field=>$value){
|
||||||
|
|
||||||
|
// let null values
|
||||||
|
if( is_null($value) )
|
||||||
|
continue;
|
||||||
|
|
||||||
$type = $this->schema['columns'][$field]['type'];
|
$type = $this->schema['columns'][$field]['type'];
|
||||||
|
|
||||||
// {1} Si de type INT/FLOAT et pas numérique, on retire le champ //
|
// {1} Si de type INT/FLOAT et pas numérique, on retire le champ //
|
||||||
|
|
|
@ -138,6 +138,13 @@
|
||||||
$sql .= substr($value[1], 2, -2).' ';
|
$sql .= substr($value[1], 2, -2).' ';
|
||||||
|
|
||||||
/* (3) Variable */
|
/* (3) Variable */
|
||||||
|
// {1} Si NULL //
|
||||||
|
if( is_null($value[0]) ){
|
||||||
|
$sql .= 'NULL';
|
||||||
|
return $sql;
|
||||||
|
}
|
||||||
|
|
||||||
|
// {2} Si not NULL //
|
||||||
$sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset;
|
$sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset;
|
||||||
|
|
||||||
$bound[':'.$field[0].'_x_'.$field[1].'_'.$offset] = $value[0];
|
$bound[':'.$field[0].'_x_'.$field[1].'_'.$offset] = $value[0];
|
||||||
|
@ -166,6 +173,14 @@
|
||||||
$sql[$c] = $field.' = ';
|
$sql[$c] = $field.' = ';
|
||||||
|
|
||||||
/* (2) Variable */
|
/* (2) Variable */
|
||||||
|
// {1} Si NULL //
|
||||||
|
if( is_null($value) ){
|
||||||
|
$sql[$c] .= 'NULL';
|
||||||
|
$c++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// {2} Si not NULL //
|
||||||
$sql[$c] .= ':update_'.$field;
|
$sql[$c] .= ':update_'.$field;
|
||||||
|
|
||||||
$bound[':update_'.$field] = $value;
|
$bound[':update_'.$field] = $value;
|
||||||
|
|
|
@ -238,7 +238,9 @@
|
||||||
"description": "Données d'initialisation d'une machine.",
|
"description": "Données d'initialisation d'une machine.",
|
||||||
"permissions": ["warehouse"],
|
"permissions": ["warehouse"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"id_machine": { "description": "UID de la machine.", "type": "id" }
|
"id_machine": { "description": "UID de la machine.", "type": "id" },
|
||||||
|
"token": { "description": "Initialisation du code d'accès évolutif", "type": "hash" },
|
||||||
|
"unlock": { "description": "Code d'initialisation", "type": "hash" }
|
||||||
},
|
},
|
||||||
"output": {
|
"output": {
|
||||||
"data": { "description": "Données d'initialisation.", "type": "array<mixed>" }
|
"data": { "description": "Données d'initialisation.", "type": "array<mixed>" }
|
||||||
|
|
|
@ -41,7 +41,9 @@
|
||||||
|
|
||||||
"search",
|
"search",
|
||||||
|
|
||||||
"getClusters"
|
"getClusters",
|
||||||
|
|
||||||
|
"unlock"
|
||||||
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
use \api\core\AuthSystemDefault;
|
use \api\core\AuthSystemDefault;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
/* DEBUGGER */
|
/* DEBUGGER */
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
|
@ -18,14 +17,13 @@
|
||||||
/* DEBUGGER */
|
/* DEBUGGER */
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [1] Gestion des authentifications et des droits
|
/* [1] Gestion des authentifications et des droits
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
/* (1) On met à jour l'authentification et les permissions */
|
/* (1) On met à jour l'authentification et les permissions */
|
||||||
|
Request::setAuthSystem(new AuthSystemDefault);
|
||||||
|
|
||||||
$auth = AuthSystemDefault::auth();
|
$auth = AuthSystemDefault::auth();
|
||||||
|
|
||||||
Request::setAuthSystem(new AuthSystemDefault);
|
|
||||||
|
|
||||||
|
|
||||||
/* (2) On définit la page d'accueil */
|
/* (2) On définit la page d'accueil */
|
||||||
|
@ -86,7 +84,7 @@
|
||||||
// logout from admin
|
// logout from admin
|
||||||
$R->get('logout/?', function(){
|
$R->get('logout/?', function(){
|
||||||
$_SERVER['REQUEST_METHOD'] = 'POST';
|
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||||
$req = new Request('authentificationDefault/admin', ['username' => ' ', 'password' => '']);
|
$req = new Request('authentificationDefault/admin', ['username' => '-', 'password' => '']);
|
||||||
$res = $req->dispatch();
|
$res = $req->dispatch();
|
||||||
header('Location: /');
|
header('Location: /');
|
||||||
});
|
});
|
||||||
|
@ -110,7 +108,7 @@
|
||||||
// warehouse logout
|
// warehouse logout
|
||||||
$R->get('logout/?', function(){
|
$R->get('logout/?', function(){
|
||||||
$_SERVER['REQUEST_METHOD'] = 'POST';
|
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||||
(new Request('authentificationDefault/warehouse', ['name' => ' ', 'password' => '']))->dispatch();
|
(new Request('authentificationDefault/warehouse', ['name' => '---', 'password' => '']))->dispatch();
|
||||||
header('Location: /');
|
header('Location: /');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue