Updated database to use sha512 (128 char. long) + machine creation with unlock_code/token to NULL + [TODO] machine unlock management
This commit is contained in:
parent
713f473c71
commit
6b2422ee13
|
@ -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 )
|
||||||
|
|
|
@ -33,7 +33,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)];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -324,19 +324,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 = [];
|
||||||
|
|
||||||
|
@ -354,12 +373,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() : [];
|
||||||
|
@ -394,7 +415,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', [
|
||||||
|
|
|
@ -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::INSERT_DEFAULT,
|
||||||
|
'unlock_code' => Rows::INSERT_DEFAULT
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 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,39 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 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')
|
||||||
|
->whereId($id_machine)
|
||||||
|
->whereIdWarehouse($id_warehouse)
|
||||||
|
->whereUnlockCode($unlock_code)
|
||||||
|
->fetch();
|
||||||
|
|
||||||
|
var_dump($machine);
|
||||||
|
|
||||||
|
/* (2) On vérifie si on a bien le bon code */
|
||||||
|
if( $machine === false )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* 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,12 +322,12 @@
|
||||||
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 = secure_hash($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;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -169,7 +169,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)
|
||||||
*
|
*
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
Loading…
Reference in New Issue