Création d'utilisateur fonctionnelle
Création des utilisateurs avec login/mail/password/reference/permission. Gestion de l'unicité du login, du mail, de la reference. Vérification de création.
This commit is contained in:
parent
1887be36cd
commit
d54086c049
|
@ -80,5 +80,4 @@
|
||||||
|
|
||||||
// var_dump($response);
|
// var_dump($response);
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -5,8 +5,8 @@
|
||||||
"description": "Connexion avec un login (identifiant ou adresse mail) et un mot de passe.",
|
"description": "Connexion avec un login (identifiant ou adresse mail) et un mot de passe.",
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" },
|
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(255)" },
|
||||||
"password": { "description": "Mot de passe", "type":"text" }
|
"password": { "description": "Mot de passe", "type":"text" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -20,7 +20,29 @@
|
||||||
"getById": {
|
"getById": {
|
||||||
"description": "Retourne les informations d'un utilisateur d'id donne.",
|
"description": "Retourne les informations d'un utilisateur d'id donne.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": { "id_user" : "id" }
|
"parameters": {
|
||||||
|
"id_user": { "description": "UID de l'utilisateur recherche.", "type": "id" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"getAll": {
|
||||||
|
"description": "Retourne les informations de tous les utilisateurs.",
|
||||||
|
"permissions": ["admin"],
|
||||||
|
"parameters": {}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"create": {
|
||||||
|
"description": "Creation d'un nouvel utilisateur.",
|
||||||
|
"permissions": ["admin"],
|
||||||
|
"parameters": {
|
||||||
|
"login" : { "description": "Login de l'utilisateur, 30 caracteres maximum.", "type": "varchar(30)" },
|
||||||
|
"password" : { "description": "Mot de passe de l'utilisateur.", "type": "text" },
|
||||||
|
"mail" : { "description": "Adresse mail de l'utilisateur.", "type": "mail" },
|
||||||
|
"reference" : { "description": "UID d'une personne d'un sondage, peut etre vide.", "type": "text" },
|
||||||
|
"permissions": { "description": "Liste des permissions de l'utilisateur.", "type": "text" }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
"login",
|
"login",
|
||||||
"getById",
|
"getById",
|
||||||
"getAll",
|
"getAll",
|
||||||
|
"checkUnique",
|
||||||
"create",
|
"create",
|
||||||
"remove"
|
"remove"
|
||||||
],
|
],
|
||||||
|
|
|
@ -219,8 +219,8 @@
|
||||||
return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value);
|
return $checker && is_string($value) && preg_match('/^[\da-f]{40}$/i', $value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'user.status':
|
case 'array':
|
||||||
return $checker && is_numeric($value) && floor($value) == $value && $value >= 0 && $value <= 100;
|
return $checker && is_array($value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,6 +86,74 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* RETOURNE LA LISTE DE TOUS LES UTILISATEURS
|
||||||
|
*
|
||||||
|
* @return users<Array> Tableau contenant les informations de tous les utilisateurs
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function getAll(){
|
||||||
|
/* [1] On recupere les donnees des utilisateurs
|
||||||
|
=========================================================*/
|
||||||
|
$getUsers = new Repo('user/getAll');
|
||||||
|
$users_data = $getUsers->answer();
|
||||||
|
|
||||||
|
// Si aucun utilisateur n'est trouve
|
||||||
|
if( $users_data === false ) return array('ModuleError' => ManagerError::ModuleError);
|
||||||
|
|
||||||
|
/* [2] On met les permissions au bon format (string -> array)
|
||||||
|
=========================================================*/
|
||||||
|
foreach($users_data as $i=>$user)
|
||||||
|
$users_data[$i]['permission'] = explode( ',', str_replace(' ', '', $user['permission']) );
|
||||||
|
|
||||||
|
/* [3] Gestion du retour
|
||||||
|
=========================================================*/
|
||||||
|
return array(
|
||||||
|
'ModuleError' => ManagerError::Success,
|
||||||
|
'users' => $users_data
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* CREE UN UTILISATEUR
|
||||||
|
*
|
||||||
|
* @login<String> Login (identifiant) de l'utilisateur
|
||||||
|
* @password<String> Password de l'utilisateur
|
||||||
|
* @mail<String> Adresse mail de l'utilisateur
|
||||||
|
* @reference<int> Reference vers une Personne (sinon NULL)
|
||||||
|
* @permissions<String> Liste des permissions de l'utilisateur
|
||||||
|
*
|
||||||
|
* @return id_user<int> Renvoie l'id de l'utilisateur cree
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function create($login, $password, $mail, $reference, $permissions){
|
||||||
|
/* [0] Verification et formattage des INPUT
|
||||||
|
=========================================================*/
|
||||||
|
$password = sessionManager::sha1($password);
|
||||||
|
$reference = (is_numeric($reference)) ? (int) $reference : null;
|
||||||
|
$permissions = explode( ',', str_replace(' ', '', $permissions) );
|
||||||
|
|
||||||
|
/* [1] Creation de l'utilisateur
|
||||||
|
=========================================================*/
|
||||||
|
$create = new Repo('user/create', array($login, $password, $mail, $reference, $permissions));
|
||||||
|
$created_id = $create->answer();
|
||||||
|
|
||||||
|
// Si erreur de creation, on retourne une erreur
|
||||||
|
if( $created_id === false ) return array( 'ModuleError' => ManagerError::ModuleError );
|
||||||
|
|
||||||
|
/* [2] Gestion du retour
|
||||||
|
=========================================================*/
|
||||||
|
return array(
|
||||||
|
'ModuleError' => ManagerError::Success,
|
||||||
|
'id_user' => $created_id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// [x] "login",
|
// [x] "login",
|
||||||
// [x] "logout",
|
// [x] "logout",
|
||||||
// [x] "getById",
|
// [x] "getById",
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace manager\repo;
|
namespace manager\repo;
|
||||||
use \manager\Database;
|
use \manager\Database;
|
||||||
|
use \manager\sessionManager;
|
||||||
|
|
||||||
class user{
|
class user{
|
||||||
|
|
||||||
|
@ -32,7 +33,7 @@
|
||||||
$check->execute(array(
|
$check->execute(array(
|
||||||
':username' => $login,
|
':username' => $login,
|
||||||
':mail' => $login,
|
':mail' => $login,
|
||||||
':password' => sha1($password)
|
':password' => sessionManager::sha1($password)
|
||||||
));
|
));
|
||||||
$result = $check->fetch();
|
$result = $check->fetch();
|
||||||
|
|
||||||
|
@ -75,7 +76,139 @@
|
||||||
|
|
||||||
/* [3] Gestion du retour
|
/* [3] Gestion du retour
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
return Database::delNumeric( $userData );
|
return Database::delNumeric( $userData, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* RETOURNE LES DONNEES DE TOUS LES UTILISATEURS
|
||||||
|
*
|
||||||
|
* @return users<Array> Tableau contenant les donnees des utilisateurs, retourne FALSE si erreur
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function getAll(){
|
||||||
|
/* [1] On effectue la requete
|
||||||
|
=========================================================*/
|
||||||
|
$getUsers = Database::getPDO()->query("SELECT id_user, login, mail, permission
|
||||||
|
FROM users
|
||||||
|
ORDER BY login ASC");
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] On recupere le resultat de la requete
|
||||||
|
=========================================================*/
|
||||||
|
$usersData = $getUsers->fetchAll();
|
||||||
|
|
||||||
|
// Si l'utilisateur n'existe pas, on retourne FALSE
|
||||||
|
if( $usersData === false ) return false;
|
||||||
|
|
||||||
|
/* [3] Gestion du retour
|
||||||
|
=========================================================*/
|
||||||
|
return Database::delNumeric( $usersData );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* CREE UN UTILISATEUR
|
||||||
|
*
|
||||||
|
* @login<String> Login (identifiant) de l'utilisateur
|
||||||
|
* @password<String> Password de l'utilisateur
|
||||||
|
* @mail<String> Adresse mail de l'utilisateur
|
||||||
|
* @reference<int> Reference vers une Personne (sinon NULL)
|
||||||
|
* @permissions<Array> Liste des permissions de l'utilisateur
|
||||||
|
*
|
||||||
|
* @return id_user<int> Renvoie l'id de l'utilisateur cree ou FALSE si erreur
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static function create($login, $password, $mail, $reference, $permissions){
|
||||||
|
/* [0] Verification et formattage des INPUT
|
||||||
|
=========================================================*/
|
||||||
|
$checkInput = Database::check('sha1', $password);
|
||||||
|
$checkInput = $checkInput && ( Database::check('int', $reference) || $reference === null );
|
||||||
|
$checkInput = $checkInput && Database::check('array', $permissions);
|
||||||
|
|
||||||
|
// Si erreur en entree, on retourne FAUX
|
||||||
|
if( !$checkInput ) return false;
|
||||||
|
|
||||||
|
// On formatte les permissions (array -> string)
|
||||||
|
$permissions = implode(',', $permissions);
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] On verifie que le login/mail et reference sont uniques
|
||||||
|
=========================================================*/
|
||||||
|
$checkUnique = Database::getPDO()->prepare("SELECT id_user
|
||||||
|
FROM users
|
||||||
|
WHERE login = :login
|
||||||
|
OR mail = :mail
|
||||||
|
OR ( reference = :reference AND reference is not NULL )");
|
||||||
|
$checkUnique->execute(array(
|
||||||
|
':login' => $login,
|
||||||
|
':mail' => $mail,
|
||||||
|
':reference' => $reference
|
||||||
|
));
|
||||||
|
$unique = $checkUnique->fetch() === false;
|
||||||
|
|
||||||
|
// Si un utilisateur a le meme LOGIN/MAIL ou REFERENCE, on retourne une erreur
|
||||||
|
if( !$unique ) return false;
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Creation de l'utilisateur
|
||||||
|
=========================================================*/
|
||||||
|
/* (1) Si reference NULL */
|
||||||
|
if( $reference == null ){
|
||||||
|
|
||||||
|
$create = Database::getPDO()->prepare("INSERT INTO users(id_user, login, password, mail, reference, permission)
|
||||||
|
VALUES(DEFAULT, :login, :password, :mail, NULL, :permission)");
|
||||||
|
$create->execute(array(
|
||||||
|
':login' => $login,
|
||||||
|
':password' => $password,
|
||||||
|
':mail' => $mail,
|
||||||
|
':permission' => $permissions
|
||||||
|
));
|
||||||
|
|
||||||
|
/* (2) Si reference est defini */
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$create = Database::getPDO()->prepare("INSERT INTO users(id_user, login, password, mail, reference, permission)
|
||||||
|
VALUES(DEFAULT, :login, :password, :mail, :reference, :permission)");
|
||||||
|
$create->execute(array(
|
||||||
|
':login' => $login,
|
||||||
|
':password' => $password,
|
||||||
|
':mail' => $mail,
|
||||||
|
':reference' => (int) $reference,
|
||||||
|
':permission' => $permissions
|
||||||
|
));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* [3] Verification de la creation + recuperation id
|
||||||
|
=========================================================*/
|
||||||
|
$checkCreate = Database::getPDO()->prepare("SELECT id_user
|
||||||
|
FROM users
|
||||||
|
WHERE login = :login
|
||||||
|
AND password = :password
|
||||||
|
AND mail = :mail
|
||||||
|
AND ( reference = :reference OR reference is NULL )
|
||||||
|
AND permission = :permission");
|
||||||
|
$checkCreate->execute(array(
|
||||||
|
':login' => $login,
|
||||||
|
':password' => $password,
|
||||||
|
':mail' => $mail,
|
||||||
|
':reference' => (int) $reference,
|
||||||
|
':permission' => $permissions
|
||||||
|
));
|
||||||
|
|
||||||
|
// On recupere l'id de l'utilisateur
|
||||||
|
$id_user = $checkCreate->fetch();
|
||||||
|
|
||||||
|
// Si erreur, on retourne FALSE
|
||||||
|
if( $id_user === false ) return false;
|
||||||
|
|
||||||
|
/* [4] Gestion du retour
|
||||||
|
=========================================================*/
|
||||||
|
return $id_user['id_user'];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue