前の記事が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 にアクセス出来て管理者が追加できるようになります。追加した管理者でログインできたらめでたしめでたし。
(※ 最初の管理者を追加したらこのコードは削除してください。)

とりあえず今回は終了。後は何を書こうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です