freeleaps-authentication/webapi/routes/permission/create_or_update_permission.py

46 lines
1.4 KiB
Python
Raw Normal View History

2025-10-30 03:26:05 +00:00
from datetime import datetime
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from typing import Optional
from backend.services.permission.permission_service import PermissionService
from common.token.token_manager import TokenManager
router = APIRouter()
token_manager = TokenManager()
permission_service = PermissionService()
class CreateOrUpdatePermissionRequest(BaseModel):
permission_key: str
permission_name: str
custom_permission_id: Optional[str] = None
description: Optional[str] = None
class PermissionResponse(BaseModel):
id: str
permission_key: str
permission_name: str
description: Optional[str] = None
created_at: datetime
updated_at: datetime
@router.post(
"/create-or-update",
response_model=PermissionResponse,
operation_id="create-or-update-permission",
summary="Create or Update Permission",
description="Create or update a permission by id."
)
async def create_or_update_permission(
req: CreateOrUpdatePermissionRequest,
#_: bool = Depends(token_manager.has_all_permissions([DefaultPermissionEnum.CHANGE_PERMISSIONS.value.permission_key]))
) -> PermissionResponse:
doc = await permission_service.create_or_update_permission(req.permission_key, req.permission_name, req.custom_permission_id,
req.description)
return PermissionResponse(**doc.model_dump())