/** * - 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; }
/** * - 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; }
/** * 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'); } }