An open API service indexing awesome lists of open source software.

https://github.com/umanari145/laravel_pgsql


https://github.com/umanari145/laravel_pgsql

authentication dependency-injection jwt laravel

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

#laravel_pgsqlのサンプル

## postgres基礎

### ログイン
```
psql -U postgres(ユーザー) -d postgres(データベース)

\l DB一覧
\c DB名 DB選択(use DB)
\d テーブル一覧
\d table名 テーブル定義
\du MySQLでいうユーザー一覧
\x select文の結果を縦列で表示。(select文ごとにつけるのではなく、一度入れるとずっと継続。切る場合はもう一度¥x)
\q 終了
```

```
pg_dump -Ft -U データベース名 > データベース圧縮ファイル(tar.gz)
pg_restore -c - postgres -d postgres < データベース圧縮ファイル(tar.gz)
```

### 認証ロジックの作成

認証に関わる自動のルーティングやControllerを自動作成
```
php artisan make:auth
```
その後、下記コマンドでルーティングを確認できる。
```
php artisan route;list
```

#### token認証
usersにapi_tokenテーブル追加後
(uml/normaltoken.pu参照)
```
curl -H 'Accept: application/json' \
-H 'Authorization:Bearer 保存されたトークン' \
(URL)

http://localhost:8080/api/user?api_token=トークンの文字列

````

### DIに関する考察
参考URL
https://qiita.com/harunbu/items/079ea728d2c9cf4f44d5
https://www.geekfeed.co.jp/geekblog/laravel-service-providers

Laravel本体に実際にServiceを組み込むファイル
App\Providers\DiceServiceProvider.php

Providerの設定
App\config\app.php

実際に窓口になるinterface
App\RollableDice

実体となるClass(内部の記述)
App\Dice
App\LoadDice

## faker ダミーデータ作成

```
php artisan db:seed
```

## jwt認証に関して

https://blog.proglearn.com/2020/04/21/%E3%80%902020%E5%B9%B44%E6%9C%88-%E6%99%82%E7%82%B9%E3%80%91laravel%E3%81%A7jwt%E8%AA%8D%E8%A8%BC%EF%BC%81-jwt-auth-%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86/

https://qiita.com/aminevsky/items/9f45e0ffb5b14c3b5b50#jwt%E8%AA%8D%E8%A8%BC

```
#ライブラリインストール
composer require tymon/jwt-auth

#プロバイダ作成
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

#秘密鍵生成
php artisan jwt:secret

#.envに下記のような文字列が測れる
JWT_SECRET=XXXXXXXXXXXXXXXXXXX

#jwt認証用のコントローラー
JwtAuthController.php

uml/jwt.pu参照 *正確なプログラムは異なるが基本的な考え方は同一

#access_token取得
curl -X POST 'http://localhost:8080/api/auth/login' \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-d ' {
"email": "DBに入っているユーザーのemail",
"password": "testtest"
}'

#下記のようなレスポンスが帰って来ればOK
{"access_token":"XXXXXXXXXXXXXXXXXXX","token_type":"bearer","expires_in":3600}
#失敗時
{"error":"Unauthorized"}

#api_tokenをBearer XXXXの中に入れる
curl -X POST 'http://localhost:8080/api/auth/me' \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'Authorization: Bearer XXXX'

#下記のようにユーザー情報が帰って来ればOK!

{
"id":1,
"name":"XXXXXXXX",
"email":"XXXXXXX",
"created_at":"2020-12-31 07:45:53",
"updated_at":"2020-12-31 07:45:53",
"api_token":null
}

#NGの場合、下記のようなメッセージが
{"message":"Unauthenticated."}

````