/**
  * - Retrouver un refElement par son ID.
  * - Gestion des exceptions et des erreurs
  * @author Alban Truc
  * @param string|MongoId $id Identifiant unique de l'refElement à trouver
  * @param array $fieldsToReturn champs à retourner
  * @since 02/2014
  * @return RefElement|array contenant le message d'erreur
  */
 function findById($id, $fieldsToReturn = array())
 {
     $result = parent::__findOne('refelement', array('_id' => new MongoId($id)), $fieldsToReturn);
     //Si un compte est trouvé
     if (!array_key_exists('error', $result)) {
         if (empty($fieldsToReturn)) {
             $result = new RefElement($result);
         }
     }
     return $result;
 }
Пример #2
0
 /**
  * - Retrouver un user par son ID.
  * - Gestion des exceptions et des erreurs
  * @author Alban Truc
  * @param array $fieldsToReturn champs à retourner
  * @param string|MongoId $id Identifiant unique de l'user à trouver
  * @since 02/2014
  * @return User|array contenant le message d'erreur
  */
 public function findById($id, $fieldsToReturn = array())
 {
     $result = parent::__findOne('user', array('_id' => new MongoId($id)), $fieldsToReturn);
     //Si un user est trouvé
     if (!array_key_exists('error', $result)) {
         //            //On récupère le compte actuel de l'utilisateur
         //            $search = array('_id' => $result['idCurrentAccount']);
         //            $fieldsToReturn = array('idUser' => 0); //tous sauf idUser, on est déjà en train de le récupérer...
         //
         //            $account = $this->userPdoManager->findOne($search, $fieldsToReturn);
         //
         //            //Si un compte est trouvé
         //            if (!(array_key_exists("error", $account)))
         //            {
         //                //On retourne toutes les infos du compte plutôt que (seulement) son ID
         //                $user = new User($result);
         //                $user->setCurrentAccount($account);
         //
         //                return $user;
         //            }
         //            else return $account; //Message d'erreur approprié
         if (empty($fieldsToReturn)) {
             $result = new User($result);
         }
     }
     return $result;
 }
 /**
  * - Retrouver un refAction par son ID.
  * - Gestion des exceptions et des erreurs
  * @author Alban Truc
  * @param string|MongoId $id Identifiant unique du refAction à trouver
  * @param array $fieldsToReturn champs à retourner
  * @since 02/2014
  * @return RefAction|array contenant le message d'erreur
  */
 public function findById($id, $fieldsToReturn = array())
 {
     $result = parent::__findOne('refaction', array('_id' => new MongoId($id)), $fieldsToReturn);
     if (!array_key_exists('error', $result)) {
         if (empty($fieldsToReturn)) {
             $result = new RefAction($result);
         }
     }
     return $result;
 }
Пример #4
0
 /**
  * Change le mot de passe d'un utilisateur qui l'a perdu
  * @param string $email
  * @param string $token
  * @param string $newPassword
  * @param string $newPasswordConfirmation
  * @return array|string|TRUE
  */
 public function validatePasswordReset($email, $token, $newPassword, $newPasswordConfirmation)
 {
     if ($newPassword == $newPasswordConfirmation) {
         /*
          **Entre 8 et 26 caractères, mini un chiffre, mini une lettre minuscule, mini une lettre majuscule,
          **minimum un caractère spécial (@*#).
          **Exemples de caractères non acceptés: ‘ , \ & $ < > et l'espace (\s).
          */
         $regex = '/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@*#]).([a-zA-Z0-9@*#]{8,26})$/';
         if (preg_match($regex, $newPassword)) {
             $criteria = array('email' => $email, 'token' => $token);
             $result = parent::__findOne('validation', $criteria);
             if (!array_key_exists('error', $result)) {
                 //Reset non encore effectué
                 if ($result['state'] == 2) {
                     $newPassword = self::encrypt($newPassword);
                     $updateUserState = $this->update(array('email' => $email), array('$set' => array('password' => $newPassword)));
                     if ($updateUserState == TRUE) {
                         $updateValidation = array('$set' => array('state' => (int) 3));
                         //3 = reset effectué
                         $updateValidationState = parent::__update('validation', $criteria, $updateValidation);
                         if ($updateValidationState == TRUE) {
                             return 'Password changed successfully. You can now login!';
                         } else {
                             $errorMessage = 'Your password was changed but we had trouble acknowledging this information.' . 'Please contact us.';
                             return array('error' => $errorMessage);
                         }
                     } else {
                         return $updateUserState;
                     }
                 } else {
                     $errorMessage = 'You already used your token to reset your password.' . 'You will have to request for another reset if you really want to do so.';
                     return array('error' => $errorMessage);
                 }
             } else {
                 return $result;
             }
         } else {
             return array('error' => 'New password doesn\'t match password specifications');
         }
     } else {
         return array('error' => 'The new password and its confirmation aren\'t the same');
     }
 }