"""Rendszeradmin: bejelentkezési tiltások kezelése (2026-10-04, D szelet).

OLDAL:   GET  /rendszeradmin/kitiltasok                 - aktív tiltások + a legutóbbi (valós) tiltások
FELOLDÁS: POST /rendszeradmin/kitiltasok/{id}/felold    - egy aktív tiltás feloldása

JOGOSULTSÁG: kizárólag a valódi rendszeradminisztrátor (security.is_rendszeradminisztrator: Admin
szerepkör ÉS company_id == 1) - egy CÉGES Admin sem oldhat fel tiltást (felhasználói kérés:
"kizárólag neki"). A jogosultságot MINDKÉT végpont külön ellenőrzi, és a login_vedelem.felold()
is (védelmi mélység). A "csak megtekintési" (csak_olvasas) fiók nem oldhat fel.
A feloldás POST (nem GET): a SameSite=Lax cookie miatt egy külső oldalról indított GET-navigációval
állapotot módosítani lehetne (l. a korábbi CSRF-javításokat).

Részletek: docs/LOGIN_VEDELEM.md
"""
from typing import Optional

from fastapi import APIRouter, Request, Depends
from fastapi.responses import HTMLResponse, RedirectResponse, JSONResponse
from sqlalchemy.orm import Session

import models
import login_vedelem
from database import get_db
from security import get_current_user, is_rendszeradminisztrator
from templates_env import templates

router = APIRouter()


@router.get("/rendszeradmin/kitiltasok", response_class=HTMLResponse)
def kitiltasok_oldal(
    request: Request,
    feloldva: Optional[int] = None,
    db: Session = Depends(get_db),
    current_user: models.User = Depends(get_current_user)
):
    if not is_rendszeradminisztrator(current_user):
        return RedirectResponse(url="/valassz-modult", status_code=303)

    aktiv = login_vedelem.aktiv_tiltasok(db)
    korabbiak, ismeretlen_24h = login_vedelem.legutobbi_tiltasok(db)
    return templates.TemplateResponse(
        request=request,
        name="rendszeradmin_kitiltasok.html",
        context={
            "user": current_user,
            "aktiv": aktiv,
            "aktiv_idk": {t.id for t in aktiv},
            "korabbiak": korabbiak,
            "ismeretlen_24h": ismeretlen_24h,
            "feloldva": feloldva,
            "max_email": login_vedelem.MAX_KISERLET_EMAIL,
            "max_ip": login_vedelem.MAX_KISERLET_IP,
            "elso_perc": login_vedelem.ELSO_TILTAS_PERC,
        }
    )


@router.post("/rendszeradmin/kitiltasok/{tiltas_id}/felold")
def kitiltas_feloldasa(
    tiltas_id: int,
    db: Session = Depends(get_db),
    current_user: models.User = Depends(get_current_user)
):
    if not is_rendszeradminisztrator(current_user):
        return JSONResponse(status_code=403, content={"message": "Csak a rendszeradminisztrátor oldhat fel tiltást!"})
    if current_user.csak_olvasas:
        return JSONResponse(status_code=403, content={"message": "Csak megtekintési jogosultsággal rendelkezel, szerkesztés nem lehetséges!"})

    if login_vedelem.felold(db, tiltas_id, current_user):
        return RedirectResponse(url="/rendszeradmin/kitiltasok?feloldva=1", status_code=303)
    # Dupla kattintás / már lejárt vagy már feloldott tiltás: ne mutassunk hamis "feloldva" üzenetet
    return RedirectResponse(url="/rendszeradmin/kitiltasok?feloldva=0", status_code=303)
