示例#1
0
文件: auth.php 项目: kronius/vidpro
 function before_parse()
 {
     if (empty($this->params['short'])) {
         // вызвано не возле короткой формы логина, а в теле страницы
         // процедура изменения пароля
         if (!empty($_GET['k']) && isset($_POST['newpass']) && isset($_POST['accpass'])) {
             $sql = 'sql:user?u_passre=\'' . $_GET['k'] . '\' $shrink=yes auto_query=no';
             $res = $GLOBALS[CM]->run($sql);
             if ($res) {
                 if (empty($_POST['newpass']) || $_POST['newpass'] != $_POST['accpass']) {
                     $this->pg = str_replace('<!--err:changepass-->', 'Пароли не совпадают', $this->pg);
                     return false;
                     // пусто или не совпадает
                 } else {
                     $GLOBALS[CM]->run($sql, 'update', array('u_passre' => '', 'u_pwd' => $_POST['newpass']));
                     $this->pg = $this->tpl['changed'];
                     return true;
                     // пароль изменен
                 }
             }
         }
     } else {
         // вызвано возле формы логина кнопкой "напомнить"
         if (empty($_POST['passremail'])) {
             $this->pg = str_replace('<!--err:passremail-->', '', $this->pg);
             // если его не зачищать, то ява-скрипт отобразит блок, чтобы показать результат
         } else {
             // проверить наличие данного емыла в базе
             $sql = 'sql:user?u_email=\'' . $_POST['passremail'] . '\' $shrink=yes auto_query=no';
             $res = $GLOBALS[CM]->run($sql);
             if (!$res) {
                 $this->pg = str_replace('<!--err:passremail-->', 'Пользователь с таким e-mail не найден.', $this->pg);
                 return false;
                 // емыл не найден
             } elseif (!empty($res['u_lock']) && $res['u_lock'] != '') {
                 $this->pg = str_replace('<!--err:passremail-->', 'Пользователь заблокирован', $this->pg);
                 return false;
                 // акк заблокирован
             }
             // создать секретный код для беспарольного входа и отправить его на емыл юзера
             if (empty($res['u_passre'])) {
                 $res['u_passre'] = substr(uniqid(mt_rand()), 0, 24);
                 $GLOBALS[CM]->run($sql, 'update', array('u_passre' => $res['u_passre']));
             }
             $ml = new mailer(array('tpl' => $this->params['email_tpl']));
             $ml->send($res, $res['u_email']);
             $this->pg = str_replace('<!--err:passremail-->', 'Письмо отправлено', $this->pg);
             return true;
             // пароль отправлен
         }
     }
     $tmp = new iControl(array('pg' => $this->pg));
     $tmp->get_maked();
     $this->pg = $tmp->pg;
     unset($tmp);
     //parent::onValid();
 }
示例#2
0
 function init()
 {
     if (AJAX) {
         $this->ajax_process();
         parent::init();
         return true;
     }
     parent::init(false);
     if (!empty($this->ctrl['unlock'])) {
         //Выбираю пользователя
         $rs = $GLOBALS[CM]->run('sql:user?u_lock=\'' . $this->ctrl['unlock'] . '\'$shrink=yes auto_query=no');
         unset($rs['u_pwd']);
         if ($rs && $rs2) {
             $GLOBALS[CM]->run('sql:user?u_id=\'' . $rs['u_id'] . '\'$auto_query=no', 'update', array('u_lock' => '', 'u_last_login' => date('Y-m-d H:i:s')));
             $_SESSION['Jlib_auth'] = array_merge($rs, $rs2, array('site_auth' => 1, 'admin_auth' => 0));
             $this->pg = $this->tpl['reg_unlocked'];
         } else {
             $this->pg = $this->tpl['reg_stilllocked'];
         }
         $tmp = new iControl(array('pg' => $this->pg));
         $tmp->get_maked();
         $this->pg = $tmp->pg;
         unset($tmp);
         $this->parsed = true;
         $this->maked = true;
         return true;
     }
     //Инициализация хранилища визарда
     $this->wizard_init();
     if (!empty($GLOBALS['Jlib_page_extra'][0]) && $GLOBALS['Jlib_page_extra'][0] == 'ulogin') {
         $this->ulogin_reg();
     }
     //Получить информацию о шагах
     //Определить шаг
     if (!empty($this->ctrl[$this->params['ctrl_steps']])) {
         $this->cur_step = $this->ctrl[$this->params['ctrl_steps']];
     } else {
         $this->cur_step = array_shift(array_keys($this->params['steps']));
     }
     //Оформить шаг
     $this->show_step();
     $this->load_params_reg();
     // инициализация
     $this->user = 0;
     if ($this->user && $this->saller) {
         // режим update
     } else {
         // режим insert
         $this->form_params['cs_mode'] = 'insert';
     }
     parent::init(true);
     $this->inited = true;
 }