Laravel9でJWT認証のインストールエラー

# 概要
Laravel9の環境にJWT認証を導入しょうとしたらエラーが発生したのでメモしておく。

```bash
$ composer require tymon/jwt-auth
  ...
  Problem 1
    - Root composer.json requires tymon/jwt-auth ^0.5.12 -> satisfiable by tymon/jwt-auth[0.5.12].
    - tymon/jwt-auth 0.5.12 requires illuminate/support ~5.0 -> found illuminate/support[v5.0.0, ..., 5.8.x-dev] but these were not loaded, likely because it conflicts with another require.
  ...
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
```
どうやら「illuminate/support」のバージョンが条件に合わないって言われてそう...
```
tymon/jwt-auth 0.5.12 requires illuminate/support ~5.0 ...
```

とりあえず、現在インストールされている「illuminate/support」を確認してみる。
```:composer.lock
"require": {
    ...
    "illuminate/support": "^6|^7|^8|^9",
    ...
},
```
ここが問題っぽいですね。

## tymon/jwt-authを試す
Google先生に解決策を聞いてみると下記サイトがヒットする。

* [composer require -w tymon/jwt-authでエラー](https://qiita.com/kuroro_ru/items/58ee99b48c16f522c73b)

試してみるが...
```bash
$ composer require tymon/jwt-auth --ignore-platform-reqs
  ...
  Problem 1
    - tymon/jwt-auth[dev-develop, 1.0.1, ..., 1.0.2] require illuminate/auth ^5.2|^6|^7|^8 -> found illuminate/auth[v5.2.0, ..., 5.8.x-dev, v6.0.0, ..., 6.x-dev, v7.0.0, ..., 7.x-dev, v8.0.0, ..., 8.x-dev] but these were not loaded, likely because it conflicts with another require.
  ...
You can also try re-running composer require with an explicit version constraint, 
e.g. "composer require tymon/jwt-auth:*" to figure out if any version is installable, 
or "composer require tymon/jwt-auth:^2.1" if you know which you need.
```
駄目なようです。

コメントを見てみると...「tymon/jwt-auth:^2.1」との記載があるので試してみる。
```bash
$ composer require tymon/jwt-auth:^2.1
  ...
  Problem 1
    - Root composer.json requires tymon/jwt-auth ^2.1, found tymon/jwt-auth[dev-dependabot/composer/yoast/phpunit-polyfills-tw-1.0.0, dev-dependabot/add-v2-config-file, dev-master, dev-develop, 0.1.0, ..., 0.5.12, 1.0.0-alpha1, ..., 1.0.x-dev (alias of dev-develop), 2.0.x-dev] but it does not match the constraint.
```
これも駄目なようです。

## tomfordrumm/jwt-authを試す
他に下記の記事も見かけました。

* [Problems installing tymon jwt auth in Laravel 9](https://stackoverflow.com/questions/71077684/problems-installing-tymon-jwt-auth-in-laravel-9)

ライブラリが「tymon」から「tomfordrumm」に変わっているがこれを試してみる。
```bash
$ composer require tomfordrumm/jwt-auth:dev-develop
  ...
  - Installing tomfordrumm/jwt-auth (dev-develop 63522f2): Extracting archive
32 package suggestions were added by new dependencies, use `composer suggest` to see details.
```

「dev-develop」バージョンなら、インストールが成功するようです。


## Packagistで確認する
下記の２つの開発バージョンがありそう。
* [dev-develop](https://packagist.org/packages/tomfordrumm/jwt-auth#dev-develop)
 ※ requires → php: ^7.2|^7.4|^8.0
* [2.0.x-dev](https://packagist.org/packages/tomfordrumm/jwt-auth#2.0.x-dev)
 ※ requires → php: ^7.4

ただし、「2.0.x-dev」は、現時点では **PHP7.4まで** しか対応してなさそう...
```bash
 % docker-compose exec php composer require tomfordrumm/jwt-auth:2.0.x-dev
  ...
  Problem 1
    - Root composer.json requires tomfordrumm/jwt-auth 2.0.x-dev -> satisfiable by tomfordrumm/jwt-auth[2.0.x-dev].
    - tomfordrumm/jwt-auth 2.0.x-dev requires php ^7.4 -> your php version (8.1.3) does not satisfy that requirement.
```

試している環境は、PHP8.1.3のため、この環境にはインストールできない。
```bash
$ php -v
PHP 8.1.3 (cli) ...
```

ということで「dev-develop」をとりあえず使ってみる。

## Laravel設定
下記ファイルを修正してプロバイダー登録する。
```php:config/app.php
'providers' => [
    ...
    Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
]  
```
下記コマンドで設定ファイル(config/jwt.php)を追加する。
```bash
$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" 

Copied File [/vendor/tomfordrumm/jwt-auth/config/config.php] To [/config/jwt.php]
Publishing complete.
```
下記コマンドで.envファイルにJWTのシークレットキーを自動作成する。
```bash
$ php artisan jwt:secret

jwt-auth secret [*****************************] set successfully.
```
## まとめ
**「dev-develop」バージョンを指定したらインストールは可能** なようです。
ひとまずこれで開発作業続けてみます。
## 参考サイト 
* [jwt-auth: Quick start](https://jwt-auth.readthedocs.io/en/develop/quick-start/)
* [Problems installing tymon jwt auth in Laravel 9](https://stackoverflow.com/questions/71077684/problems-installing-tymon-jwt-auth-in-laravel-9)
* [Multiple API Authentication using JWT in Laravel 9](https://tutspack.com/multiple-api-authentication-using-jwt-in-laravel-9/)

以上