mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 13:12:24 +00:00
* define the basic architecture * Update script and deployment file locations * Update the route registration * Fix CI download dependencies * Updated ruff to 0.3.3 * Update app subdirectory naming * Update the model import * fix pre-commit pdm lock * Update the service directory naming * Add CRUD method documents * Fix the issue of circular import * Update the README document * Update the SQL statement for create tables * Update docker scripts and documentation * Fix docker scripts * Update the backend README.md * Add the security folder and move the redis client * Update the configuration item * Fix environment configuration reads * Update the default configuration * Updated README description * Updated the user registration API * Fix test cases * Update the celery configuration * Update and fix celery configuration * Updated the celery structure * Update celery tasks and api * Add celery flower * Update the import style * Update contributors
27 lines
834 B
Python
27 lines
834 B
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
from fastapi import Request
|
|
|
|
from backend.common.exception.errors import ServerError
|
|
from backend.core.conf import settings
|
|
|
|
|
|
class RequestPermission:
|
|
"""
|
|
请求权限,仅用于角色菜单RBAC
|
|
|
|
Tip:
|
|
使用此请求权限时,需要将 `Depends(RequestPermission('xxx'))` 在 `DependsRBAC` 之前设置,
|
|
因为 fastapi 当前版本的接口依赖注入按正序执行,意味着 RBAC 标识会在验证前被设置
|
|
"""
|
|
|
|
def __init__(self, value: str):
|
|
self.value = value
|
|
|
|
async def __call__(self, request: Request):
|
|
if settings.PERMISSION_MODE == 'role-menu':
|
|
if not isinstance(self.value, str):
|
|
raise ServerError
|
|
# 附加权限标识
|
|
request.state.permission = self.value
|