/** * 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); $groups = $common->getGroupList('id_and_name'); $param = $this->getParam(); if (is_numeric($param[0])) { // 引数値がセットされていれば、それを元に登録情報を呼び出す $target = \Risoluto\Auth::callProviderMethod('showUserByNo', ['no' => $param[0]]); if (empty($target)) { // 情報が取得できなかった場合も例外をThrow throw new \Exception('Cannot load user data'); } } else { // 指定されていなければ例外をThrowする throw new \Exception('Require args not found'); } // 情報が取得できたら整形してセッションに保存する $getVals['entered'] = ['no' => $target[0]['no'], 'userid' => $target[0]['userid'], 'username' => $target[0]['username'], 'password' => '', 'password_confirm' => '', 'groupno' => $target[0]['groupno'], 'status' => $target[0]['status']]; $sess->store('form', $getVals); // ヘッダ情報のセット $header = $this->getDefaultHeader(); $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW'); // テンプレートエンジン関連の処理 $assign_value = ['header' => $header, 'detail' => $detail, 'groups' => $groups, 'entered' => $getVals, 'csrf_token' => $sess->load('csrf_token')]; $this->risolutoView($assign_value); }
/** * 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; }
/** * 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); }
/** * 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); // ヘッダ情報のセット $header = $this->getDefaultHeader(); $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW'); // テンプレートエンジン関連の処理 $assign_value = ['header' => $header, 'detail' => $detail, 'list' => \Risoluto\Auth::callProviderMethod('showGroupAll')]; $this->risolutoView($assign_value); }
/** * 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; } }
/** * 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 = []; if ($sess->isThere('form')) { $entered = $sess->load('form'); $sess->revoke('form'); } // DBへの登録を行う $options = ['by_who' => $detail['no'] . ':' . $detail['userid'], 'no' => $entered['entered']['no'], 'groupid' => $entered['entered']['groupid'], 'groupname' => $entered['entered']['groupname'], 'status' => $entered['entered']['status']]; $result = \Risoluto\Auth::callProviderMethod('modGroupByNo', $options); // ヘッダ情報のセット $header = $this->getDefaultHeader(); $header = $this->replaceHeader($header, 'robots', 'NOINDEX,NOFOLLOW'); // テンプレートエンジン関連の処理 $assign_value = ['header' => $header, 'detail' => $detail, 'result' => $result]; $this->risolutoView($assign_value); }
/** * checkEnteredSelfData($target, $csrf_token) * * 入力内容のチェック処理を行う * * @access public * * @param array $target チェック対象となるデータが格納された配列 * @param string $csrf_token CSRF対策のためのトークン * @param integer $no ユーザ識別用のNo * * @return array チェック結果 * @throws \Exception CSRFトークンが一致しなかった場合はThrow */ public function checkEnteredSelfData($target, $csrf_token, $no) { // 戻り値を初期化 $retval = []; $retval['entered'] = []; $retval['error']['msg'] = []; $retval['error']['form_crit'] = []; //--- 現在のパスワードのチェック $retval['entered']['current_password'] = htmlentities($target['current_password'], ENT_QUOTES, 'UTF-8'); $current_pw_db = \Risoluto\Auth::callProviderMethod('showUserByNo', ['no' => $no]); if (isset($target['current_password']) and !empty($target['current_password'])) { // フォーマットチェック if (!password_verify($target['current_password'], $current_pw_db[0]['password'])) { // フォーマットにそぐわない場合はエラーにする $retval['error']['msg'][] = 'invalid_current_password'; $retval['error']['form_crit'][] = 'current_password'; } } else { // 未入力の場合はエラーにする $retval['entered']['current_password'] = ''; $retval['error']['msg'][] = 'empty_current_password'; $retval['error']['form_crit'][] = 'current_password'; } //--- 変更後のパスワードのチェック $retval['entered']['password'] = htmlentities($target['password'], ENT_QUOTES, 'UTF-8'); $retval['entered']['password_confirm'] = $retval['entered']['password']; if (isset($target['password']) and !empty($target['password'])) { // フォーマットチェック if ($target['password'] != $target['password_confirm']) { // フォーマットにそぐわない場合はエラーにする $retval['error']['msg'][] = 'invalid_password'; $retval['error']['form_crit'][] = 'password'; } } else { // 未入力の場合はエラーにする $retval['entered']['password'] = ''; $retval['entered']['password_confirm'] = ''; $retval['error']['msg'][] = 'empty_password'; $retval['error']['form_crit'][] = 'password'; } //--- CSRFトークンのチェック if ($target['csrf_token'] != $csrf_token) { throw new \Exception('CSRF Check Error'); } // エラー関係の配列から重複を排除する $retval['error']['msg'] = array_unique($retval['error']['msg']); $retval['error']['form_crit'] = array_unique($retval['error']['form_crit']); // 処理結果を返却する return $retval; }
/** * showGroupAll() * * グループ情報をすべて表示する * * @access private * * @param void * * @return void なし */ private function showGroupAll() { // 表示処理を呼び出す print_r(\Risoluto\Auth::callProviderMethod('showGroupAll')); }