Initial commit: InviteMe production redesign

This commit is contained in:
InviteMe Developer
2026-09-01 10:52:35 +03:00
commit 1d85518957
72 changed files with 6931 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
from flask import request
from app import db
from app.models import AuditLog
def log_action(action, target_type=None, target_id=None, details=None):
"""Записывает действие пользователя в аудит-лог.
Аргументы:
action: короткий код действия, например "guest_create", "event_delete".
target_type: тип объекта (event, guest, user, ...).
target_id: идентификатор объекта (может быть строкой).
details: произвольное текстовое описание или причина.
"""
try:
from app.routes import current_user
user = current_user()
user_id = user.id if user else None
username = user.username if user else None
except Exception:
user_id = None
username = None
ip_address = None
try:
if request:
# Учитываем прокси
ip_address = request.headers.get("X-Forwarded-For", request.remote_addr)
if ip_address:
ip_address = ip_address.split(",")[0].strip()
except Exception:
pass
record = AuditLog(
user_id=user_id,
username=username,
action=action,
target_type=target_type,
target_id=str(target_id) if target_id is not None else None,
details=details,
ip_address=ip_address,
)
db.session.add(record)
# Не делаем commit здесь, чтобы не ломать транзакции вызывающего кода.
# Вызывающий код сам делает db.session.commit() после основных изменений.