Example #1
0
 /**
  * 認証を証明する(ログインしてセッションを発行する)
  * @param string 認証ID
  * @param string 認証パスワード
  * @param string DB接続情報
  * @param string 強制再認証
  */
 public static function certify($argID = NULL, $argPass = NULL, $argDSN = NULL, $argExecut = FALSE)
 {
     debug('start certify auth');
     if (TRUE === $argExecut || FALSE === self::isCertification($argDSN)) {
         // ログインセッションが無かった場合に処理を実行
         $id = $argID;
         $pass = $argPass;
         if (NULL === $id) {
             if (TRUE === class_exists('Flow', FALSE) && isset(Flow::$params) && isset(Flow::$params['post']) && TRUE === is_array(Flow::$params['post']) && isset(Flow::$params['post'][self::$authIDField])) {
                 // Flowに格納されているPOSTパラメータを自動で使う
                 $id = Flow::$params['post'][self::$authIDField];
             }
             if (isset($_REQUEST) && isset($_REQUEST[self::$authIDField])) {
                 // リクエストパラメータから直接受け取る
                 $id = $_REQUEST[self::$authIDField];
             }
         }
         if (NULL === $pass) {
             if (TRUE === class_exists('Flow', FALSE) && isset(Flow::$params) && isset(Flow::$params['post']) && TRUE === is_array(Flow::$params['post']) && isset(Flow::$params['post'][self::$authPassField])) {
                 // Flowに格納されているPOSTパラメータを自動で使う
                 $pass = Flow::$params['post'][self::$authPassField];
             }
             if (isset($_REQUEST) && isset($_REQUEST[self::$authPassField])) {
                 // リクエストパラメータから直接受け取る
                 $pass = $_REQUEST[self::$authPassField];
             }
         }
         // ユーザーモデルを取得
         $User = self::getRegisteredUser($id, $pass);
         if (FALSE === $User) {
             // 証明失敗
             return FALSE;
         }
         // セッションを発行
         Session::start();
         debug('self::$authPKeyField=' . self::$authPKeyField);
         $sessionIdentifier = self::getEncryptedAuthIdentifier($User->{self::$authPKeyField});
         debug('new identifier=' . $sessionIdentifier);
         Session::sessionID($sessionIdentifier);
         // ログインした固有識別子をSessionに保存して、Cookieの発行を行う
         Session::set('identifier', $User->{self::$authPKeyField});
     }
     debug('end certify auth');
     return TRUE;
 }