/** * 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); } }
/** * 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('Вход')); }
/** * 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('Вход')); }