Auth0という認証サービスを利用したサービスが増えていますね。
ログインなどを楽にしてくれます。
が、テストのたびにログインを行うのも、Auth0に合わせてテストを書くのも面倒です。
なので「Auth0」でログインしたことにしてしまう方法をご紹介します。
ちなみに若干の制限はありますが、Auth0は無料でも使えます。
個人のプロジェクトでログインを作るのが面倒!という方がいれば使ってみてもいいかもですね!
メールアドレスのログインはもちろん、TwitterやFacebookなどの認証も一瞬で作れます。
Auth0から返ってくる値
[
'sub' => 'auth0|xx|yyyy',
'nickname' => 'nickname',
'name' => 'user name',
'picture' => 'https://example.com/picture.png',
'updated_at' => '2020-03-13T08:10:37.855Z',
'email' => 'example@example.com',
];
のようなデータが返ります。
Auth0でログインしたことにする
Laravelだと以下のようにします
public function setUp(): void
{
parent::setUp();
// ダミーユーザデータ
$dummyAuth0User = [
'sub' => 'auth0|xxxx|xxxxxxxx',
'nickname' => 'nickname',
'name' => 'user name',
'picture' => 'https://example.com/picture.png',
'updated_at' => '2020-03-13T08:10:37.855Z',
'email' => 'example@example.com',
];
// Auth0でログインしたことにする
$auth0 = new Auth0JWTUser((object)$dummyAuth0User);
Auth::setUser($auth0);
}
Auth0JWTUser
でLaravel用のログイン情報を持ったインスタンスを生成し、
Auth::setUser
でログイン情報をセッションなどに書き込みます。
これでテストのたびにAuth0のAPIを叩かずに、疑似ログイン状態でテストを行えます。
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。