user_local_model_permission_router.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. """
  2. 用户本地模型权限路由
  3. 处理用户对本地模型的权限管理接口
  4. """
  5. from typing import List, Dict
  6. from fastapi import APIRouter, Depends, HTTPException, status
  7. from sqlalchemy.orm import Session
  8. from app.database import get_db
  9. from app.services.user_local_model_permission_service import UserLocalModelPermissionService
  10. from app.dependencies.admin_auth import get_current_admin
  11. from app.schemas.user_local_model_permission import (
  12. UserLocalModelPermissionResponse,
  13. UpdateUserLocalModelPermissionRequest,
  14. UpdateUserAllLocalModelPermissionsRequest
  15. )
  16. router = APIRouter(prefix="/api/admin/users", tags=["用户本地模型权限"])
  17. @router.get("/{user_id}/local-model-permissions", response_model=List[UserLocalModelPermissionResponse])
  18. async def get_user_local_model_permissions(
  19. user_id: str,
  20. db: Session = Depends(get_db),
  21. current_admin = Depends(get_current_admin)
  22. ):
  23. """
  24. 获取用户的本地模型权限列表
  25. """
  26. service = UserLocalModelPermissionService(db)
  27. permissions = service.get_user_model_permissions(user_id)
  28. return permissions
  29. @router.put("/{user_id}/local-model-permissions/{model_id}")
  30. async def update_user_local_model_permission(
  31. user_id: str,
  32. model_id: int,
  33. request: UpdateUserLocalModelPermissionRequest,
  34. db: Session = Depends(get_db),
  35. current_admin = Depends(get_current_admin)
  36. ):
  37. """
  38. 更新用户对特定本地模型的权限
  39. """
  40. service = UserLocalModelPermissionService(db)
  41. success = await service.update_user_model_permission(
  42. user_id=user_id,
  43. model_id=model_id,
  44. has_access=request.has_access
  45. )
  46. if not success:
  47. raise HTTPException(
  48. status_code=status.HTTP_400_BAD_REQUEST,
  49. detail="更新权限失败"
  50. )
  51. return {"message": "权限更新成功"}
  52. @router.put("/{user_id}/local-model-permissions")
  53. async def update_user_all_local_model_permissions(
  54. user_id: str,
  55. request: UpdateUserAllLocalModelPermissionsRequest,
  56. db: Session = Depends(get_db),
  57. current_admin = Depends(get_current_admin)
  58. ):
  59. """
  60. 更新用户对所有本地模型的权限
  61. """
  62. service = UserLocalModelPermissionService(db)
  63. success = await service.update_user_all_model_permissions(
  64. user_id=user_id,
  65. has_access=request.has_access
  66. )
  67. if not success:
  68. raise HTTPException(
  69. status_code=status.HTTP_400_BAD_REQUEST,
  70. detail="更新权限失败"
  71. )
  72. return {"message": "权限更新成功"}