/** * 認証を証明する(ログインしてセッションを発行する) * @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; }