73 lines
No EOL
2.4 KiB
Python
73 lines
No EOL
2.4 KiB
Python
from fastapi import APIRouter, HTTPException, Depends, Body
|
|
from typing import List, Dict, Any
|
|
from fastapi import status
|
|
|
|
# Import auth module
|
|
from auth import get_current_active_user, get_user_context
|
|
|
|
# Import interfaces
|
|
from modules.gateway_interface import get_gateway_interface
|
|
|
|
# Router für Mandanten-Endpunkte erstellen
|
|
router = APIRouter(
|
|
prefix="/api/mandates",
|
|
tags=["Mandates"],
|
|
responses={404: {"description": "Not found"}}
|
|
)
|
|
|
|
@router.get("", response_model=List[Dict[str, Any]])
|
|
async def get_mandates(current_user: Dict[str, Any] = Depends(get_current_active_user)):
|
|
"""Alle verfügbaren Mandanten abrufen (nur für Admin-Benutzer)"""
|
|
mandate_id, user_id = await get_user_context(current_user)
|
|
|
|
# Gateway-Interface mit Benutzerkontext initialisieren
|
|
gateway = get_gateway_interface(mandate_id, user_id)
|
|
|
|
# TODO: Hier sollte eine Berechtigungsprüfung erfolgen
|
|
|
|
return gateway.get_all_mandates()
|
|
|
|
|
|
@router.post("", response_model=Dict[str, Any])
|
|
async def create_mandate(
|
|
mandate: Dict[str, Any] = Body(...),
|
|
current_user: Dict[str, Any] = Depends(get_current_active_user)
|
|
):
|
|
"""Einen neuen Mandanten erstellen (nur für Admin-Benutzer)"""
|
|
mandate_id, user_id = await get_user_context(current_user)
|
|
|
|
# Gateway-Interface mit Benutzerkontext initialisieren
|
|
gateway = get_gateway_interface(mandate_id, user_id)
|
|
|
|
# TODO: Hier sollte eine Berechtigungsprüfung erfolgen
|
|
|
|
new_mandate = gateway.create_mandate(
|
|
name=mandate.get("name", "Neuer Mandant"),
|
|
language=mandate.get("language", "de")
|
|
)
|
|
|
|
return new_mandate
|
|
|
|
|
|
@router.get("/{mandate_id}", response_model=Dict[str, Any])
|
|
async def get_mandate(
|
|
mandate_id: int,
|
|
current_user: Dict[str, Any] = Depends(get_current_active_user)
|
|
):
|
|
"""Einen bestimmten Mandanten abrufen"""
|
|
user_mandate_id, user_id = await get_user_context(current_user)
|
|
|
|
# Gateway-Interface mit Benutzerkontext initialisieren
|
|
gateway = get_gateway_interface(user_mandate_id, user_id)
|
|
|
|
# TODO: Hier sollte eine Berechtigungsprüfung erfolgen
|
|
# Nur Admins oder Benutzer des gleichen Mandanten dürfen den Mandanten sehen
|
|
|
|
mandate = gateway.get_mandate(mandate_id)
|
|
if not mandate:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail=f"Mandant mit ID {mandate_id} nicht gefunden"
|
|
)
|
|
|
|
return mandate |