コード例 #1
0
ファイル: RequestFlow.php プロジェクト: tokushima/rhaco3
 /**
  * ログインしていない場合にログイン処理を実行する
  * @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');
         }
     }
 }