Ejemplo n.º 1
0
 public function roleUpdateAction()
 {
     $role_id = $this->_request->getParam('role_id');
     $role_name = $this->_request->getParam('role_name');
     if (empty($role_id) || empty($role_name)) {
         throw new Exception(__METHOD__ . ' : Empty input parameters');
     }
     $form = new FormRole(null, $role_id);
     $table = new Wbroles();
     if ($this->_request->isPost()) {
         // Проверяем валидность данных формы
         if ($form->isValid($this->_getAllParams())) {
             // update data
             $data = array('name' => $role_name, 'order_role' => $this->_request->getParam('order'), 'description' => $this->_request->getParam('description'), 'inherit_id' => $this->_request->getParam('inherit_id'));
             $where = $table->getAdapter()->quoteInto('id = ?', $role_id);
             try {
                 $table->update($data, $where);
             } catch (Zend_Exception $e) {
                 $this->view->exception = $this->view->translate->_('Exception') . ' : ' . $e->getMessage();
             }
             // clear all cache
             $this->cache_helper->clearAllCache();
             // render
             $this->_forward('role-main-form', 'admin', null, array('role_id' => $role_id, 'role_name' => $role_name));
             // action, controller
             return;
         }
     }
     // create form
     $row = $table->find($role_id)->current();
     // fill form
     $form->populate(array('acl' => 'role', 'role_id' => $role_id, 'name' => $row->name, 'order' => $row->order_role, 'description' => $row->description, 'inherit_id' => $row->inherit_id));
     $form->submit->setLabel($this->view->translate->_('Update'));
     $form->setAction($this->view->baseUrl . '/admin/role-update');
     $this->view->form = $form;
     $this->view->title = 'Webacula :: ' . $this->view->translate->_('Role update');
     $this->renderScript('admin/form-role.phtml');
 }
 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();
     }
 }