ChieBukuro / auth_manager.py
leave-everything's picture
Migrated from another account
cd2975a verified
"""
認証管理モジュール
API認証とUI認証を統一管理
"""
import os
from typing import Optional
class AuthManager:
"""認証管理クラス"""
def __init__(self):
"""初期化"""
self.api_key = os.getenv("API_KEY", "")
def is_configured(self) -> bool:
"""認証が設定されているか確認"""
return bool(self.api_key)
def validate_api_key(self, provided_key: Optional[str]) -> bool:
"""
APIキーの検証
Args:
provided_key: 提供されたAPIキー
Returns:
検証結果
"""
# 認証が設定されていない場合は常に成功
if not self.is_configured():
return True
# キーが提供されていない場合は失敗
if not provided_key:
return False
# キーの一致を確認
return provided_key == self.api_key
def validate_ui_key(self, provided_key: str) -> bool:
"""
UI用のAPIキー検証
Args:
provided_key: UIから提供されたAPIキー
Returns:
検証結果
"""
# 認証が設定されていない場合は常に成功
if not self.is_configured():
return True
# 空文字の場合は失敗
if not provided_key:
return False
# キーの一致を確認
return provided_key == self.api_key
def get_masked_key(self) -> str:
"""
マスクされたAPIキーを取得(デバッグ用)
Returns:
マスクされたキー文字列
"""
if not self.api_key:
return "Not configured"
if len(self.api_key) <= 8:
return "****"
# 最初の2文字と最後の2文字を表示
return f"{self.api_key[:2]}{'*' * (len(self.api_key) - 4)}{self.api_key[-2:]}"