【CakePHP4】Authenticationプラグインでハマったこと②

【CakePHP4】Authenticationプラグインでハマったこと② CakePHP4

前回に引き続き、CakePHP4の”Authenticationプラグイン”を使用したログイン周りの話題。

前回の記事末尾で軽く触れたが、usersテーブルとは別テーブル(ここではstaffsとする)を使用したかった経緯があり、そういったケースではどのように記述すれば期待するテーブルを参照しに行ってくれるようになるか、ハマっていた。

debug: Authentication\Authenticator\Result::__set_state(array(
'_status' => 'FAILURE_CREDENTIALS_MISSING',
'_data' => NULL,
'_errors' =>
array (
0 => 'Login credentials not found',
),
error: [Cake\ORM\Exception\MissingTableClassException] Table class for alias `Users` could not be found. in /var/www/html/vendor/cakephp/cakephp/src/ORM/Locator/TableLocator.php on line 243

どうやらデフォルトでusersテーブルを参照しているため、明示的に指定する必要があることがわかった。

◼️Qiita_CakePHP4でログイン情報のテーブルを users テーブル以外に変更する
https://qiita.com/binthec/items/b9586185a91ff23cd414

上記記事を参考に、src/Application.php内に”resolver”を追加。

$authenticationService->loadIdentifier('Authentication.Password', [
            'resolver' => [
                'className' => 'Authentication.Orm',
                'userModel' => 'Staffs'
            ],
            'fields' => [
                'username' => 'email',
                'password' => 'password',
            ]
        ]);

無事にstaffsテーブルを参照しに行くようになった。先達に感謝。