function work(Request $request) { $user = Auth::get_user(); if ($user->is_exists()) { if (!$user->confirm->is_draft()) { //новый и еще неактивный $this->_result = 5; } else { //Есть такой активный пользователь $this->_result = 4; } //пользователя еще нет } else { if ($request['REQUEST']['form']) { //Присвоим email новому пользователю и проверим уникальность $user->email->value($request['REQUEST']['email']); if ($request['REQUEST']['call'] == 'check') { if (!$user->check()) { if ($user->errors()->email->value->duplicate) { $this->_result = 2; } else { //Другая ошибка $this->_result = 3; } } else { //все корректно $this->_result = 1; } $session['result'] = $this->_result; Session::set('form', array($this->uri() . $this->getToken() => $session)); setcookie('token', $this->getToken(), 0, '/'); return $session; } else { if (isset($request['COOKIE']['token']) && Session::is_exist('form')) { $form = Session::get('form'); if (isset($form[$this->uri() . $request['COOKIE']['token']])) { $form = $form[$this->uri() . $request['COOKIE']['token']]; Session::remove('form'); } if (isset($form['result'])) { $this->_result = $form['result']; } } if ($this->_result == 1 && isset($user)) { $user->password->value($request['REQUEST']['password']); $user->title->value($request['REQUEST']['email']); $user->confirm->proto("/vendor/boolive/basic/string"); $user->confirm->value(uniqid('', true)); Data::write($user); //Теперь у нас есть такой пользователь $this->_result = 5; $this->mailSender->sendMail($to = $user->email->value(), $subject = 'Подтвержление регистрации на ' . $this->mailSender->domain->value(), $message = 'Здравствйте, вы зарегистрировались на ' . $this->mailSender->domain->value() . ' , для подтверждения актуальности электронного адреса, перейдите, пожалуйста по <a href="' . $this->mailSender->domain->value() . '/profile?confirm=' . $user->confirm->value() . '">ссылке</a>'); $request->redirect('profile?confirm=0'); } } } } return parent::work($request); }
function work(Request $request) { if ($request['REQUEST']['form']) { $session = array(); try { self::$config = Config::read('auth'); $result = Data::find(array('from' => self::$config['users-list'], 'select' => 'children', 'depth' => 'max', 'where' => array(['child', 'email', array('value', '=', $request['REQUEST']['email'])], ['child', 'password', array('value', '=', $request['REQUEST']['password'])]), 'key' => false, 'limit' => array(0, 1), 'comment' => 'sign-in user by email and password'), false); if (!empty($result)) { $user = $result[0]; Auth::set_user($user); if ($request['REQUEST']['remember-me']) { Auth::set_user($user, 1234565); } $request->redirect(self::$config['redirect']); } else { $this->_result = 0; } } catch (\Exception $error) { $this->_result = 0; } $session['result'] = $this->_result; Session::set('form', array($this->uri() . $this->getToken() => $session)); setcookie('token', $this->getToken(), 0, '/'); return $session; } else { // Отображение формы $v = array(); if (isset($request['COOKIE']['token']) && Session::is_exist('form')) { $form = Session::get('form'); if (isset($form[$this->uri() . $request['COOKIE']['token']])) { $form = $form[$this->uri() . $request['COOKIE']['token']]; Session::remove('form'); } if (isset($form['result'])) { $this->_result = $form['result']; } } $this->res->start($request); return $this->show($v, $request); } }
function work(Request $request) { $this->_base_uri = $request['REQUEST']['object']->uri(); $request->mix(['REQUEST' => ['base_uri' => $this->_base_uri]]); if ($request['REQUEST']['form'] !== false) { // Обработка формы $session = array(); try { // Вызов полей для свойств объекта $request->mix(['REQUEST' => ['call' => 'check']]); $list = $this->getList($request); if (is_array($list)) { $input = $request->getInput(); $views = $this->linked()->views->linked(); foreach ($list as $obj) { $name = preg_replace('/' . preg_quote($this->_base_uri . '/', '/') . '/u', '', $obj->uri()); $obj_input = []; if (isset($input['REQUEST'][$name])) { $obj_input['REQUEST']['value'] = $input['REQUEST'][$name]; } if (isset($input['FILES'][$name])) { $obj_input['FILES']['value'] = $input['FILES'][$name]; } $obj_input['REQUEST']['object'] = $obj; $views->start($request->mix($obj_input)); } } if (!$request['REQUEST']['object']->errors()->isExist()) { // Выполнение действия $this->process($request); $this->_result = self::FORM_RESULT_OK; if (!($redirect = $this->getCommands('redirect'))) { $redirect = $this->redirect->inner(); if (!$redirect->is_draft() && $redirect->value() != '') { $request->redirect(Request::url($redirect->value())); } } } else { $this->_result = self::FORM_RESULT_ERROR; } } catch (\Exception $error) { $this->_result = self::FORM_RESULT_ERROR; } $session['result'] = $this->_result; if ($this->_result == self::FORM_RESULT_ERROR) { $session['object'] = $request['REQUEST']['object']->toArray(); // @todo Для ajax запросов нужна развернутая информация об ошибках для каждого поля $session['message'] = 'Ошибки'; } else { if ($this->_result == self::FORM_RESULT_ERROR) { $session['message'] = 'Успех'; } } // @todo Для ajax запросов в сессию сохранять нет смысла Session::set('form', array($this->uri() . $this->getToken() => $session)); setcookie('token', $this->getToken(), 0, '/'); return $session; } else { // Отображение формы $v = array(); if (isset($request['COOKIE']['token']) && Session::is_exist('form')) { $form = Session::get('form'); if (isset($form[$this->uri() . $request['COOKIE']['token']])) { $form = $form[$this->uri() . $request['COOKIE']['token']]; Session::remove('form'); } if (isset($form['object'])) { $request['REQUEST']['object'] = Entity::fromArray($form['object']); } if (isset($form['result'])) { $this->_result = $form['result']; } } $this->res->start($request); return $this->show($v, $request); } }