認証システム¶
概要¶
Knowledge Yard V2 では JWT ベースの認証システムを実装しています。
ユーザーロール¶
| ロール | 権限 |
|---|---|
| admin | 全機能 + ユーザー管理 |
| developer | 全機能(開発者向け機能含む) |
| user | 基本機能のみ |
ロール別UI表示¶
| 機能 | admin | developer | user |
|---|---|---|---|
| チャット | ✅ | ✅ | ✅ |
| PDF参照 | ✅ | ✅ | ✅ |
| 履歴機能 | ✅ | ✅ | ✅ |
| ダークモード | ✅ | ✅ | ✅ |
| 詳細回答トグル | ✅ | ✅ | ❌ |
| 回答設定 | ✅ | ✅ | ❌ |
| ユーザー管理 | ✅ | ❌ | ❌ |
認証フロー¶
ログイン¶
POST /api/auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}
レスポンス:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"user_id": "uuid",
"email": "user@example.com",
"name": "ユーザー名",
"role": "user"
}
}
トークン検証¶
GET /api/auth/me
Authorization: Bearer <token>
ログアウト¶
POST /api/auth/logout
Authorization: Bearer <token>
データストレージ¶
ユーザーデータは Azure Table Storage に保存されます。
| テーブル | 用途 |
|---|---|
users |
ユーザー情報 |
ユーザーエンティティ¶
| フィールド | 型 | 説明 |
|---|---|---|
PartitionKey |
string | 固定値 "user" |
RowKey |
string | user_id (UUID) |
email |
string | メールアドレス(ユニーク) |
password_hash |
string | bcryptハッシュ |
name |
string | 表示名 |
role |
string | admin / developer / user |
created_at |
string | ISO8601形式 |
updated_at |
string | ISO8601形式 |
管理者ユーザーの作成¶
初期管理者ユーザーはスクリプトで作成します:
cd /path/to/KnowledgeYardV2
source .venv/bin/activate
python scripts/create_admin_user.py
対話形式で以下を入力: - メールアドレス - パスワード - 表示名
セキュリティ¶
- パスワードは bcrypt でハッシュ化
- JWT トークンの有効期限: 24時間
- トークンは
localStorageに保存 - HTTPS通信必須(本番環境)
関連ファイル¶
| ファイル | 用途 |
|---|---|
app/api/routes/auth.py |
認証APIエンドポイント |
app/api/services/auth.py |
認証ロジック |
app/api/services/table_storage.py |
Azure Table Storage操作 |
app/web/src/components/AuthContext.tsx |
フロントエンド認証コンテキスト |
app/web/src/lib/auth.ts |
認証ヘルパー関数 |
app/web/src/components/LoginPage.tsx |
ログインページ |
app/web/src/components/AdminPage.tsx |
ユーザー管理ページ |