25 lines
1 KiB
Python
25 lines
1 KiB
Python
"""Journal append-only des opérations sensibles."""
|
|
from datetime import datetime, timezone
|
|
|
|
from ...extensions import db
|
|
|
|
|
|
class AuditLog(db.Model):
|
|
__tablename__ = "audit_logs"
|
|
|
|
id = db.Column(db.BigInteger, primary_key=True, autoincrement=True)
|
|
user_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="SET NULL"), index=True)
|
|
username = db.Column(db.String(80), nullable=False, default="système")
|
|
action = db.Column(db.String(16), nullable=False)
|
|
endpoint = db.Column(db.String(160), nullable=True)
|
|
path = db.Column(db.String(500), nullable=False)
|
|
entity_type = db.Column(db.String(80), nullable=True, index=True)
|
|
entity_id = db.Column(db.String(80), nullable=True, index=True)
|
|
payload = db.Column(db.Text, nullable=True)
|
|
status_code = db.Column(db.SmallInteger, nullable=False)
|
|
ip_address = db.Column(db.String(64), nullable=True)
|
|
created_at = db.Column(
|
|
db.DateTime, nullable=False, index=True,
|
|
default=lambda: datetime.now(timezone.utc).replace(tzinfo=None),
|
|
)
|
|
|