/** * ログインしていない場合にログイン処理を実行する * @throws \LogicException */ public function login_required() { if (!$this->is_login() && isset($this->select_map['method']) && $this->select_map['method'] != 'do_login') { if ($this->has_object_module('before_login_required')) { /** * 未ログイン時のログイン処理の前処理 * @param self $this */ $this->object_module('before_login_required', $this); } if (!$this->is_login()) { if ($this->select_map['method'] != 'do_logout') { $this->set_login_redirect(\org\rhaco\Request::current_url() . \org\rhaco\Request::request_string(true)); } $req = new \org\rhaco\Request(); $this->sess->vars(__CLASS__ . '_login_vars', array(time(), $req->ar_vars())); foreach ($this->package_maps as $k => $m) { if ($m['method'] == 'do_login' && isset($m['format'])) { return \org\rhaco\net\http\Header::redirect($m['format']); } } foreach ($this->maps as $k => $m) { if (isset($m['name']) && $m['name'] == 'login' || isset($m['method']) && $this->select_map['class'] == $m['class'] && $m['method'] == 'do_login' && isset($m['format'])) { return \org\rhaco\net\http\Header::redirect($m['format']); } } \org\rhaco\net\http\Header::send_status(401); throw new \LogicException('Unauthorized'); } } }