Fix API compatibility and add user/role/permission and asset import/export

This commit is contained in:
2026-01-25 23:36:23 +08:00
commit 501d11e14e
371 changed files with 68853 additions and 0 deletions

View File

@@ -0,0 +1,60 @@
"""
Permission API routes.
"""
from typing import Dict, List
from fastapi import APIRouter, Depends
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.deps import get_db, get_current_user
from app.core.response import success_response
from app.models.user import Permission
router = APIRouter()
def _permission_to_dict(permission: Permission) -> Dict:
return {
"id": permission.id,
"permission_name": permission.permission_name,
"permission_code": permission.permission_code,
"module": permission.module,
"module_name": permission.module,
"resource": permission.resource,
"action": permission.action,
"description": permission.description,
"created_at": permission.created_at,
}
@router.get("/tree")
async def permission_tree(
db: AsyncSession = Depends(get_db),
current_user=Depends(get_current_user),
):
result = await db.execute(select(Permission).order_by(Permission.module, Permission.id))
permissions = list(result.scalars().all())
module_map: Dict[str, List[Permission]] = {}
module_order: List[str] = []
for permission in permissions:
module = permission.module or "misc"
if module not in module_map:
module_map[module] = []
module_order.append(module)
module_map[module].append(permission)
tree = []
for idx, module in enumerate(module_order, start=1):
children = [_permission_to_dict(p) for p in module_map[module]]
tree.append(
{
"id": -idx,
"permission_name": module,
"module_name": module,
"disabled": True,
"children": children,
}
)
return success_response(data=tree)