Files
fastapi-best-architecture/backend/common/security/permission.py
T
Wu Clan 5e438c685d Refactor the backend architecture (#299)
* 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
2024-03-22 18:16:15 +08:00

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