148 lines
4.4 KiB
PHP
Executable File
148 lines
4.4 KiB
PHP
Executable File
<?php require('manager/security.php'); session_init();
|
|
|
|
/***********************************************************
|
|
* *
|
|
* MANAGER DES UTILISATEURS *
|
|
* *
|
|
************************************************************
|
|
* *
|
|
* [0] Constantes *
|
|
* [1] ROUTAGE de niveau 1 *
|
|
* [2] Authentification *
|
|
* [a] userlist *
|
|
* [b] Connection *
|
|
* [c] Déconnection *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
* *
|
|
***********************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [1] ROUTAGE DE NIVEAU 1
|
|
============================================================*/
|
|
function user_switch_level_1($request, $answer){
|
|
|
|
switch( $request->level_1 ){
|
|
|
|
/****************************/
|
|
/* authentification (login) */
|
|
/****************************/
|
|
case 'authentification':
|
|
$areSetParam = isset($request->username) && isset($request->password); // les arguments existent
|
|
$typeOkParam = $areSetParam && is_string($request->username) && is_string($request->password); // ils sont tous 2 des string
|
|
$nEmptyParam = $typeOkParam && strlen($request->username) > 0 && strlen($request->password) > 0; // d'au moins 1 caractère
|
|
|
|
if( $areSetParam && $typeOkParam && $nEmptyParam )
|
|
$answer->request = user_authentification($request->username, $request->password);
|
|
else{
|
|
if ( !$areSetParam ) $answer->request= 'missing_param';
|
|
elseif( !$typeOkParam ) $answer->request = 'wrong_type';
|
|
else $answer->request = 'empty_param';
|
|
}
|
|
break;
|
|
|
|
|
|
/*****************/
|
|
/* déconnection */
|
|
/*****************/
|
|
case 'exit':
|
|
$_SESSION['username'] = null; // on supprime l'identifiant
|
|
if( $_SESSION['username'] == null )
|
|
$answer->request = 'success'; // succès
|
|
else
|
|
$answer->request = 'error';
|
|
break;
|
|
|
|
|
|
|
|
/***********/
|
|
/* DEFAULT */
|
|
/***********/
|
|
default:
|
|
$answer->request = 'unknown_level_1';
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [2] AUTHENTIFICATION
|
|
============================================================*/
|
|
|
|
/* [a] userlist */
|
|
function user_getUserList(){
|
|
$userlistFile = file_get_contents("src/userlist.json");
|
|
return json_decode( $userlistFile );
|
|
}
|
|
|
|
|
|
/* [b] CONNECTION
|
|
========================================================*/
|
|
/* GESTION DE L'AUTHENTIFICATION D'UN UTILISATEUR
|
|
*
|
|
* @param username<String> Identifiant de l'utilisateur
|
|
* @param password<String> Mot de passe de l'utilisateur
|
|
*
|
|
* si @username est référencé et que le mot de passe associé vaut @password
|
|
* alors @return TRUE sinon FALSE
|
|
* + mise ajout à @answer
|
|
*
|
|
* Les variables sessions suivantes sont définies :
|
|
* - $_SESSION['permissions']
|
|
* - $_SESSION['userid']
|
|
* - $_SESSION['username']
|
|
*
|
|
* @return Boolean true si l'utilisateur est ok
|
|
*/
|
|
function user_authentification($username, $password){
|
|
|
|
// [1] On récupère la liste d'utilisateurs (/src/userlist.json)
|
|
$userList = user_getUserList();
|
|
|
|
// [2] On check l'existence de l'utilisateur
|
|
if( isset($userList->{$username}) ){
|
|
|
|
// [3] On check le mot de passe
|
|
if( $userList->{$username}->password == $password ){
|
|
// on définit les variables session
|
|
$_SESSION['username'] = $username;
|
|
$_SESSION['permissions'] = $userList->{$username}->permissions;
|
|
return 'success';
|
|
}else
|
|
return 'wrong_password';
|
|
|
|
}else
|
|
return 'unknown_user';
|
|
}
|
|
|
|
|
|
?>
|