bugfix getallapps

This commit is contained in:
2024-12-17 19:56:29 +09:00
parent 51e15287f5
commit c2a7ead1e3
9 changed files with 121 additions and 40 deletions

View File

@@ -0,0 +1,52 @@
from fastapi import Request
from starlette.middleware.base import BaseHTTPMiddleware
from sqlalchemy.orm import Session
from app.db.models import OperationLog,User
from functools import wraps
from fastapi import Request
def log_operation(func):
"""自定义装饰器用于记录操作日志"""
@wraps(func)
async def wrapper(*args, **kwargs):
if 'request' in kwargs and isinstance(kwargs['request'], Request):
request: Request = kwargs['request']
method = request.method
url = str(request.url)
client_ip = request.client.host
headers = dict(request.headers)
user_agent = headers.get("user-agent", "")
if 'db' in kwargs and isinstance(kwargs['db'], Session):
db = kwargs['db']
if 'user' in kwargs and isinstance(kwargs['user'], User):
user = kwargs['user']
user_id = user.id
tenant_id = user.tenantid
else:
user_id = None
tenant_id = None
try:
response = await func(*args, **kwargs)
if db:
db_operation = OperationLog(tenantid =tenant_id,
clientip =client_ip,
useragent =user_agent,
userid = user_id,
operation = method,
function = url,
response = f"status_code:{response.status_code }" )
db.add(db_operation)
db.commit()
except Exception as e:
raise e
return response
return wrapper