Files
soleprint/artery/veins/jira/core/auth.py
2025-12-31 08:34:18 -03:00

38 lines
1.1 KiB
Python

"""
Jira credentials authentication for Jira vein.
"""
from dataclasses import dataclass
from fastapi import Header, HTTPException
from .config import settings
@dataclass
class JiraCredentials:
email: str
token: str
async def get_jira_credentials(
x_jira_email: str | None = Header(None),
x_jira_token: str | None = Header(None),
) -> JiraCredentials:
"""
Dependency that extracts Jira credentials from headers or falls back to config.
- Headers provided → per-request credentials (web demo)
- No headers → use .env credentials (API/standalone)
"""
# Use headers if provided (check for non-empty strings)
if x_jira_email and x_jira_token and x_jira_email.strip() and x_jira_token.strip():
return JiraCredentials(email=x_jira_email.strip(), token=x_jira_token.strip())
# Fall back to config
if settings.jira_email and settings.jira_api_token:
return JiraCredentials(email=settings.jira_email, token=settings.jira_api_token)
raise HTTPException(
status_code=401,
detail="Missing credentials: provide X-Jira-Email and X-Jira-Token headers, or configure in .env",
)