/** * @override * @param array $data */ public function isValid($data) { if ($this->isAdm()) { if ($data['cost']['budget'] > 0) { unset($data['cost']['agreement']); } else { $data['cost']['agreement'] = 1; } } return parent::isValid($data); }
/** * Проверка авторизации и установка ошибки или URL для перехода * * @param type $data * @return boolean */ public function isValid($data) { if ($valid = parent::isValid($data)) { $data = $this->getValues(); $autologin = isset($data['autologin']) && $data['autologin'] == 1; $pwd = users::hashPasswd($data['passwd']); $uid = login($data['login'], $pwd, $autologin); switch ($uid) { case self::UID_FAIL: $valid = false; $this->getElement('login')->addError(self::FAIL_LOGIN_MSG); break; case self::UID_BANNED: $_SESSION['rand'] = csrf_token(); $this->redirect_to = sprintf(self::REDIRECT_URL_BANNED, $data['login'], $_SESSION['rand']); break; case self::UID_INNACTIVE: $this->redirect_to = self::REDIRECT_URL_INACTIVE; break; case self::UID_DENYIP: $this->redirect_to = sprintf(self::REDIRECT_URL_DENYIP, $data['login']); break; case users::AUTH_STATUS_2FA: $this->redirect_to = self::REDIRECT_URL_2FA; break; default: //Успешная авторизация if ($uid > 0) { $default_location = is_emp() ? '/tu/' : '/projects/'; $ref_uri = isset($_SESSION['ref_uri']) ? urldecode($_SESSION['ref_uri']) : null; $ref_uri = !$ref_uri ? $default_location : $ref_uri; $location = HTTP_PFX . $_SERVER['HTTP_HOST'] . $ref_uri; // #0012501 $location = preg_replace("/\\/router\\.php\\?pg=/", "", $location); // #0011589 if (strpos($location, '/remind/') || strpos($location, 'inactive.php') || strpos($location, 'checkpass.php') || strpos($location, '/registration/') || strpos($location, 'fbd.php')) { $location = $default_location; } session_write_close(); //Отправляем в очередь событие об успешной авторизации require_once ABS_PATH . '/classes/statistic/StatisticFactory.php'; require_once ABS_PATH . '/classes/users.php'; $ga = StatisticFactory::getInstance('GA'); $ga->queue('event', array('uid' => $uid, 'cid' => users::getCid(), 'category' => is_emp() ? 'customer' : 'freelancer', 'action' => 'authorization_passed', 'label' => 'email')); $this->redirect_to = $location; } } } return $valid; }