コード例 #1
0
 public function execute()
 {
     $id = (int) waRequest::get('id', waRequest::TYPE_INT);
     $action = waRequest::get('a');
     if (waRequest::getMethod() != 'post') {
         throw new waException('Send something via POST to confirm operation.');
     }
     $admin = 2 <= $this->getUser()->getRights(wa()->getApp(), 'backend');
     if (!$admin && ($action != 'passwd' || $this->getUser()->getId() != $id)) {
         throw new waRightsException('Access denied.');
     }
     switch ($action) {
         case 'delete':
             $this->deleteUser($id);
             return;
         case 'passwd':
             $r = $this->userPassword($id);
             if ($r) {
                 $this->response = $r;
             }
             return;
         case 'create_login':
             $r = $this->createLogin($id);
             if ($r) {
                 $this->response = $r;
             }
             return;
         case 'create_credentials':
             $r = $this->createCredentials($id);
             if ($r) {
                 $this->response = $r;
             }
             return;
     }
 }
コード例 #2
0
 public function execute()
 {
     $this->settings = $this->getConfig()->getOption(null);
     if (waRequest::getMethod() == 'post') {
         $this->save($this->settings);
         $this->view->assign('saved', 1);
     }
     $this->settings['image_sizes'] = array('system' => $this->formatSizes($this->getConfig()->getImageSizes('system')), 'custom' => $this->formatSizes((array) $this->settings['image_sizes']));
     $this->view->assign('settings', $this->settings);
 }
コード例 #3
0
 public function execute()
 {
     $settings = $this->getConfig()->getOption(null);
     if (waRequest::getMethod() == 'post') {
         $this->save($settings);
         $this->view->assign('saved', 1);
     }
     $settings['sizes'] = array('system' => $this->formatSizes($this->getConfig()->getSizes('system')), 'custom' => $this->formatSizes($settings['sizes']));
     $this->view->assign('settings', $settings);
     $this->view->assign('sidebar_width', $this->getConfig()->getSidebarWidth());
 }
コード例 #4
0
 public function execute()
 {
     $settings = $this->getConfig()->getOption(null);
     if (waRequest::getMethod() == 'post') {
         $this->save($settings);
         $this->view->assign('saved', 1);
     }
     $settings['sizes'] = array('system' => $this->formatSizes($this->getConfig()->getSizes('system')), 'custom' => $this->formatSizes($settings['sizes']));
     $settings += array('sharpen' => null, 'max_size' => 970, 'enable_2x' => null, 'save_quality' => null, 'save_original' => null, 'save_quality_2x' => null, 'thumbs_on_demand' => null);
     $this->view->assign('settings', $settings);
     $this->view->assign('sidebar_width', $this->getConfig()->getSidebarWidth());
 }
コード例 #5
0
 public function execute()
 {
     if (waRequest::getMethod() != 'post') {
         return;
     } else {
         $request_id = waRequest::post('id');
         $request_id = preg_replace("/[^0-9]/", "", $request_id);
         $contact_id = wa()->getUser()->getId();
         $model = new helpdeskFavoritesPluginModel();
         $values = array('contact_id' => $contact_id, 'request_id' => $request_id);
         $state = (int) waRequest::post('favorite');
         if ($request_id && $state) {
             //пока без UNIQUE можно смело вставлять
             //Удаление все снесёт
             $message = $model->insert($values);
         } else {
             $message = $model->deleteByField($values);
         }
         $this->view->assign('data', $message);
     }
 }
