from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from app.core.config import settings
from app.db import database as db

router = APIRouter(tags=["Auth"])

class LoginRequest(BaseModel):
    username: str
    password: str

def _parse_env_users():
    users = {}
    for entry in settings.USERS.split(","):
        parts = entry.strip().split(":")
        if len(parts) == 3:
            username, password, role = parts
            users[username] = {"password": password, "role": role}
    return users

@router.post("/login")
async def login(req: LoginRequest):
    # 1. Try the database first (users created via the admin panel)
    user = db.get_user(req.username)

    if user:
        # 2. Found in DB — check password
        if user["password"] != req.password:
            raise HTTPException(status_code=403, detail="Invalid credentials.")
        return {"role": user["role"]}

    # 3. Not in DB — fall back to .env users
    env_users = _parse_env_users()
    env_user = env_users.get(req.username)
    if not env_user or env_user["password"] != req.password:
        raise HTTPException(status_code=403, detail="Invalid credentials.")
    return {"role": env_user["role"]}
