Example #1
0
 public function loginAction()
 {
     if ($this->isAuth()) {
         $this->_forward('index', 'index');
         // если уже залогинен: action, controller
         return;
     }
     $form = new formLogin();
     if ($this->_request->isPost()) {
         /* Проверяем валидность данных формы */
         if ($form->isValid($this->_getAllParams())) {
             $users = new Wbusers();
             $login = $form->getValue('login');
             if ($users->checkPassword($login, $form->getValue('pwd'))) {
                 $user = $users->fetchUser($login);
                 $user[0]['pwd'] = '';
                 // пароль обнуляем
                 $user = (object) $user[0];
                 /* Пишем в сессию (default) необходимые нам данные */
                 $auth = Zend_Auth::getInstance();
                 $storage = $auth->getStorage();
                 // find role name
                 $storage->write($user);
                 // обнуляем счетчик неудачных логинов
                 if (isset($this->defNamespace->numLoginFails)) {
                     $this->defNamespace->numLoginFails = 0;
                 }
                 // remember me
                 if ($form->getValue('rememberme')) {
                     Zend_Session::rememberMe(self::MAX_LIFETIME);
                     Zend_Session::getSaveHandler()->setLifetime(self::MAX_LIFETIME);
                 }
                 // update user statistics
                 $users->updateLoginStat($user->login);
                 // goto home page
                 $this->_redirect('index/index');
             } else {
                 sleep(7);
                 $this->view->msg = $this->view->translate->_("Username or password is incorrect");
                 // включаем счетчик, если кол-во неудачных логинов большое то включаем капчу
                 $this->defNamespace->numLoginFails++;
             }
         }
     }
     /* Если данные не передавались или неверный логин, то выводим форму для авторизации */
     $this->view->caption = sprintf($this->view->translate->_("Login with your %sWe%sbacula%s account"), '<font color="#00008B">', '</font><font color="#A80000">', '</font>');
     $this->view->title = $this->view->translate->_('Login with your Webacula account');
     $this->view->form = $form;
     // workaround for unit tests 'Action Helper by name Layout not found'
     if (!$this->_helper->hasHelper('layout')) {
         $this->render();
     }
 }
Example #2
0
 public function login($post)
 {
     $param = array();
     $param['username'] = Ini::gSt('LOCAL_UID');
     $param['rememberMe'] = true;
     $model = new formLogin();
     if (Ini::userLevel($param['username'])) {
         $model->attributes = $param;
         if ($model->validate() && $model->login()) {
             $this->renderJSON(array('x' => 'http://admin.' . HOST . '/admin/default/'), true);
         }
     }
     $this->renderJSON(array('errs' => array('Sorry, you don\'t have permission to access admin')), false);
 }
 public function loginAction()
 {
     if ($this->isAuth()) {
         $this->_forward('index', 'index');
         // если уже залогинен: action, controller
         return;
     }
     $form = new formLogin();
     if ($this->_request->isPost()) {
         /* Проверяем валидность данных формы */
         if ($form->isValid($this->_getAllParams())) {
             $db = Zend_Registry::get('db_bacula');
             /**
              * Настраиваем правила выборки пользователей из БД
              * имя таблицы, название поля с идентификатором пользователя, название поля пароля
              *
              * [ $zendDb = null], [string $tableName = null], [string $identityColumn = null],
              * [string $credentialColumn = null], [string $credentialTreatment = null])
              */
             if (Zend_Registry::get('DB_ADAPTER') == 'PDO_SQLITE') {
                 // Sqlite do not have MD5 function
                 $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'webacula_users', 'login', 'pwd', '? AND active = 1');
             } else {
                 $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'webacula_users', 'login', 'pwd', 'MD5(?) AND active = 1');
             }
             /* Передаем в адаптер данные пользователя */
             $authAdapter->setIdentity($form->getValue('login'));
             $authAdapter->setCredential($form->getValue('pwd'));
             /* Собственно, процесс аутентификации */
             $auth = Zend_Auth::getInstance();
             $resultAuth = $auth->authenticate($authAdapter);
             /* Проверяем валидность результата */
             if ($resultAuth->isValid()) {
                 /* Пишем в сессию (default) необходимые нам данные (пароль обнуляем) */
                 $storage = $auth->getStorage();
                 $data = $authAdapter->getResultRowObject(array('id', 'login', 'role_id', 'role_name', 'email'));
                 // find role name
                 $table = new Wbroles();
                 $row = $table->find($data->role_id);
                 if ($row->count() == 1) {
                     $data->role_name = $row[0]['name'];
                 }
                 $storage->write($data);
                 // обнуляем счетчик неудачных логинов
                 if (isset($this->defNamespace->numLoginFails)) {
                     $this->defNamespace->numLoginFails = 0;
                 }
                 // remember me
                 if ($form->getValue('rememberme')) {
                     Zend_Session::rememberMe(self::MAX_LIFETIME);
                     Zend_Session::getSaveHandler()->setLifetime(self::MAX_LIFETIME);
                 }
                 // update user statistics
                 $users = new Wbusers();
                 $users->updateLoginStat($data->login);
                 // goto home page
                 $this->_redirect('index/index');
             } else {
                 sleep(7);
                 $this->view->msg = $this->view->translate->_("Username or password is incorrect");
                 // включаем счетчик, если кол-во неудачных логинов большое то включаем капчу
                 $this->defNamespace->numLoginFails++;
             }
         }
     }
     /* Если данные не передавались или неверный логин, то выводим форму для авторизации */
     $this->view->caption = sprintf($this->view->translate->_("Login with your %sWe%sbacula%s account"), '<font color="#00008B">', '</font><font color="#A80000">', '</font>');
     $this->view->title = $this->view->translate->_('Login with your Webacula account');
     $this->view->form = $form;
     // workaround for unit tests 'Action Helper by name Layout not found'
     if (!$this->_helper->hasHelper('layout')) {
         $this->render();
     }
 }