ユーザー API
システムに登録されているユーザーを取得するエンドポイント。権限設定画面で共有相手を選ぶ際に使用します。
認証・レスポンス形式・エラーの扱いは API 定義 を参照。
メソッド
HTTP メソッド
| メソッド | URI | 概要 |
|---|---|---|
| GET | /api/users |
ユーザー一覧取得 |
リソース定義
ユーザースキーマ
| フィールド | データ型 | 備考 |
|---|---|---|
| id | string | UUID |
| name | string | 表示名 |
| string | メールアドレス。システム内で一意 | |
| isAdmin | boolean | 管理者かどうか |
認証要件
x-user-email / x-user-name ヘッダによるユーザー認証が必要です。認証済みユーザーであれば誰でも一覧を取得できます。
ユーザー一覧取得
概要
登録済みユーザーの一覧を取得します。
ユーザーは明示的に登録するのではなく、認証されたリクエストが届いた時点で自動作成 されます。そのため、この一覧には「一度でもシステムにログインしたことがあるユーザー」が並びます。
URI
レスポンス(200 OK)
{
"ok": true,
"data": [
{ "id": "…", "name": "設計 太郎", "email": "taro@example.com", "isAdmin": false },
{ "id": "…", "name": "管理 次郎", "email": "jiro@example.com", "isAdmin": true }
]
}
例外処理
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 認証ヘッダが欠落 | 401 | Unauthorized |
処理フロー
認証ミドルウェアは、リクエストごとに次の処理を行います。
シーケンス図
sequenceDiagram
participant Client
participant Middleware as 認証ミドルウェア
participant DB
Client->>Middleware: リクエスト (x-user-email / x-user-name)
alt ヘッダが欠落
Middleware-->>Client: 401 Unauthorized
else
Middleware->>Middleware: % を含む値は URL デコードを試みる
Middleware->>Middleware: メールアドレスを小文字化
Middleware->>Middleware: SURVEY_ADMIN_EMAILS と照合して管理者判定
Middleware->>DB: ユーザーを検索
alt 存在する
Middleware->>DB: 表示名・管理者フラグに差分があれば更新
else 存在しない
Middleware->>DB: ユーザーを新規作成
end
Middleware->>Middleware: ハンドラへ
end
HTTP ヘッダの文字コード制限
HTTP ヘッダは ISO-8859-1 しか扱えないため、日本語の表示名は frontend 側で encodeURIComponent してから送られます。backend は % を含む値のみデコードを試み、失敗した場合は元の文字列をそのまま使います。
なりすましが可能
現状の認証はヘッダを信頼する方式のため、ヘッダを詐称すれば任意のユーザーとして操作できます。本番展開前の対応課題です(インフラストラクチャ)。