コード例 #6
0
    /**
     * @param $params
     * @return array|bool
     * @throws waException
     */
    protected function _auth($params)
    {
        if ($params && isset($params['id'])) {
            $contact_model = new waContactModel();
            $user_info = $contact_model->getById($params['id']);
            if ($user_info && ($user_info['is_user'] > 0 || !$this->options['is_user'])) {
                waSystem::getInstance()->getResponse()->setCookie('auth_token', null, -1);
                return $this->getAuthData($user_info);
            }
            return false;
        } elseif ($params && isset($params['login']) && isset($params['password'])) {
            $login = $params['login'];
            $password = $params['password'];
        } elseif (waRequest::getMethod() == 'post' && waRequest::post('wa_auth_login')) {
            $login = waRequest::post('login');
            $password = waRequest::post('password');
            if (!strlen($login)) {
                throw new waException(_ws('Login is required'));
            }
        } else {
            $login = null;
        }
        if ($login && strlen($login)) {
            $user_info = $this->getByLogin($login);
            if ($user_info && ($user_info['is_user'] > 0 || !$this->options['is_user']) && waContact::getPasswordHash($password) === $user_info['password']) {
                $auth_config = wa()->getAuthConfig();
                if (wa()->getEnv() == 'frontend' && !empty($auth_config['params']['confirm_email'])) {
                    $contact_emails_model = new waContactEmailsModel();
                    $email_row = $contact_emails_model->getByField(array('contact_id' => $user_info['id'], 'sort' => 0));
                    if ($email_row && $email_row['status'] == 'unconfirmed') {
                        $login_url = wa()->getRouteUrl((isset($auth_config['app']) ? $auth_config['app'] : '') . '/login', array());
                        $html = sprintf(_ws('A confirmation link has been sent to your email address provided during the signup. Please click this link to confirm your email and to sign in. <a class="send-email-confirmation" href="%s">Resend the link</a>'), $login_url . '?send_confirmation=1');
                        $html = '<div class="block-confirmation-email">' . $html . '</div>';
                        $html .= <<<HTML
<script type="text/javascript">
    \$(function () {
        \$('a.send-email-confirmation').click(function () {
            \$.post(\$(this).attr('href'), {
                    login: \$(this).closest('form').find("input[name='login']").val()
                }, function (response) {
                \$('.block-confirmation-email').html(response);
            });
            return false;
        });
    });
</script>
HTML;
                        throw new waException($html);
                    }
                }
                $response = waSystem::getInstance()->getResponse();
                // if remember
                if (waRequest::post('remember')) {
                    $cookie_domain = ifset($this->options['cookie_domain'], '');
                    $response->setCookie('auth_token', $this->getToken($user_info), time() + 2592000, null, $cookie_domain, false, true);
                    $response->setCookie('remember', 1);
                } else {
                    $response->setCookie('remember', 0);
                }
                // return array with compact user info
                return $this->getAuthData($user_info);
            } else {
                if ($this->options['login'] == 'email') {
                    throw new waException(_ws('Invalid email or password'));
                } else {
                    throw new waException(_ws('Invalid login or password'));
                }
            }
        } else {
            // try auth by cookie
            return $this->_authByCookie();
        }
    }
