前の記事が2年前だった、、、。
リアルにCakePHP3のサイトをいくつか(3つかな)作っていてこちらに手が回りませんでした。
整理のためにCakePHPのバージョンを3.8.2アップして続きを書きます。
認証メソッドを追加する
先に認証コンポーネントで以下の設定をしました。
認証時にAdminテーブルを検索する時に findAuth メソッドを使用する。
このための実装は次のようになります。Model\Entity\Admin.php追加します。
public function findAuth(\Cake\ORM\Query $query, array $options)
{
$query
->select(['id', 'admin_cd', 'admin_name','password','role'])
->where(['Admin.delete_flg' => 0
]);
return $query;
}
パスワードはハッシュ化してから保存する必要があります。
対象は Model\Entity\Admin.php で定義の部分に次を追加します。
use Cake\Auth\DefaultPasswordHasher;
ハッシュ化部分には次を追加します。
protected function _setPassword($value)
{
if (strlen($value)) {
$hasher = new DefaultPasswordHasher();
return $hasher->hash($value);
}
}
これで準備は完了していますが、/admin/admin にアクセスするとはじかれちゃいますよ。はて、管理者はどうやって登録するんだ?
最初の管理者を登録するために、 Controller\Admin\AdminController.php に次のコードを追加します。
public function beforeFilter(\Cake\Event\Event $event) {
parent::beforeFilter($event);
$this->Auth->allow('add');
}
これで /admin/admin/add にアクセス出来て管理者が追加できるようになります。追加した管理者でログインできたらめでたしめでたし。
(※ 最初の管理者を追加したらこのコードは削除してください。)
とりあえず今回は終了。後は何を書こうか。