mirror of
https://github.com/idrainformatica/PecFlow.git
synced 2026-06-16 12:45:42 +02:00
Modifiche varie
This commit is contained in:
@@ -13,11 +13,12 @@ import json
|
||||
import uuid
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, File, Form, HTTPException, Query, UploadFile, status
|
||||
from fastapi import APIRouter, File, Form, HTTPException, Query, Request, UploadFile, status
|
||||
|
||||
from app.core.exceptions import ForbiddenError
|
||||
from app.dependencies import CurrentUser, DB
|
||||
from app.schemas.send import SendJobListResponse, SendJobResponse, SendPecRequest
|
||||
from app.services.audit_service import get_real_ip
|
||||
from app.services.permission_service import PermissionService
|
||||
from app.services.send_service import SendService
|
||||
|
||||
@@ -47,12 +48,33 @@ def _job_response(job) -> SendJobResponse:
|
||||
),
|
||||
)
|
||||
async def create_send_job(
|
||||
request: Request,
|
||||
data: SendPecRequest,
|
||||
current_user: CurrentUser,
|
||||
db: DB,
|
||||
) -> SendJobResponse:
|
||||
from app.services.audit_service import log_audit
|
||||
|
||||
svc = _svc(db)
|
||||
job = await svc.create_send_job(current_user=current_user, data=data)
|
||||
|
||||
await log_audit(
|
||||
db,
|
||||
"pec.sent",
|
||||
tenant_id=current_user.tenant_id,
|
||||
user_id=current_user.id,
|
||||
resource_type="send_job",
|
||||
resource_id=job.id,
|
||||
ip_address=get_real_ip(request),
|
||||
user_agent=request.headers.get("user-agent"),
|
||||
payload={
|
||||
"mailbox_id": str(job.mailbox_id),
|
||||
"to_addresses": data.to_addresses,
|
||||
"subject": data.subject,
|
||||
"has_attachments": False,
|
||||
},
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
await db.refresh(job)
|
||||
return _job_response(job)
|
||||
@@ -74,6 +96,7 @@ async def create_send_job(
|
||||
),
|
||||
)
|
||||
async def create_send_job_multipart(
|
||||
request: Request,
|
||||
current_user: CurrentUser,
|
||||
db: DB,
|
||||
data: str = Form(
|
||||
@@ -85,6 +108,8 @@ async def create_send_job_multipart(
|
||||
description="File allegati (0 o più, max 20 MB ciascuno)",
|
||||
),
|
||||
) -> SendJobResponse:
|
||||
from app.services.audit_service import log_audit
|
||||
|
||||
# ── Parse del JSON ────────────────────────────────────────────────────────
|
||||
try:
|
||||
raw = json.loads(data)
|
||||
@@ -128,6 +153,25 @@ async def create_send_job_multipart(
|
||||
data=pec_data,
|
||||
attachments=files_data if files_data else None,
|
||||
)
|
||||
|
||||
await log_audit(
|
||||
db,
|
||||
"pec.sent",
|
||||
tenant_id=current_user.tenant_id,
|
||||
user_id=current_user.id,
|
||||
resource_type="send_job",
|
||||
resource_id=job.id,
|
||||
ip_address=get_real_ip(request),
|
||||
user_agent=request.headers.get("user-agent"),
|
||||
payload={
|
||||
"mailbox_id": str(job.mailbox_id),
|
||||
"to_addresses": pec_data.to_addresses,
|
||||
"subject": pec_data.subject,
|
||||
"has_attachments": bool(files_data),
|
||||
"attachment_count": len(files_data),
|
||||
},
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
await db.refresh(job)
|
||||
return _job_response(job)
|
||||
@@ -205,10 +249,13 @@ async def get_send_job(
|
||||
summary="Annulla job di invio",
|
||||
)
|
||||
async def cancel_send_job(
|
||||
request: Request,
|
||||
job_id: uuid.UUID,
|
||||
current_user: CurrentUser,
|
||||
db: DB,
|
||||
) -> None:
|
||||
from app.services.audit_service import log_audit
|
||||
|
||||
svc = _svc(db)
|
||||
job = await svc.get_send_job(job_id, current_user.tenant_id)
|
||||
|
||||
@@ -218,4 +265,21 @@ async def cancel_send_job(
|
||||
raise ForbiddenError("Autorizzazione insufficiente per annullare questo invio")
|
||||
|
||||
await svc.cancel_send_job(job_id, current_user.tenant_id)
|
||||
|
||||
await log_audit(
|
||||
db,
|
||||
"pec.send_cancelled",
|
||||
tenant_id=current_user.tenant_id,
|
||||
user_id=current_user.id,
|
||||
resource_type="send_job",
|
||||
resource_id=job_id,
|
||||
ip_address=get_real_ip(request),
|
||||
user_agent=request.headers.get("user-agent"),
|
||||
payload={
|
||||
"job_id": str(job_id),
|
||||
"mailbox_id": str(job.mailbox_id),
|
||||
"previous_status": job.status,
|
||||
},
|
||||
)
|
||||
|
||||
await db.commit()
|
||||
|
||||
Reference in New Issue
Block a user