いい加減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は古いというが、枯れているともいえる。