前回に引き続き、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テーブルを参照しに行くようになった。先達に感謝。

