ぽぴなび

知って感動した技術情報・生活情報や買ってよかったものの雑記です。

【NestJS x Auth0】NestJSで作成したAPIにAuth0の認証/認可を追加する 〜準備編〜

NestJSで作成したAPIにAuth0の認証/認可を追加し、認証状態やロールによってAPIの実行可否を制御できるようにしていきます。
この記事では、準備段階としてNestJS側の実装をします。
また、前提としてUdemy講座でNestJSの基本を知った上で進めています。

以下の講座は、NestJSの知識ほぼゼロの状態でもかなりわかりやすく、APIの実装から認証機能の追加、DBの操作やユニットテストの書き方まで網羅されているため非常におすすめです。

click.linksynergy.com

最終的なゴールイメージ

  • CRUDAPIがある:
    • POST /items
    • GET /items
    • GET /items/{:itemId}
    • PATCH /items/{:itemId}
    • DELETE /items/{:itemId}
  • 2種類のロールがある:
    • 管理者: CRUDすべての操作を実行可能
    • 利用者: CRUが実行可能
  • 認証していない場合、Readのみ実行可能とする。

たぶんやらないこと

  • APIの中身の実装は凝らない。
    • 実際にデータを作成/削除したり、DBに保存したりはしない予定。

1. NestJSのプロジェクトを作成する

Nest CLIを使ってNestJSのプロジェクトを作成します。

# npx nest new {プロジェクト名}
npx nest new nest_with_auth0

プロジェクトの作成が完了したら、ディレクトリを移動しておきます。

cd nest_with_auth0

2. items リソースを作成する

Nest CLIを使って items リソースを作成します。
gはgenerate、resはresourceのエイリアスです。

# npx nest generate resource {リソース名}
npx nest g res items

src/items配下に必要なファイルが生成されます。

動作確認

念の為動作確認してみます。
以下のコマンドでサーバーを起動後、ブラウザなどでhttp://localhost:3000/itemsにアクセスしてみます。

# Watchモードで起動
npm run start:dev

This action returns all itemsと表示されていれば正しく動いてそうです。
これで、APIの基礎となる部分は完成です。

つづく・・・