AuthではusernameにユニークなIDを設定する。
以下の例では user_table がテーブル、user_id がユニークなIDである。
$dsn=DATASET_NAME;
$params = array(
"dsn" => $dsn,
"table" => "user_table",
"usernamecol" => "user_id",
"passwordcol" => "pass"
);
$a = new Auth("DB", $params, "loginFunc", false);
今回、user_id にはメールアドレスをセットした。
ユーザの削除を考えたときに、実際にレコードを削除すれば何の問題もない。
しかしユーザ情報そのものはのこしておきたい、「削除フラグ」でその状態を判定したいとなったときに問題が発生する。メールアドレスの重複が発生してしまう。
重複があったまま、Authを適用すると当然ながらどのデータをひっぱってくるのか分からない。
これを解決するために、テーブルのViewを作った。
delete_flg = 1のものが削除データとすると、
user_view を select * from user_table where delete_flg != 1
として作成。Authには
$params = array(
"dsn" => $dsn,
"table" => "user_view",
"usernamecol" => "user_id",
"passwordcol" => "pass"
);
とviewを指定した。