예제 #1
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  * @throws    \Exception 必須な情報が渡されていないか情報が取得できない場合はThrow
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     // 共通処理クラスを呼び出し
     $common = new \RisolutoApps\Admin\AdminCommon();
     /** @noinspection PhpUnusedLocalVariableInspection */
     $detail = $common->loginCheck($sess, true);
     $param = $this->getParam();
     if (is_numeric($param[0])) {
         // 引数値がセットされていれば、それを元に登録情報を呼び出す
         $target = \Risoluto\Auth::callProviderMethod('showGroupByNo', ['no' => $param[0]]);
         if (empty($target)) {
             // 情報が取得できなかった場合も例外をThrow
             throw new \Exception('Cannot load group data');
         }
     } else {
         // 指定されていなければ例外をThrowする
         throw new \Exception('Require args not found');
     }
     // 情報が取得できたら整形してセッションに保存、入力画面へ遷移する
     $getVals['entered'] = ['no' => $target[0]['no'], 'groupid' => $target[0]['groupid'], 'groupname' => $target[0]['groupname'], 'status' => $target[0]['status']];
     $sess->store('form', $getVals);
     \Risoluto\Url::redirectTo('Admin_GroupMng_ModEntry');
     exit;
 }
예제 #2
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     // 共通処理クラスを呼び出し
     $common = new \RisolutoApps\Admin\AdminCommon();
     $detail = $common->loginCheck($sess, false);
     $entered = $common->checkEnteredSelfData($_POST, $sess->load('csrf_token'), $detail['no']);
     // エラー情報があった場合は入力画面に戻る
     if (!empty($entered['error']['msg']) or !empty($entered['error']['form_crit'])) {
         // 入力情報はセッションに保存
         $sess->store('form', $entered);
         \Risoluto\Url::redirectTo('Admin_SelfEntry');
         exit;
     }
     // DBへの登録を行う
     $options = ['by_who' => $detail['no'] . ':' . $detail['userid'], 'no' => $detail['no'], 'userid' => $detail['userid'], 'username' => $detail['username'], 'password' => $entered['entered']['password'], 'groupno' => $detail['groupno'], 'status' => $detail['status']];
     $result = \Risoluto\Auth::callProviderMethod('modUserByNo', $options);
     // ヘッダ情報のセット
     $header = $this->getDefaultHeader();
     $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW');
     // テンプレートエンジン関連の処理
     $assign_value = ['header' => $header, 'detail' => $detail, 'result' => $result];
     $this->risolutoView($assign_value);
 }
예제 #3
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     if ($sess->isThere('Auth')) {
         // 認証情報がある場合は取得する
         $detail = $sess->Load('Auth');
     } else {
         // 認証情報がない場合はログイン画面へ遷移する
         $sess->store('AuthError', 'invalid_access');
         \Risoluto\Url::redirectTo('Admin_Login');
         exit;
     }
     // メニュータブ制御
     $params = $this->GetParam();
     if (!empty($params)) {
         $active_tab = htmlentities($params[0], ENT_QUOTES, 'UTF-8');
     } else {
         $active_tab = 'user';
     }
     $allow_admintab = $detail['groupno'] == 1 ? true : false;
     // ヘッダ情報のセット
     $header = $this->getDefaultHeader();
     $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW');
     // テンプレートエンジン関連の処理
     $assign_value = ['header' => $header, 'detail' => $detail, 'active_tab' => $active_tab, 'allow_admintab' => $allow_admintab];
     $this->risolutoView($assign_value);
 }
예제 #4
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // パラメタを取得し、空だった時はデフォルトの画面を取得する
     $params = $this->getParam();
     if (empty($params) or !preg_match('/^[[:alnum:]_-].*$/', $params[0])) {
         $tmpl = 'Top';
     } else {
         // パラメタ中のディレクトリセパレタを編集してセット
         $tmpl = str_replace('_', DS, $params[0]);
     }
     // デフォルトヘッダ情報の取得
     $header = $this->getDefaultHeader();
     // ファイルの実在を確認し、優先順に沿って処理を実施
     $basepath = RISOLUTO_APPS . 'RisolutoApps/Pages/shelf/' . str_replace('../', '', $tmpl);
     clearstatcache(true);
     if (file_exists($basepath . '.tpl')) {
         //--- .tplファイルが存在するときはテンプレートエンジンで処理した結果を出力する
         $tmpl .= '.tpl';
         // テンプレートエンジン関連の処理
         $assign_value = ['header' => $header, 'pagename' => $params[0], 'options' => $params];
         echo trim($this->risolutoView($assign_value, 'fetch', 'Pages/shelf/', $tmpl));
     } elseif (file_exists($basepath . '.md')) {
         //--- .mdファイルが存在するときはパースしてから処理する
         // タイトルだけ置き換えてヘッダとフッタを取得
         $header['title'] = (isset($params[0]) and !empty($params[0])) ? $params[0] : 'Top';
         $assign_value = ['header' => $header, 'pagename' => $params[0], 'options' => $params];
         $parts_header = $this->risolutoView($assign_value, 'fetch', 'Pages/', 'dummy_header.tpl');
         $parts_footer = $this->risolutoView($assign_value, 'fetch', 'Pages/', 'dummy_footer.tpl');
         // 本体をパースして取得
         /** @noinspection PhpUndefinedNamespaceInspection */
         $parts_body = \Michelf\MarkdownExtra::defaultTransform(file_get_contents($basepath . '.md'));
         // 画面に出力
         echo trim($parts_header . $parts_body . $parts_footer);
     } elseif (file_exists($basepath . '.raw')) {
         //--- .rawファイルが存在するときは取得した内容をそのまま出力
         echo trim(file_get_contents($basepath . '.raw'));
     } else {
         //--- いずれも存在しないときはエラー
         $conf = new \Risoluto\Conf();
         $conf->parse(RISOLUTO_CONF . 'risoluto.ini');
         $error = $conf->getIni('SEQ', 'error');
         \Risoluto\Url::redirectTo($error);
     }
 }
