php7・PDOでも認証ライブラリでSentinelではなくPEAR::Authを使った

いい加減PEARは時代遅れ?ということで、昨今のPHPの認証ライブラリを探してみた。
「Sentinel」がイチオシらしい。ということで、DLして使おうとしたのだが。
なにこれ、ユーザテーブル決まってるの?rollテーブルやら何やら、7つもテーブル要るの?

  • ユーザは複数グループに所属可能。
  • 複数の要素でログイン可能(email、ユーザー名、etc)
  • リマインダーメール機能
  • 権限をユーザとグループそれぞれに持たせられ、それらの重ね掛けも可能。
  • ログイン失敗時に規定回数でアカウントをロックさせられる

  (→ユーザー認証パッケージSentinelを複数サブドメインで使用する
だそうですが、今回使いたいのは単純に

  • メールアドレス/idのログイン

だけ。

一般会員向けサイトと、別に管理系サイトのスタッフ用ログインが必要。こちらもrollもリマインダもいらない。シンプルにログイン認証だけできればいい。
Sentinelは、7×2=14テーブルも必要になる?ユーザテーブルとスタッフテーブルさえあればいいのに。

ということで、オーバースペックなSentinelは止めて、従来通りPEAR::Authを使うことにした。

・PHP7 では、エラーが出るのでつぶす必要あり。「& new」とか、コンストラクタとか。
・PDO用のContainerはデフォルトではありません。↓のソースを使わせていただました。
PEAR::AuthにPDOのContainerを追加してみる(検証中)
※認証部分のみ。会員追加等々、更新系は未使用。

    $params = array(
	    'dsn' => 'pgsql:host=localhost dbname=YourDB port=xxxx',
	    'table' => 'tbl_member',
	    'usernamecol' => 'email',
	    'passwordcol' => 'pass',
	    'auto_quote' => false,
	    'db_fields' => '*',
	    'db_where' => 'del_flg = false',
	    'cryptType'=> 'crypt'
    );
    // Authクラスをインスタンス化
    $auth = new Auth('PDO', $params, array($this, 'loginFunc'));

でアクセス。
postgreSQLで、日本語テーブル名を使っていたため「'auto_quote' => false」指定。

PEARは古いというが、枯れているともいえる。