50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.orm import Session
|
|
from typing import List
|
|
|
|
from app.config.database import get_db
|
|
from app.middleware.auth_middleware import get_current_user, require_access, User
|
|
from app.schemas.auth.tenant_module_schema import TenantModuleCreate, TenantModuleUpdate, TenantModuleResponse
|
|
from app.controllers.auth.tenant_module_controller import TenantModuleController
|
|
|
|
router = APIRouter()
|
|
|
|
@router.get("/{tenant_id}/modules", response_model=List[TenantModuleResponse])
|
|
def list_tenant_modules(
|
|
tenant_id: str,
|
|
current_user: User = Depends(get_current_user),
|
|
_: bool = Depends(require_access("tenants.manage")),
|
|
db: Session = Depends(get_db)
|
|
):
|
|
return TenantModuleController.list_tenant_modules(db, tenant_id)
|
|
|
|
@router.post("/{tenant_id}/modules", response_model=TenantModuleResponse)
|
|
def assign_module_to_tenant(
|
|
tenant_id: str,
|
|
assignment_data: TenantModuleCreate,
|
|
current_user: User = Depends(get_current_user),
|
|
_: bool = Depends(require_access("tenants.manage")),
|
|
db: Session = Depends(get_db)
|
|
):
|
|
return TenantModuleController.assign_module(db, tenant_id, assignment_data)
|
|
|
|
@router.put("/{tenant_id}/modules/{tenant_module_id}", response_model=TenantModuleResponse)
|
|
def update_tenant_module(
|
|
tenant_id: str,
|
|
tenant_module_id: str,
|
|
update_data: TenantModuleUpdate,
|
|
current_user: User = Depends(get_current_user),
|
|
_: bool = Depends(require_access("tenants.manage")),
|
|
db: Session = Depends(get_db)
|
|
):
|
|
return TenantModuleController.update_assignment(db, tenant_id, tenant_module_id, update_data)
|
|
|
|
@router.delete("/{tenant_id}/modules/{tenant_module_id}")
|
|
def remove_module_from_tenant(
|
|
tenant_id: str,
|
|
tenant_module_id: str,
|
|
current_user: User = Depends(get_current_user),
|
|
_: bool = Depends(require_access("tenants.manage")),
|
|
db: Session = Depends(get_db)
|
|
):
|
|
return TenantModuleController.remove_assignment(db, tenant_id, tenant_module_id) |