/** * Metoda zwraca ostanie n haseł dla użytkownika * @param type $changeOffset - ilość haseł (domyślnie 10). * W przypadku braku haseł dla użytkownika zwracane jest FALSE * @return boolean * @throws Exception */ public function getOldPasswords($changeOffset = 10) { $userPassword = new UserPassword(); $id = Zend_Auth::getInstance()->getIdentity()->id; if (is_null($id)) { throw new Exception('Pole id jest puste'); } $select = $userPassword->select()->from($userPassword->getName(), array('password'))->where('id_user = ?', $id)->order('id DESC')->limit(intval($changeOffset))->setIntegrityCheck(false); $passArray = $userPassword->getAdapter()->fetchCol($select); if ($passArray && count($passArray) > 0) { return $passArray; } return FALSE; }
/** * Metoda do resetowanie hasla uzytkownika * @param integer $id - id uzytkownika */ public function _resetPassword($id) { try { $user = new User(); $pass = Base_PasswordGenerator::generate(); $config = Zend_Registry::get('config'); $timeOffset = $config['login']['dafault']['freeDaysOffset']; if (!empty($timeOffset) && $timeOffset == 1) { $offset = $timeOffset . ' day'; } elseif (!empty($timeOffset) && $timeOffset > 1) { $offset = $timeOffset . ' days'; } $date = new DateTime(date('c')); $date->modify($offset); $values['password'] = $pass['hashed']; $values['tmp_password'] = true; $values['valid_until'] = $date->format('c'); $userRow = $user->findOne($id); // $resetPassEvent = new Logger_Event_Logic('editUser','Zresetowanie hasła użytkownika '.$userRow['login']); $userRow->setFromArray($values); // $changes = $userRow->getUpdatedFields(); // $resetPassEvent->addItem('Zmiana daty', $changes, null); */ $userRow->save(); unset($values['valid_until']); $userPassword = new UserPassword(); $select = $userPassword->select()->where('id_user = ?', $id)->where('ghost = false')->setIntegrityCheck(false); $dataArray = $userPassword->fetchAll($select); $dataArray = $dataArray->toArray(); foreach ($dataArray as $key => $value) { $passRow = $userPassword->findOne($value['id']); $passRow->setFromArray(array('ghost' => true)); $changes = $passRow->getUpdatedFields(); // $resetPassEvent->addItem('Dezaktywacja poprzedniego hasła', $changes, null); $passRow->save(); } $values['id_user'] = $id; $rowPassword = $userPassword->createRow($values); $params = $rowPassword->getUpdatedFieldsOnlyNew(); // $resetPassEvent->addItem('Wprowadzenie nowego hasła', null, $params); $rowPassword->save(); // $this->logEvent($resetPassEvent); $mailer = new Logic_Mailer(Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view'), $translate); $user_row = $user->findOne($id); $mailer->userPass($pass['clean'], $user_row); // $logger = Zend_Registry::get('logger'); // $logger['messages']['User'][$id] = 'Password was reset.'; // Zend_Registry::set('logger', $logger); } catch (Exception $e) { // $logger = Zend_Registry::get('logger'); // $logger['messages']['User'][$id] = 'Faile while password reset.'; // Zend_Registry::set('logger', $logger); throw $e; } }