from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from app.database import get_postgres_session from app.deps.org_manager import require_org_manager from app.models import Account from app.schemas import OrgSecuritySettingsRead, OrgSecuritySettingsUpdate from app.services.org_security import read_security_settings, update_security_settings router = APIRouter(prefix="/org", tags=["organization"]) @router.get("/security", response_model=OrgSecuritySettingsRead) async def get_org_security( manager: Account = Depends(require_org_manager), session: AsyncSession = Depends(get_postgres_session), ) -> OrgSecuritySettingsRead: return await read_security_settings(session, manager.company_domain) @router.patch("/security", response_model=OrgSecuritySettingsRead) async def patch_org_security( payload: OrgSecuritySettingsUpdate, manager: Account = Depends(require_org_manager), session: AsyncSession = Depends(get_postgres_session), ) -> OrgSecuritySettingsRead: try: settings = await update_security_settings( session, manager.company_domain, payload, ) await session.commit() return settings except ValueError as error: raise HTTPException( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(error), ) from error