From 2f642c7087be49bcd57f4bddb4a84f6fd96c52a0 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Tue, 12 Apr 2016 14:27:54 +0200 Subject: [PATCH] Gestion repo/module de la connection --- .htaccess | 1 - config/modules.json | 11 + config/repositories.json | 5 + css/layout.css | 2 +- css/layout.css.map | 2 +- css/layout.scss | 22 +- manager/Database.php | 25 +- manager/module/userDefault.php | 402 -------------------------------- manager/module/users.php | 58 +++++ manager/repo/user.php | 405 --------------------------------- manager/repo/users.php | 53 +++++ view.php | 6 +- 12 files changed, 161 insertions(+), 831 deletions(-) delete mode 100755 manager/module/userDefault.php create mode 100755 manager/module/users.php delete mode 100755 manager/repo/user.php create mode 100755 manager/repo/users.php diff --git a/.htaccess b/.htaccess index fca8091..052cff3 100755 --- a/.htaccess +++ b/.htaccess @@ -1,7 +1,6 @@ AuthType Basic AuthName "Private project -> wait for production" AuthUserFile /var/www/socioview.pass -Require valid-user RewriteEngine on diff --git a/config/modules.json b/config/modules.json index 79a9639..c75dae7 100755 --- a/config/modules.json +++ b/config/modules.json @@ -1,5 +1,16 @@ { + "users": [ + "login", + "getById", + "getAll", + + "create", + "edit", + "remove" + ], + + "call_log": [ "unserialize" ], diff --git a/config/repositories.json b/config/repositories.json index 88d148c..3ec46b9 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -1,4 +1,9 @@ { + + "users": [ + "login" + ], + "Personnes": [ "getById" ], diff --git a/css/layout.css b/css/layout.css index 66c0857..81bc8f8 100755 --- a/css/layout.css +++ b/css/layout.css @@ -1,2 +1,2 @@ -body{font-family:'Open Sans';font-size:15px}#WRAPPER{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e8e8e8;overflow-x:hidden;overflow-y:auto;z-index:1}#WRAPPER>#HEADER{display:block;position:fixed;top:0;left:0;width:100%;height:calc( 4em - 1px );border-bottom:1px solid #cfcfcf;background-color:#fff;z-index:9}#WRAPPER>#MENU-SIDE{display:block;position:fixed;top:4em;left:0;width:15em;height:calc( 100% - 4em );box-shadow:2px 1px 3px #ddd;background-color:#32323a;transition:all .3s;z-index:10}#WRAPPER>#CONTAINER{display:flex;position:absolute;top:4em;left:15em;width:calc( 100% - 15em - 2*1em );min-height:calc( 100% - 4em - 2*1em );padding:1em;flex-direction:row;justify-content:space-between;overflow-x:none;overflow-y:auto}#LOGIN{display:flex;position:fixed;top:0;left:-100%;width:100%;height:100%;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-items:center;background-color:#32323a;transition:left .3s ease-in-out;z-index:101}#LOGIN.active{left:0}#LOGIN>#login-icon{width:35em;height:10em;background:url("/f/svg/icon/st") center center no-repeat;background-size:auto 100%}#LOGIN>#login-form{display:block}#LOGIN>#login-form>input[type='text'],#LOGIN>#login-form>input[type='password'],#LOGIN>#login-form>input[type='button']{display:flex;width:20em;margin:2em 0;padding:1em 2em;flex-direction:column;justify-content:space-around;flex-wrap:nowrap;align-items:middle;border-radius:5px;border:1px solid #6b6b6b;background-color:#32323a;color:#fff;transition:border .2s ease-in-out;cursor:default}#LOGIN>#login-form>input[type='text']:hover,#LOGIN>#login-form>input[type='text']:focus,#LOGIN>#login-form>input[type='password']:hover,#LOGIN>#login-form>input[type='password']:focus,#LOGIN>#login-form>input[type='button']:hover,#LOGIN>#login-form>input[type='button']:focus{border-color:#53d192}#LOGIN>#login-form>input[type='button']{margin:2em auto;border:0;background-color:#53d192;color:#fff;font-weight:bold;cursor:pointer}#LOGIN>#login-form>input[type='button']:hover{box-shadow:0 0 1em #1a1a1f}#LOGIN>#login-close{display:block;position:absolute;top:2em;right:2em;width:2em;height:2em;background:url("/f/svg/close/st/container/ffffff") center center no-repeat;background-size:80%;cursor:pointer} +body{font-family:'Open Sans';font-size:15px}#WRAPPER{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e8e8e8;overflow-x:hidden;overflow-y:auto;z-index:1}#WRAPPER>#HEADER{display:block;position:fixed;top:0;left:0;width:100%;height:calc( 4em - 1px );border-bottom:1px solid #cfcfcf;background-color:#fff;z-index:9}#WRAPPER>#MENU-SIDE{display:block;position:fixed;top:4em;left:0;width:15em;height:calc( 100% - 4em );box-shadow:2px 1px 3px #ddd;background-color:#32323a;transition:all .3s;z-index:10}#WRAPPER>#CONTAINER{display:flex;position:absolute;top:4em;left:15em;width:calc( 100% - 15em - 2*1em );min-height:calc( 100% - 4em - 2*1em );padding:1em;flex-direction:row;justify-content:space-between;overflow-x:none;overflow-y:auto}#LOGIN{display:flex;position:fixed;top:0;left:-100%;width:100%;height:100%;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-items:center;background-color:#32323a;transition:left .3s ease-in-out;z-index:101}#LOGIN.active{left:0}#LOGIN>#login-icon{width:35em;height:10em;background:url("/f/svg/icon/st") center center no-repeat;background-size:auto 100%}#LOGIN>#login-form{display:block}#LOGIN>#login-form>input[type='text'],#LOGIN>#login-form>input[type='password'],#LOGIN>#login-form>input[type='button']{display:flex;width:20em;margin:2em 0;padding:1em 2em;flex-direction:column;justify-content:space-around;flex-wrap:nowrap;align-items:middle;border-radius:5px;border:1px solid #6b6b6b;background-color:#32323a;color:#fff;transition:border .2s ease-in-out;cursor:default}#LOGIN>#login-form>input[type='text']:hover,#LOGIN>#login-form>input[type='text']:focus,#LOGIN>#login-form>input[type='password']:hover,#LOGIN>#login-form>input[type='password']:focus,#LOGIN>#login-form>input[type='button']:hover,#LOGIN>#login-form>input[type='button']:focus{border-color:#53d192}#LOGIN>#login-form>input[type='button']{margin:2em auto;border:0;background-color:#53d192;color:#fff;font-weight:bold;cursor:pointer}#LOGIN>#login-form>input[type='button']:hover{background-color:#33be79;box-shadow:0 0 1em #1a1a1f}#LOGIN>#login-form>#lost-password{color:#ddd;cursor:pointer}#LOGIN>#login-form>#lost-password:hover{color:#53d192;text-decoration:underline}#LOGIN>#login-close{display:block;position:absolute;top:2em;right:2em;width:2em;height:2em;background:url("/f/svg/close/st/container/ffffff") center center no-repeat;background-size:80%;cursor:pointer} /*# sourceMappingURL=layout.css.map */ diff --git a/css/layout.css.map b/css/layout.css.map index c0c4ba9..4dc2742 100755 --- a/css/layout.css.map +++ b/css/layout.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["layout.scss","constants.scss"], "names": [], "file": "layout.css" diff --git a/css/layout.scss b/css/layout.scss index d7e746d..87720c2 100755 --- a/css/layout.scss +++ b/css/layout.scss @@ -185,14 +185,32 @@ body{ // Animation de @hover &:hover{ + background-color: darken($theme-fg-primary, 10); box-shadow: 0 0 1em darken($dark-bg, 10); } } + + + + + /* (3) Mot de passe oublie */ + & > #lost-password{ + color: $dark-fg; + + cursor: pointer; + + // Animation de @hover + &:hover{ + color: $theme-fg-primary; + text-decoration: underline; + } + } + } - /* (3) Gestio de la fermeture */ + /* (4) Gestio de la fermeture */ & > #login-close{ display: block; position: absolute; @@ -206,6 +224,4 @@ body{ cursor: pointer; } - - } \ No newline at end of file diff --git a/manager/Database.php b/manager/Database.php index 89f874b..f50a475 100755 --- a/manager/Database.php +++ b/manager/Database.php @@ -203,24 +203,15 @@ return $checker && is_string($value) && strlen($value) <= 50; break; - /* (2) Utilisateur */ - case 'user.code': - case 'machine.code': - return $checker && is_string($value) && preg_match('/^[\dA-F]{2}(\-[\dA-F]{2}){3,5}$/i', $value); + case 'varchar(30)': + return $checker && is_string($value) && strlen($value) <= 30; break; - - case 'user.username': - case 'machine.name': - case 'group.name': - return $checker && is_string($value) && preg_match('/^[\w-]{1,30}$/i', $value); - break; - - case 'user.firstname': - case 'user.lastname': - return $checker && is_string($value) && preg_match('/^[a-z -]{3,30}$/i', $value); - break; - - case 'user.mail': + + case 'text': + return $checker && is_string($value); + + + case 'mail': return $checker && is_string($value) && strlen($value) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $value); break; diff --git a/manager/module/userDefault.php b/manager/module/userDefault.php deleted file mode 100755 index dcbdf15..0000000 --- a/manager/module/userDefault.php +++ /dev/null @@ -1,402 +0,0 @@ - Code RFID de l'utilisateur - * @username Identifiant l'utilisateur - * @firstname Prenom de l'utilisateur - * @lastcode Nom de l'utilisateur - * @mail Adresse email de l'utilisateur - * @password Mot de passe de l'utilisateur - * @status Status de l'utilisateur - * - * @return status Retourne si oui ou non, tout s'est bien passe - * - */ - public static function create($code=null, $username=null, $firstname=null, $lastname=null, $mail=null, $password=null, $status=null){ - /* [1] Normalisation + verification des donnees - =========================================================*/ - $password_hash = sessionManager::secure_sha1($password); - - $correct_param = Database::check('user.code', $code); - $correct_param = $correct_param && Database::check('user.username', $username); - $correct_param = $correct_param && Database::check('user.firstname', $firstname); - $correct_param = $correct_param && Database::check('user.lastname', $lastname); - $correct_param = $correct_param && Database::check('user.mail', $mail); - $correct_param = $correct_param && Database::check('user.password', $password_hash); - $correct_param = $correct_param && Database::check('user.status', $status); - - // Si les parametres ne sont pas corrects, on retourne une erreur - if( !$correct_param ) - return array('ModuleError' => ManagerError::ParamError); - - - - - /* [2] Creation de l'utilisateur - =========================================================*/ - $create_user = new Repo('user/create', array($code, $username, $firstname, $lastname, $mail, $password_hash, $status) ); - $id_user = $create_user->answer(); - - // Si une erreur est retournee, on retourne une erreur - if( $id_user === false ) - return array('ModuleError' => ManagerError::ModuleError); - - - - - /* [3] Creation du groupe de meme nom que l'username - =========================================================*/ - $create_group = new Repo('cluster/create', array($username) ); - $id_group = $create_group->answer(); - - // Si une erreur est retournee, on retourne une erreur - if( $id_group === false ) - return array('ModuleError' => ManagerError::ModuleError); - - - - - /* [4] Association au groupe - =========================================================*/ - $assoc_goup = new Repo('cluster/link', array($id_group, $id_user, clusterRepo::USER_CLASS)); - $id_assoc = $assoc_goup->answer(); - - // Si une erreur est retournee, on retourne une erreur - if( $id_assoc === false ) - return array('ModuleError' => ManagerError::ModuleError); - - - - /* [5] Gestion du retour - =========================================================*/ - return array( - 'ModuleError' => ManagerError::Success, - 'id_user' => $id_user, - 'id_cluster' => $id_group - ); - } - - - - - - /* AJOUTE UN UTILISATEUR DONNEE A UN GROUPE DONNE - * - * @id_cluster UID du groupe - * @id_user UID de l'utilisateur - * - * @return association Renvoie l'UID de l'association cree - * Renvoie FALSE si une erreur occure - * - */ - public static function link($id_cluster, $id_user){ - /* [1] Normalisation + verification des donnees - =========================================================*/ - $correct_param = Database::check('auto_increment_id', $id_cluster); - $correct_param = $correct_param && Database::check('auto_increment_id', $id_user); - - // Si les parametres ne sont pas corrects, on retourne une erreur - if( !$correct_param ) - return array('ModuleError' => ManagerError::ParamError); - - /* [2] Creation de l'association - =========================================================*/ - $link_user = new Repo('cluster/link', array($id_cluster, $id_user, clusterRepo::USER_CLASS)); - - return $link_user; - - } - - - - - - /* RETIRE UNE MACHINE DONNEE A UN GROUPE DONNE - * - * @id_cluster UID du groupe - * @id_user UID de l'utilisateur - * - * @return association Renvoie l'UID de l'association cree - * Renvoie FALSE si une erreur occure - * - */ - public static function unlink($id_cluster, $id_user){ - /* [1] Normalisation + verification des donnees - =========================================================*/ - $correct_param = Database::check('auto_increment_id', $id_cluster); - $correct_param = $correct_param && Database::check('auto_increment_id', $id_user); - - // Si les parametres ne sont pas corrects, on retourne une erreur - if( !$correct_param ) - return array('ModuleError' => ManagerError::ParamError); - - /* [2] Suppression de l'association - =========================================================*/ - $link_user = new Repo('cluster/unlink', array($id_cluster, $id_user, clusterRepo::USER_CLASS)); - - return $link_user; - - } - - - - - - /* RENVOIE UN UTILISATEUR EN FONCTION D'UN MOT CLE - * - * @keyword Element de recherche - * - * @return users Retourne la liste des utilisateurs trouves - * - */ - public static function search($keyword){ - // On recupere les donnees - $user = new Repo('user/search', array($keyword)); - - return array( - 'users' => $user->answer() - ); - } - - - - - - /* RENVOIE LA LISTE EXHAUSTIVE DES UTILISATEURS - * - * @return utilisateurs Liste des utilisateurs - * - */ - public static function getAll(){ - // On recupere les donnees - $users = new Repo('user/getAll'); - - return array( - 'users' => $users->answer() - ); - } - - - - - - /* RENVOIE L'UTILISATEURS D'UID DONNE - * - * @id_user UID de l'utilisateur en question - * - * @return utilisateur Utilisateur d'UID donne - * - */ - public static function getById($id_user){ - // On recupere les donnees - $request = new Repo('user/getById', array($id_user)); - $answer = $request->answer(); - - // Si aucun resultat, on retourne une erreur - if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); - - - return array( - 'user' => $answer - ); - } - - - - - - /* RENVOIE L'UTILISATEURS DE CODE DONNE - * - * @code Code de l'utilisateur en question - * - * @return utilisateur Utilisateur de code donne - * - */ - public static function getByCode($code){ - // On recupere les donnees - $request = new Repo('user/getByCode', array($code)); - $answer = $request->answer(); - - // Si aucun resultat, on retourne une erreur - if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); - - - return array( - 'user' => $answer - ); - } - - - - - - /* RENVOIE L'UTILISATEURS D'USERNAME DONNE - * - * @username Username de l'utilisateur en question - * - * @return utilisateur Utilisateur d'username donne - * - */ - public static function getByUsername($username){ - // On recupere les donnees - $request = new Repo('user/getByUsername', array($username)); - $answer = $request->answer(); - - // Si aucun resultat, on retourne une erreur - if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); - - - return array( - 'user' => $answer - ); - } - - - - - - /* RENVOIE LES GROUPES D'UN UTILISATEUR DONNE - * - * @id_user UID de l'utilisateur en question - * - * @return clusters Groupes de l'utilisateur donne - * - */ - public static function getClusters($id_user){ - // On recupere les donnees - $request = new Repo('user/getClusters', array($id_user)); - $answer = $request->answer(); - - // Si aucun resultat, on retourne une erreur - if( $answer === false ) - return array( 'ModuleError' => ManagerError::ModuleError ); - - - return array( - 'clusters' => $answer - ); - } - - - - - - /* MODIFIE UN UTILISATEUR DONNEE - * - * @id_user UID de l'utilisateur - * @code Code RFID de l'utilisateur - * @username Identifiant l'utilisateur - * @firstname Prenom de l'utilisateur - * @lastcode Nom de l'utilisateur - * @mail Adresse email de l'utilisateur - * @password Mot de passe de l'utilisateur - * @status Status de l'utilisateur - * - * @return status Retourne si oui ou non tout s'est bien deroule - * - */ - public static function edit($id_user=null, $code=null, $username=null, $firstname=null, $lastname=null, $mail=null, $password=null, $status=null){ - // Si @id_user n'est pas au bon format, on retourne une erreur - if( !Database::check('auto_increment_id', $id_user) ) - return array('ModuleError' => ManagerError::ModuleError); - - - /* [1] On verifie l'existence de l'utilisateur - =========================================================*/ - $user_exists = new Repo('user/getById', array($id_user)); - $user_data = $user_exists->answer(); - - // Si on a recupere aucun utilisateur, on retourne une erreur - if( !is_array($user_data) ) - return array('ModuleError' => ManagerError::ModuleError); - - - - /* [2] Normalisation + verification des donnees - =========================================================*/ - $password_hash = sessionManager::secure_sha1($password); - - /* (1) Verification des parametres (si correct et different)*/ - $correct_param = array( - 'code' => Database::check('user.code', $code ) && $user_data['code'] != $code, - 'username' => Database::check('user.username', $username ) && $user_data['username'] != $username, - 'firstname' => Database::check('user.firstname', $firstname ) && $user_data['firstname'] != $firstname, - 'lastname' => Database::check('user.lastname', $lastname ) && $user_data['lastname'] != $lastname, - 'mail' => Database::check('user.mail', $mail ) && $user_data['mail'] != $mail, - 'password' => Database::check('user.password', $password_hash ) && $user_data['password'] != $password_hash, - 'status' => Database::check('user.status', $status ) && $user_data['status'] != $status - ); - - /* (2) Gestion des parametres optionnels */ - $opt_data = array( - 'code' => ($correct_param['code']) ? $code : $user_data['code'], - 'username' => ($correct_param['username']) ? $username : $user_data['username'], - 'firstname' => ($correct_param['firstname']) ? $firstname : $user_data['firstname'], - 'lastname' => ($correct_param['lastname']) ? $lastname : $user_data['lastname'], - 'mail' => ($correct_param['mail']) ? $mail : $user_data['mail'], - 'password' => ($correct_param['password']) ? $password : $user_data['password'], - 'status' => ($correct_param['status']) ? $status : $user_data['status'], - ); - - - - - /* [3] Modification de l'utilisateur - =========================================================*/ - $request = new Repo('user/edit', array( - $id_user, - $opt_data['code'], - $opt_data['username'], - $opt_data['firstname'], - $opt_data['lastname'], - $opt_data['mail'], - $opt_data['password'], - $opt_data['status']) - ); - - - return array( - 'status' => $request->answer() - ); - } - - - - - - /* SUPPRIME UN UTILISATEUR DONNEE - * - * @id_user UID de l'utilisateur en question - * - * @return status Retourne si oui ou non tout s'est bien deroule - * - */ - public static function delete($id_user){ - // On recupere les donnees - $request = new Repo('user/delete', array($id_user)); - $answer = $request->answer(); - - return array( - 'status' => $answer - ); - } - - - } - - -?> \ No newline at end of file diff --git a/manager/module/users.php b/manager/module/users.php new file mode 100755 index 0000000..147a36b --- /dev/null +++ b/manager/module/users.php @@ -0,0 +1,58 @@ + Username ou adresse mail de l'utilisateur + * @password Password de l'utilisateur + * + * @return id_user Retourne l'id de l'utilisateur si les logins sont corrects + * + */ + public static function login($login, $password){ + /* [0] Gestion des INPUT + =========================================================*/ + $checker = Database::check('varchar(255)', $login); + $checker = $checker && Database::check('text', $password); + + // Si les parametres sont incorrects, on retourne une erreur + if( !$checker ) return array('ModuleError' => ManagerError::ParamError); + + + /* [1] On verifie les logins + =========================================================*/ + $check = new Repo('users/login', array($login, $password)); + $success = $check->answer(); + + // Si le login/password est incorrect, on retourne une erreur + if( $success === false ) return array('ModuleError' => ManagerError::ModuleError); + + + /* [2] Si les logins sont ok, on retourne l'id de l'utilisateur + =========================================================*/ + return array( + 'ModuleError' => ManagerError::Success, + 'id_user' => $success + ); + + } + // [x] "login", + // [ ] "getById", + // [ ] "getAll", + + // [ ] "create", + // [ ] "edit", + // [ ] "remove", + + } + + +?> \ No newline at end of file diff --git a/manager/repo/user.php b/manager/repo/user.php deleted file mode 100755 index 273a0fa..0000000 --- a/manager/repo/user.php +++ /dev/null @@ -1,405 +0,0 @@ - Code RFID de l'utilisateur - * @username Identifiant l'utilisateur - * @firstname Prenom de l'utilisateur - * @lastcode Nom de l'utilisateur - * @mail Adresse email de l'utilisateur - * @password Mot de passe de l'utilisateur - * @status Status de l'utilisateur - * - * @return id_user Renvoie l'UID de l'utilisateur cree - * Renvoie FALSE si une erreur occure - * - */ - public static function create($code, $username, $firstname, $lastname, $mail, $password, $status){ - /* [1] Verification de l'unicite de code+username - =========================================================*/ - $check_unique = !is_array(self::getByCode($code)); - $check_unique = $check_unique && !is_array(self::getByUsername($username)); - - // Si un utilisateur a deja ce code ou cet username, on renvoie une erreur - if( !$check_unique ) - return false; - - /* [2] Creation de l'utilisateur - =========================================================*/ - $insert_user = Database::getPDO()->prepare("INSERT INTO user(id_user, code, username, firstname, lastname, mail, password, status) - VALUES(DEFAULT, :code, :username, :firstname, :lastname, :mail, :password, :status)"); - $insert_user->execute(array( - ':code' => $code, - ':username' => $username, - ':firstname' => $firstname, - ':lastname' => $lastname, - ':mail' => $mail, - ':password' => $password, - ':status' => $status - )); - - /* [3] On retourne l'id_user ou FALSE si erreur - =========================================================*/ - $check_user = self::getByCode($code); - - // Si n'existe pas on retourne FALSE - if( $check_user === false ) - return false; - - // Sinon, on retourne son id - return $check_user['id_user']; - - } - - - - - - /* RENVOIE UNE LISTE D'UTILISATEURS EN FONCTION D'UN MOT CLE - * - * @keyword Element de recherche - * - * @return users Retourne les utilisateurs trouves - * - */ - public static function search($keyword){ - // On recupere les donnees - $searchusers = Database::getPDO()->query("SELECT * FROM user - WHERE code LIKE '%".$keyword."%' - OR username LIKE '%".$keyword."%' - OR firstname LIKE '%".$keyword."%' - OR lastname LIKE '%".$keyword."%' - OR mail LIKE '%".$keyword."%' - "); - - return Database::delNumeric( $searchusers->fetchAll() ); - } - - - - - - - - /* RENVOIE LA LISTE DE TOUS LES UTILISATEURS - * - * @return utilisateurs Liste des utilisateurs de la BDD - * - */ - public static function getAll(){ - // On ecrit la requete - $request = Database::getPDO()->query("SELECT * FROM user ORDER BY username"); - - // On recupere le resutat - $answer = $request->fetchAll(); - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $answer ); - } - - - - - - - - - /* RENVOIE L'UTILISATEUR D'ID DONNE - * - * @id Id de l'utilisateur en question - * - * @return utilisateur Renvoie l'utilisateur d'id donne si existe - * @return error Retourne FALSE si aucun resultat - * - */ - public static function getById($id){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM user - WHERE id_user = :id"); - - // On execute la requete - $request->execute(array( - ':id' => $id - )); - - // On recupere 1 seul utilisateur - $answer = $request->fetch(); - - // Gestion d'erreur -> aucun resultat - if( $answer === false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $answer, true ); - } - - - - - - - - - /* RENVOIE L'UTILISATEUR DE CODE DONNE - * - * @code Code de l'utilisateur en question - * - * @return utilisateur Renvoie l'utilisateur de code donne si existe - * @return error Retourne FALSE si aucun resultat - * - */ - public static function getByCode($code){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM user - WHERE code = :code"); - - // On execute la requete - $request->execute(array( - ':code' => $code - )); - - // On recupere 1 seul utilisateur - $answer = $request->fetch(); - - // Gestion d'erreur -> aucun resultat - if( $answer === false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $answer, true ); - - - } - - - - - - - - - /* RENVOIE L'UTILISATEUR D'USERNAME DONNE - * - * @username Identifiant de l'utilisateur en question - * - * @return utilisateur Renvoie l'utilisateur d'username donne si existe - * @return error Retourne FALSE si aucun resultat - * - */ - public static function getByUsername($username){ - // On ecrit la requete - $request = Database::getPDO()->prepare("SELECT * FROM user - WHERE username = :username"); - - // On execute la requete - $request->execute(array( - ':username' => $username - )); - - // On recupere 1 seul utilisateur - $answer = $request->fetch(); - - // Gestion d'erreur -> aucun resultat - if( $answer === false ) - return false; - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $answer, true ); - } - - - - - - - - - /* RENVOIE LES GROUPE AUQUELS UN UTILISATEUR DONNE APPARTIENT - * - * @id_user UID de l'utilisateur en question - * - * @return groups Renvoie un tableau d'UID des groupes - * - */ - public static function getGroups($id_user){ - /* [1] On redige/execute la requete - =========================================================*/ - $select_groups = Database::getPDO()->prepare("SELECT gm.id_group FROM user as u, group_merge as gm - WHERE u.id_user = gm.id_user - AND u.id_user = :id_user - ORDER BY gm.id_user ASC"); - $select_groups->execute(array( - ':id_user' => $id_user - )); - - // On retourne en supprimant les indices numeriques - return Database::delNumeric( $select_groups->fetchAll() ); - } - - - - - - - - - /* RENVOIE LES GROUPES AUQUEL APPARTIENT UN UTILISATEUR DONNE - * - * @id_user UID de l'utilisateur en question - * - * @return clusters Retourne la liste des groupes auquel appartient l'utilisateur - * - */ - public static function getClusters($id_user){ - /* [1] On redige/execute la requete - =========================================================*/ - $get_clusters = Database::getPDO()->prepare("SELECT c.* FROM cluster as c, cluster_merge as cm - WHERE cm.id_cluster = c.id_cluster - AND cm.id_entity = :id_user - AND cm.class = :class - ORDER BY c.id_cluster"); - $get_clusters->execute(array( - ':id_user' => $id_user, - ':class' => clusterRepo::USER_CLASS - )); - - /* [2] On retourne la liste des groupes - =========================================================*/ - return Database::delNumeric( $get_clusters->fetchAll() ); - } - - - - - - - - - /* MODIFICATION D'UN UTILISATEUR - * - * @id_user UID de l'utilisateur - * @code Code RFID de l'utilisateur - * @username Identifiant l'utilisateur - * @firstname Prenom de l'utilisateur - * @lastcode Nom de l'utilisateur - * @mail Adresse email de l'utilisateur - * @password Mot de passe de l'utilisateur - * @status Status de l'utilisateur - * - * @return status Renvoie si oui ou non tout s'est bien passe - * - */ - public static function edit($id_user=null, $code=null, $username=null, $firstname=null, $lastname=null, $mail=null, $password=null, $status=null){ - /* [1] Verification de l'unicite de code+username (si differents) - =========================================================*/ - // On recupere les utilisateurs ayant le meme code ou username (si existent) - $getbycode = self::getByCode($code); - $getbyusername = self::getByUsername($username); - - $check_unique = is_array($getbycode) && $getbycode['id_user'] == $id_user || !is_array($getbycode); - $check_unique = $check_unique && is_array($getbyusername) && $getbyusername['id_user'] == $id_user || !is_array($getbyusername); - - // Si un utilisateur a deja ce code ou cet username (sauf lui), on renvoie une erreur - if( !$check_unique ) - return false; - - /* [2] Modification de l'utilisateur - =========================================================*/ - $edit_user = Database::getPDO()->prepare("UPDATE user - SET code = :code, - username = :username, - firstname = :firstname, - lastname = :lastname, - mail = :mail, - password = :password, - status = :status - WHERE id_user = :id_user"); - $edit_user->execute(array( - ':code' => $code, - ':username' => $username, - ':firstname' => $firstname, - ':lastname' => $lastname, - ':mail' => $mail, - ':password' => $password, - ':status' => $status, - ':id_user' => $id_user - )); - - - - /* [3] On retourne si tout a ete modifie, si erreur - =========================================================*/ - $check_user = self::getById($id_user); - - $checker = $check_user['id_user'] == $id_user; - $checker = $checker && $check_user['code'] == $code; - $checker = $checker && $check_user['username'] == $username; - $checker = $checker && $check_user['firstname'] == $firstname; - $checker = $checker && $check_user['lastname'] == $lastname; - $checker = $checker && $check_user['mail'] == $mail; - $checker = $checker && $check_user['password'] == $password; - $checker = $checker && $check_user['status'] == $status; - - // On retourne l'etat de la modification - return $checker; - } - - - - - - - - - /* SUPPRIME UN UTILISATEUR DONNE - * - * @id_user UID de l'utilisateur en question - * - * @return status Retourne si oui ou non l'utilisateur a bien ete supprime - * - */ - public static function delete($id_user){ - /* [1] On redige/execute la requete - =========================================================*/ - $delete_user = Database::getPDO()->prepare("DELETE FROM user WHERE id_user = :id_user"); - $delete_user->execute(array( - ':id_user' => $id_user - )); - - - /* [2] On verifie que l'utilisateur n'existe plus - =========================================================*/ - return ( self::getById($id_user) === false ); - } - - - - - - - - - - - - - - - - - - - - - - - } - - -?> \ No newline at end of file diff --git a/manager/repo/users.php b/manager/repo/users.php new file mode 100755 index 0000000..52c849a --- /dev/null +++ b/manager/repo/users.php @@ -0,0 +1,53 @@ + Username ou Adresse mail de l'utilisateur + * @password Password de l'utilisateur + * + * @return id_user Retourne l'id de l'utilisateur si ses credentials sont bons + * + */ + public static function login($login, $password){ + /* [0] Gestion des INPUT + =========================================================*/ + $checker = Database::check('varchar(255)', $login); + $checker = $checker && Database::check('text', $password); + + // Si les parametres sont incorrects, on retourne une erreur + if( !$checker ) return false; + + + /* [1] On verifie son login/password dans la BDD + =========================================================*/ + $check = Database::getPDO()->prepare("SELECT id_user + FROM users + WHERE ( login = :username OR mail = :mail ) AND password = :password"); + $check->execute(array( + ':username' => $login, + ':mail' => $login, + ':password' => sha1($password) + )); + $result = $check->fetch(); + + /* [2] Gestion du retour + =========================================================*/ + // Si on a rien trouve, on retourne une erreur + if( $result === false ) return false; + + + // On retourne le resultat + return (int) $result['id_user']; + } + + + } + + +?> \ No newline at end of file diff --git a/view.php b/view.php index fe9f85f..572ff6c 100755 --- a/view.php +++ b/view.php @@ -41,7 +41,9 @@ -
+ "; + else echo "
"; ?> +
@@ -49,6 +51,8 @@ + + Mot de passe oubliƩ ?