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