public function check($with_csrf = false)
 {
     if ($with_csrf && !$this->isValidCsrfToken()) {
         return;
     }
     $key = !empty($_SESSION[self::IDENTIFIER]) ? $_SESSION[self::IDENTIFIER] : !1;
     $cookies = Application::$request_variables['cookie'];
     $cookie_key = !empty($cookies[self::IDENTIFIER]) ? $cookies[self::IDENTIFIER] : !1;
     if (!$key) {
         if ($cookie_key) {
             $key_manager = new KeyManager();
             list($user_id, $access_key) = $key_manager->getPair($cookie_key);
             if (!is_numeric($user_id)) {
                 $this->removeCookie(self::IDENTIFIER);
                 return;
             }
             $user = new User($this->db);
             $user->allocateById($user_id);
             if (!$user->hasAccessKey($access_key)) {
                 $this->removeCookie(self::IDENTIFIER);
                 return;
             }
             $this->setSession(self::IDENTIFIER, $cookie_key);
             $this->user_row = $user->getRowData();
             $this->result = !$user->isEmpty();
         }
     } else {
         $key_manager = new KeyManager();
         $user_id = $key_manager->getPair($key)[0];
         $user = new User($this->db);
         $user->allocateById($user_id);
         $this->user_row = $user->getRowData();
         $this->result = !$user->isEmpty();
     }
 }
Beispiel #2
0
 public function createCompany($params)
 {
     //TODO: create company
     /*
      * 1) Провалидировать все поля
      * 2) Сохранить (ready)
      */
     $valid = false;
     $result = false;
     $user_created = false;
     $errors = array();
     $mName = trim($params['company_name']);
     $mDomain = mb_strtolower(trim($params['company_domain']), 'utf-8');
     $mCountry = trim($params['company_country']);
     $mCity = trim($params['company_city']);
     $mWebsite = mb_strtolower(trim($params['company_site']), 'utf-8');
     $mCompanyType = trim($params['company_type']);
     $mLoginEmail = mb_strtolower(trim($params['login_email']), 'utf-8');
     $mLoginPassword = trim($params['login_password']);
     $mLoginConfirmPassword = trim($params['login_confirm_password']);
     $mContactEmail = mb_strtolower(trim($params['contacts_email']), 'utf-8');
     $mContactPhone = trim($params['contacts_phone']);
     $mValidator = new Validation();
     if (empty($mName) || strlen($mName) < 2 || strlen($mName) > 250) {
         array_push($errors, 'name');
     }
     if (empty($mCountry)) {
         array_push($errors, 'country');
     }
     if (!empty($mWebsite) && !$mValidator->isValidUrl($mWebsite)) {
         array_push($errors, 'website');
     }
     if (empty($mDomain) || !$mValidator->isValidCompanyDomain($mDomain) || $this->isDomainInUse($mDomain)) {
         array_push($errors, 'domain');
     }
     $company_types = array(-1, 1, 2, 3);
     if (!is_numeric($mCompanyType) || !$mCompanyType || !in_array($mCompanyType, $company_types)) {
         array_push($errors, 'company_type');
     }
     if (empty($mLoginEmail) || !$mValidator->isValidEmail($mLoginEmail) || $this->isEmailInUse($mLoginEmail)) {
         array_push($errors, 'login_email');
     }
     if (empty($mLoginPassword) || strlen($mLoginPassword) < 6 || strlen($mLoginPassword) > 200) {
         array_push($errors, 'login_password');
     }
     if (empty($mLoginConfirmPassword) || $mLoginPassword != $mLoginConfirmPassword) {
         array_push($errors, 'login_confirm_password');
     }
     if (empty($mContactEmail) || !$mValidator->isValidEmail($mContactEmail)) {
         array_push($errors, 'contact_email');
     }
     if (!empty($mContactPhone) && !$mValidator->isValidPhone($mContactPhone)) {
         array_push($errors, 'contact_phone');
     }
     if (!count($errors)) {
         $valid = true;
     }
     $mAdminUser = null;
     if ($valid) {
         //создаем админа, получаем его id
         $mUsersManager = new UsersManager($this->db);
         $admin_user_id = $mUsersManager->createAdminForCompany(array('email' => $mLoginEmail, 'password' => $mLoginPassword, 'confirm_password' => $mLoginConfirmPassword));
         if ($admin_user_id != -1) {
             $user_created = true;
             $mAdminUser = new User($this->db);
             $mAdminUser->allocateById($admin_user_id);
         }
     }
     if ($valid && $user_created) {
         $this->db->query("INSERT INTO `companies` (name, country, city, website, company_type, user_id, domain, contact_email,\n                contact_phone, register_time, max_count_services, employees_number, end_subscription_time, stop_company_time,\n                sms_enabled, email_enabled)\n                VALUES(?s, ?s, ?s, ?s, ?s, ?i, ?s, ?s, ?s, ?i, ?i, ?i, ?i, ?i, ?i, ?i)", $mName, $mCountry, $mCity, $mWebsite, $mCompanyType, $mAdminUser->getId(), $mDomain, $mContactEmail, $mContactPhone, time(), self::MAX_COUNT_SERVICES_TRIAL, self::DEFAULT_EMPLOYEES_NUMBER, time() + self::SUBSCRIPTION_TIME_TRIAL, time() + self::SUBSCRIPTION_TIME_TRIAL + self::ADDITIONAL_TIME_TRIAL, self::DEFAULT_SMS_ENABLED, self::DEFAULT_EMAIL_ENABLED);
         $inserted_company_id = $this->db->insertedId();
         $mAdminUser->setCompanyId($inserted_company_id);
         $result = true;
     }
     return $result;
 }