コード例 #7
0
 public function execute()
 {
     $contact_model = new waContactModel();
     if ($contact_model->countAll()) {
         $this->redirect($this->getConfig()->getBackendUrl(true));
     }
     if (($locale = waRequest::get('lang')) && waLocale::getInfo($locale)) {
         // set locale
         wa()->setLocale($locale);
         // save to database default locale
         $app_settings_model = new waAppSettingsModel();
         $app_settings_model->set('webasyst', 'locale', $locale);
     }
     if (file_exists($this->getConfig()->getRootPath() . '/install.php')) {
         @unlink($this->getConfig()->getRootPath() . '/install.php');
     }
     if (waRequest::getMethod() == 'post') {
         $errors = array();
         $login = waRequest::post('login');
         $validator = new waLoginValidator();
         if (!$validator->isValid($login)) {
             $errors['login'] = implode("<br />", $validator->getErrors());
         }
         $password = waRequest::post('password');
         $password_confirm = waRequest::post('password_confirm');
         if ($password !== $password_confirm) {
             $errors['password'] = _w('Passwords do not match');
         }
         $email = waRequest::post('email');
         $validator = new waEmailValidator();
         if (!$validator->isValid($email)) {
             $errors['email'] = implode("<br />", $validator->getErrors());
         }
         if ($errors) {
             $this->view->assign('errors', $errors);
         } else {
             // save account name
             $app_settings_model = new waAppSettingsModel();
             $app_settings_model->set('webasyst', 'name', waRequest::post('account_name'));
             if ($email) {
                 $app_settings_model->set('webasyst', 'email', $email);
                 $app_settings_model->set('webasyst', 'sender', $email);
             }
             // create user
             $user = new waUser();
             $firstname = waRequest::post('firstname');
             $user['firstname'] = $firstname ? $firstname : $login;
             $user['lastname'] = waRequest::post('lastname');
             $user['is_user'] = 1;
             $user['login'] = $login;
             $user['password'] = $password;
             $user['email'] = $email;
             $user['locale'] = wa()->getLocale();
             $user['create_method'] = 'install';
             if ($errors = $user->save()) {
                 $result = array();
                 foreach ($errors as $k => $v) {
                     $result['all'][] = $k . ": " . (is_array($v) ? implode(', ', $v) : $v);
                 }
                 $result['all'] = implode("\r\n", $result['all']);
                 $this->view->assign('errors', $result);
             } else {
                 $user->setRight('webasyst', 'backend', 1);
                 waSystem::getInstance()->getAuth()->auth(array('login' => $login, 'password' => $password));
                 $path = $this->getConfig()->getPath('config');
                 // check routing.php
                 if (!file_exists($path . '/routing.php')) {
                     $apps = wa()->getApps();
                     $data = array();
                     $domain = $this->getConfig()->getDomain();
                     $site = false;
                     foreach ($apps as $app_id => $app) {
                         if ($app_id == 'site') {
                             $site = true;
                         } elseif (!empty($app['frontend'])) {
                             $routing = array('url' => $app_id . '/*', 'app' => $app_id);
                             if (!empty($app['routing_params']) && is_array($app['routing_params'])) {
                                 $routing = array_merge($routing, $app['routing_params']);
                             }
                             $data[$domain][] = $routing;
                         }
                     }
                     if ($site) {
                         $data[$domain][] = array('url' => '*', 'app' => 'site');
                     }
                     waUtils::varExportToFile($data, $path . '/routing.php');
                 }
                 // redirect to backend
                 $this->redirect($this->getConfig()->getBackendUrl(true));
             }
         }
     }
 }
コード例 #8
0
 protected function _auth($params)
 {
     if ($params && isset($params['id'])) {
         $contact_model = new waContactModel();
         $user_info = $contact_model->getById($params['id']);
         if ($user_info && ($user_info['is_user'] || !$this->options['is_user'])) {
             waSystem::getInstance()->getResponse()->setCookie('auth_token', null, -1);
             return $this->getAuthData($user_info);
         }
         return false;
     } elseif ($params && isset($params['login']) && isset($params['password'])) {
         $login = $params['login'];
         $password = $params['password'];
     } elseif (waRequest::getMethod() == 'post' && waRequest::post('wa_auth_login')) {
         $login = waRequest::post('login');
         $password = waRequest::post('password');
         if (!strlen($login)) {
             throw new waException(_ws('Login is required'));
         }
     } else {
         $login = null;
     }
     if ($login && strlen($login)) {
         $user_info = $this->getByLogin($login);
         if ($user_info && ($user_info['is_user'] || !$this->options['is_user']) && waContact::getPasswordHash($password) === $user_info['password']) {
             $response = waSystem::getInstance()->getResponse();
             // if remember
             if (waRequest::post('remember')) {
                 $response->setCookie('auth_token', $this->getToken($user_info), time() + 2592000, null, '', false, true);
                 $response->setCookie('remember', 1);
             } else {
                 $response->setCookie('remember', 0);
             }
             // return array with compact user info
             return $this->getAuthData($user_info);
         } else {
             if ($this->options['login'] == 'email') {
                 throw new waException(_ws('Invalid email or password'));
             } else {
                 throw new waException(_ws('Invalid login or password'));
             }
         }
     } else {
         // try auth by cookie
         return $this->_authByCookie();
     }
 }