コンテンツにスキップ

現在の管理者(Me)取得

メソッド

REST メソッドを採用しています。

HTTP メソッド

GET: 認証済み管理者の取得

命名規則

クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時の URI と JSON 内のノードには snake_case を使用します。

リクエストとレスポンス

ヘッダー

メタ情報はレスポンスボディではなく、HTTP ヘッダーに設定されます。

リクエストヘッダー

  • Authorization: Bearer <access_token>
  • Content-Type: application/json
  • Accept: application/json

レスポンスヘッダー

  • Content-Type: application/json

現在の管理者の取得

URI

/api/v1/auth/me

レスポンス(200 OK)

レスポンスは JSON です。

{
  "admin": {
    "id": 1,
    "cognito_sub": "1111-aaaa-2222-bbbb",
    "role_id": 1,
    "name": "Admin User",
    "created_at": 1640995200000,
    "updated_at": 1640995200000,
    "created_by": "1111-aaaa-2222-bbbb",
    "updated_by": "1111-aaaa-2222-bbbb",
    "deleted_at": null,
    "deleted_by": null,
    "role": {
      "id": 1,
      "name": "admin"
    }
  }
}

認証要件

Amazon Cognito が発行する JSON Web Token(JWT)を用いた認証です。Authorization ヘッダーに有効な Bearer トークンが必要です。

例外処理

例外時のステータスコードは次のとおりです。

説明 ステータスコード ステータス名
トークンが欠落または無効 401 Unauthorized
サーバ内部エラー 500 Internal Server Error

処理フロー

シーケンス図

sequenceDiagram
    participant Client
    participant Middleware as Protected Route Middleware
    participant API as Hono Router
    participant Service as Auth Service
    participant DB as PostgreSQL Database

    Client->>Middleware: GET /api/v1/auth/me
    Middleware->>Middleware: Extract Bearer token
    Middleware->>Middleware: Verify JWT & session

    alt Token Valid
        Middleware-->>API: Auth info (sub, adminId)
        API->>Service: getMe(cognitoSub)
        Service->>DB: Find admin by cognito_sub
        DB-->>Service: Admin record with role
        Service-->>API: Admin with relations
        API-->>Client: 200 OK { admin }
    else Token Invalid
        Middleware-->>Client: 401 Unauthorized
    end

Routes 層

ルーティングはここで行います。protectedRoute ミドルウェアが JWT とセッションを検証してからハンドラが実行されます。ハンドラは認証済みユーザ情報を取り出し、認証サービスに委譲します。

ソース: apps/admin/src/routes/v1/auth.ts

Services 層

ビジネスロジックの説明です。Cognito sub で管理者レコードを検索し、関連するロールを含めて整形して返します。

ソース: apps/admin/src/services/auth.ts

Repositories 層

データベースへのアクセスです。Cognito sub による管理者検索とロールの結合を扱います。

ソース: apps/admin/src/repositories/admin.ts

セキュリティ

  • ハンドラ実行前に protectedRoute ミドルウェアがトークンを検証します
  • verifySession によりセッションの存在を確認します
  • フロントの権限判定に利用できるよう、ロールを含む管理者プロフィールを返します