Пример #1
0
 /**
  * Action - get user password
  *
  * Access to the action is possible in the following paths:
  * - /utility/userpassword
  *
  * @return void
  */
 public function userpasswordAction()
 {
     if ($this->_isAjaxRequest) {
         $request = $this->getRequest();
         $params = $request->getParams();
         //Создадим обьект формы
         $loginForm = new Default_Form_UserLogin();
         //Проверим правильность заполнения полей формы
         if ($loginForm->isValid($params)) {
             $user = new Default_Model_DbTable_User($this->db);
             $username = $loginForm->getValue('username');
             if ($user->loadByUsername($username)) {
                 if ($this->_isAdmin && ($user->user_type == 'editor' || $user->user_type == 'member')) {
                     $json = array('password' => $user->password);
                 } elseif ($this->_isEditor && $user->user_type == 'member') {
                     $json = array('password' => $user->password);
                 } else {
                     $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Запрещено редактировать сообщение пользователя -') . $username . '"</em>', $this->Translate('У вас недостаточно прав для редактирования сообщения этого пользователя')));
                 }
             }
         } else {
             $json = array('class_message' => 'warning', 'messages' => $this->getFormMessages($loginForm));
         }
         // Запишем в лог
         if (isset($json['password'])) {
             $my_usertype = $this->_identity->user_type;
             $my_username = $this->_identity->username;
             $username = $user->username;
             $usertype = $user->user_type;
             $post_url = $params['url'];
             $post_title = $params['title'];
             $message = sprintf('User - "%s"(%s) login to site with a user name - "%s"(%s), to edit the post - "%s"(%s)', $my_username, $my_usertype, $username, $usertype, $post_title, $post_url);
             // Запомним в логе сообщений
             $this->_logMsg->admin_post_edit($message);
         }
         $this->sendJson($json);
     }
 }
Пример #2
0
 /**
  * Action - login
  * user authentication
  * 
  * Access to the action is possible in the following paths:
  * - /account/login
  *
  * @return void
  */
 public function loginAction()
 {
     $result = true;
     $message = NULL;
     //----------------------
     // if a user's already logged in, send them to their account home page
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $this->_redirect('/account');
     }
     $request = $this->getRequest();
     $params = $request->getParams();
     // Проверим наличие ошибки нарушения доступа к ресурсу
     if ($this->_isAjaxRequest && $params['class_message']) {
         $json = array('class_message' => $params['class_message'], 'messages' => $params['message']);
         $this->sendJson($json);
         return;
     }
     //Создадим обьект формы
     $loginForm = new Default_Form_UserLogin();
     // determine the page the user was originally trying to request
     $redirect = $request->getPost('redirect');
     if (strlen($redirect) == 0) {
         $url = $request->getServer('REQUEST_URI');
         $redirect = $url;
     }
     if (strlen($redirect) == 0) {
         $redirect = $this->getUrl();
         //'/account'
     }
     // process login if request method is post
     if ($request->isPost()) {
         //Обработка формы - заполненной пользователем
         //Проверим правильность заполнения полей формы
         if ($loginForm->isValid($request->getPost())) {
             $db = Zend_Registry::get('db');
             // Найдем пользователя по его имени
             $user = new Default_Model_DbTable_User($db);
             $username = $loginForm->getValue('username');
             if ($user->loadByUsername($username)) {
                 // Определим актуальность пользователя на сайте
                 if ($user->actual) {
                     // Пользователь актуален
                     // setup the authentication adapter
                     $adapter = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', '?');
                     $password = $loginForm->getValue('password');
                     $password = md5($password);
                     $adapter->setIdentity($username);
                     $adapter->setCredential($password);
                     // Проверим правильность аутентификации
                     $result = $auth->authenticate($adapter);
                     if ($result->isValid()) {
                         //--- Проверим актуальность пользователя ---
                         //Получим данные о пользователе
                         $user = new Default_Model_DbTable_User($this->db);
                         $user_id = $adapter->getResultRowObject()->id;
                         $user->load($user_id);
                         // record login attempt
                         $user->loginSuccess();
                         // Создадим обьект идентификации пользователя
                         // и запишем его в сессию пользователя
                         $identity = $user->createAuthIdentity();
                         $auth->getStorage()->write($identity);
                         // Перейдем на страницу, которую запрашивал пользователь
                         // или на его авторскую страницу
                         $this->_redirector->gotoUrl($redirect, array('prependBase' => FALSE));
                     } else {
                         // record failed login attempt
                         $code = $result->getCode();
                         Default_Model_DbTable_User::LoginFailure($username, $code);
                         $this->view->class_message = 'warning';
                         $message = array('<em>' . $this->Translate("Ошибка аутентификации") . '!</em>', $this->Translate("Имя или пароль клиента заданы неверно."));
                         $this->view->message = $message;
                     }
                 } else {
                     // Пользователь не актуален (запрещен вход на сайт)
                     // record failed login attempt
                     Default_Model_DbTable_User::LoginFailure($username, Zend_Auth_Result::FAILURE_UNCATEGORIZED);
                     $this->view->class_message = 'warning';
                     $message = array('<em>' . $this->Translate("Ошибка аутентификации") . '!</em>', $this->Translate("Пользователю запрещен вход на сайт."), $this->Translate("За решением данного вопроса обратитесь к Администратору WEB сайта."));
                     $this->view->message = $message;
                 }
             } else {
                 // record failed login attempt
                 Default_Model_DbTable_User::LoginFailure($username, Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND);
                 $this->view->class_message = 'warning';
                 $message = array('<em>' . $this->Translate("Ошибка аутентификации") . '!</em>', $this->Translate("Имя клиента задано неверно."));
                 $this->view->message = $message;
             }
         } else {
             //неверно введены параметры формы
             $this->view->class_message = 'warning';
             $message = $this->getFormMessages($loginForm);
             $this->view->message = $message;
         }
     } else {
         //Вывод формы - пустой
         //Установим значение скрытого поля - 'redirect'
         $loginForm->setDefault('redirect', $redirect);
         //Выведем сообщение
         $arrParams = $request->getParams();
         if (isset($arrParams['message'])) {
             //Выведем сообщение - с просьбой авторизироваться
             //из за недоступности ресурса для пользователя
             $this->view->class_message = $arrParams['class_message'];
             $this->view->message = $arrParams['message'];
         }
     }
     $this->view->loginForm = $loginForm;
     $this->view->redirect = $redirect;
     //Добавим путь к действию
     $this->_breadcrumbs->addStep($this->Translate('Вход'));
 }
