39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
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
|