예제 #5
0
 /**
  * loginCheck(\Risoluto\Session $sess, $admin = true)
  *
  * ログインチェック処理を行う
  *
  * @access    public
  *
  * @param     \Risoluto\Session $sess セッションオブジェクト
  * @param     boolean           $admin 管理者権限必須か否か(true:必須、デフォルト/false:ログイン成功なら誰でもOK)
  *
  * @return    array      認証情報
  * @throws    \Exception 管理者権限必須の時に権限を持ってないユーザの場合はThrow
  */
 public function loginCheck(\Risoluto\Session $sess, $admin = true)
 {
     if ($sess->isThere('Auth')) {
         // 認証情報がある場合は取得する
         $detail = $sess->Load('Auth');
         if ($admin and $detail['groupno'] != 1) {
             // 管理者権限を持っていない場合はエラー
             throw new \Exception('Admin user required');
         } else {
             // 管理者権限を持っている場合はそのまま戻る
             return $detail;
         }
     } else {
         // 認証情報がない場合はログイン画面へ遷移する
         $sess->store('AuthError', 'invalid_access');
         \Risoluto\Url::redirectTo('Admin_Login');
         exit;
     }
 }
예제 #6
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     if (!$sess->isThere('Auth')) {
         // 認証情報がない場合は、ログイン画面へ遷移する
         $sess->store('AuthError', 'invalid_access');
         \Risoluto\Url::redirectTo('Admin_Login');
         exit;
     }
     if ($sess->isThere('Auth')) {
         // セッション情報を破棄する
         $sess->revoke('Auth');
     }
     // ヘッダ情報のセット
     $header = $this->getDefaultHeader();
     $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW');
     // テンプレートエンジン関連の処理
     $assign_value = ['header' => $header];
     $this->risolutoView($assign_value);
 }
예제 #7
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     if ($sess->isThere('Auth')) {
         // 認証情報がある場合は、メニュー画面へ遷移する
         \Risoluto\Url::redirectTo('Admin_Menu');
         exit;
     } elseif (isset($_POST['userid']) and isset($_POST['password'])) {
         // 入力値を処理
         $option = ['userid' => htmlentities($_POST['userid'], ENT_QUOTES, 'UTF-8'), 'password' => htmlentities($_POST['password'], ENT_QUOTES, 'UTF-8')];
         // POSTでユーザIDとパスワードが渡ってきた場合は認証処理を行う
         $auth_result = \Risoluto\Auth::callProviderMethod('doAuth', $option);
         if ($auth_result) {
             // 認証に成功した場合は詳細情報を取得
             $detail = \Risoluto\Auth::callProviderMethod('showUser', $option);
             $detail[0]['password'] = '******';
             $group = \Risoluto\Auth::callProviderMethod('showGroupByNo', ['no' => $detail[0]['groupno']]);
             $detail[0]['group'] = $group[0];
             // 認証情報をセッションに追加してメニュー画面へ遷移する
             $sess->store('Auth', $detail[0]);
             $sess->store('csrf_token', $sess->genRand());
             \Risoluto\Url::redirectTo('Admin_Menu');
             exit;
         } else {
             // 認証に失敗した場合はエラー情報をセッションに追加してログイン画面に戻る
             $sess->store('AuthError', 'auth_failure');
             \Risoluto\Url::redirectTo('Admin_Login');
             exit;
         }
     } else {
         // それ以外の時はエラー情報をセッションに追加してログイン画面に戻る
         $sess->store('AuthError', 'invalid_access');
         \Risoluto\Url::redirectTo('Admin_Login');
         exit;
     }
 }
예제 #8
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     // 共通処理クラスを呼び出し
     $common = new \RisolutoApps\Admin\AdminCommon();
     $detail = $common->loginCheck($sess, true);
     $entered = $common->checkEnteredGroupData($_POST, $sess->load('csrf_token'), htmlentities($_POST['no'], ENT_QUOTES, 'UTF-8'));
     // 入力情報はセッションに保存
     $sess->store('form', $entered);
     // エラー情報があった場合は入力画面に戻る
     if (!empty($entered['error']['msg']) or !empty($entered['error']['form_crit'])) {
         \Risoluto\Url::redirectTo('Admin_GroupMng_ModEntry');
         exit;
     }
     // ヘッダ情報のセット
     $header = $this->getDefaultHeader();
     $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW');
     // テンプレートエンジン関連の処理
     $assign_value = ['header' => $header, 'detail' => $detail, 'entered' => $entered, 'csrf_token' => $sess->load('csrf_token')];
     $this->risolutoView($assign_value);
 }
예제 #9
0
 /**
  * play()
  *
  * 主処理を行う
  *
  * @access    public
  *
  * @param     void
  *
  * @return    void    なし
  */
 public function play()
 {
     // セッションをスタート
     $sess = new \Risoluto\Session();
     $sess->start();
     if ($sess->isThere('Auth')) {
         // 認証情報がある場合は、メニュー画面へ遷移する
         \Risoluto\Url::redirectTo('Admin_Menu');
         exit;
     }
     $auth_error = '';
     if ($sess->isThere('AuthError')) {
         // 認証エラー情報がある場合は取得する
         $auth_error = $sess->load('AuthError');
         $sess->revoke('AuthError');
     }
     // ヘッダ情報のセット
     $header = $this->getDefaultHeader();
     $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW');
     // テンプレートエンジン関連の処理
     $assign_value = ['header' => $header, 'autherr' => $auth_error];
     $this->risolutoView($assign_value);
 }