/** * @param $uri * @return bool|Entity */ static function read($uri, $access = false, $relative_path = false) { if ($relative_path && preg_match('/(\\.\\.)/ui', $uri)) { $names = explode('/', trim($uri, '/')); $i = 0; $new_names = []; foreach ($names as $name) { if ($name == '..') { if ($i > 0) { $i--; unset($new_names[$i]); } } else { $new_names[$i] = $name; $i++; } } $uri = count($new_names) ? '/' . implode('/', $new_names) : ''; } if ($store = self::getStore($uri)) { $obj = $store->read($uri); if ($obj && $obj->is_exists() && $access) { if (!Auth::get_user()->check_access('read', $obj)) { $obj = self::create($obj->proto(), $obj->parent(), ['name' => $obj->name(), 'is_accessible' => false]); } } return $obj; } return null; }
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) { $user = Auth::get_user(); if ($user->uri() != '/system/users/admin') { $request->redirect('sign-in'); } $request->mix(['REQUEST' => ['object' => mb_substr($request['REQUEST']['path'], mb_strlen($this->path))]]); return parent::work($request); }
/** * Инициализация сессии * @return void */ static function init() { session_write_close(); if (IS_INSTALL) { session_id(Auth::get_user()->value(null, true)); } else { session_id('install'); } session_start(); }
function start(Request $request) { $request->stash(); $result = false; if ($this->startCheck($request)) { if (!Auth::get_user()->check_access('start', $this)) { throw new Error(['Нет доступа на запуск контроллера "%s"', $this->uri()], 403); //throw new Error(['Нет доступа на запуск контроллера "%s"', $this->uri()], 404); } ob_start(); // Выполнение своей работы $result = $this->work($request); if (!($result === false || is_array($result))) { $result = ob_get_contents() . $result; } ob_end_clean(); } $request->unstash(); return $result; }
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) { $user = Auth::get_user(); $request->mix(['REQUEST' => ['object' => $user]]); return parent::work($request); }