o
    "i^	                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZee	Z
ejdd				dded	ed
edededee dee dee dee fddZejdd				dded	ed
ededededee dee dee fddZdS )z
Async audit logging tasks
    )
celery_app)SessionLocal)OptionalNlog_permission_check)nameuser_id	tenant_idresourceactionresultrole_id
ip_address
user_agentrequest_pathc	                 C   s   t  }	zLzddlm}
 |
d| ||||||||d
}|	| |	  W n tyA } ztd|  |	  W Y d}~nd}~ww W |		  dS W |		  dS |		  w )z"Async task to log permission checkr   PermissionAuditLogcheck)
action_typer   r   r	   r
   r   r   r   r   r   z Failed to log permission check: N)
r   app.models.permission_audit_logr   addcommit	Exceptionloggererrorrollbackclose)r   r   r	   r
   r   r   r   r   r   dbr   loge r   =/lsinfo/ai/hellotax_ai/base_platform/app/tasks/audit_tasks.pyr      s4   
log_permission_changer   rolec	                 C   s   t  }	z`z3ddlm}
 d}d|v r |dd }| r t|}|
| ||||||||d	}|	| |	  W n tyU } zt	
d|  |	  W Y d}~nd}~ww W |	  dS W |	  dS |	  w )z)Async task to log permission grant/revoker   r   N:)	r   r   r   r	   r
   r   r   r   r   z!Failed to log permission change: )r   r   r   splitisdigitintr   r   r   r   r   r   r   )r   r   r	   r
   r"   r   r   r   r   r   r   r   	role_partr   r   r   r   r    r!   2   s<   
)NNNN)r   NNN)__doc__app.celery_appr   app.db.sessionr   typingr   logging	getLogger__name__r   taskr'   strboolr   r!   r   r   r   r    <module>   sl    

	
%	