Пример #3
0
 /**
  * Action - login
  * user authentication
  * 
  * Access to the action is possible in the following paths:
  * - /admin/user/login
  *
  * @return void
  */
 public function loginAction()
 {
     $result = true;
     $message = NULL;
     //----------------------
     // Получим обьект авторизации пользователя
     $auth = Zend_Auth::getInstance();
     // Получим параметры запроса
     $request = $this->getRequest();
     $params = $request->getParams();
     //Создадим обьект формы
     $loginForm = new Default_Form_UserLogin();
     $urlAction = $this->getUrl('login', 'user', 'admin');
     $loginForm->setAction($urlAction);
     $redirect = $params['redirect'];
     //Проверим правильность заполнения полей формы
     if ($loginForm->isValid($params)) {
         $db = Zend_Registry::get('db');
         // Найдем пользователя по его имени
         $user = new Default_Model_DbTable_User($db);
         $username = $loginForm->getValue('username');
         if ($user->loadByUsername($username)) {
             // Определим актуальность пользователя на сайте
             // setup the authentication adapter
             $adapter = new Zend_Auth_Adapter_DbTable($db, 'users', 'username', 'password', '?');
             $password = $loginForm->getValue('password');
             $password = $password;
             $adapter->setIdentity($username);
             $adapter->setCredential($password);
             // Проверим правильность аутентификации
             $result = $auth->authenticate($adapter);
             if ($result->isValid()) {
                 //ОК - вход пользователя прошел успешно
                 //--- Проверим актуальность пользователя ---
                 //Получим данные о пользователе
                 $user = new Default_Model_DbTable_User($this->db);
                 $user_id = $adapter->getResultRowObject()->id;
                 $user->load($user_id);
                 // Очистим данные идентификации пользователя
                 $auth->clearIdentity();
                 // Сохраним обьект идентификации пользователя
                 // и перейдем на действие завершения авторизации
                 $user->loginSuccess();
                 // Создадим обьект идентификации пользователя
                 // и запишем его в сессию пользователя
                 $identity = $user->createAuthIdentity();
                 $auth->getStorage()->write($identity);
                 // Перейдем на страницу, которую запрашивал пользователь
                 // или на его авторскую страницу
                 $this->_redirector->gotoUrl($redirect, array('prependBase' => FALSE));
             } else {
                 //ERROR - ошибка валидации параметров входа
                 // record failed login attempt
                 Default_Model_DbTable_User::LoginFailure($username, $result->getCode());
                 $message = array($this->Translate("Ошибка регистрации! Имя или пароль клиента заданы неверно."));
             }
         } else {
             //ERROR - нет такого пользователя
             // record failed login attempt
             Default_Model_DbTable_User::LoginFailure($username, Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND);
             $message = array($this->Translate("Ошибка регистрации! Имя клиента задано неверно."));
         }
     } else {
         //ERROR - неверно введены параметры формы
         $message = $this->getFormMessages($loginForm);
     }
     if ($message) {
         $this->view->class_message = 'warning';
         $this->view->message = $message;
     }
     //Добавим путь к действию
     $this->_breadcrumbs->addStep($this->Translate('Вход'));
 }