use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum AuditAction {
UserCreated,
UserDeleted,
UserRoleChanged,
UserPasswordReset,
TeamCreated,
TeamDeleted,
TeamMemberAdded,
TeamMemberRemoved,
VaultSharedWithUser,
VaultSharedWithTeam,
VaultAccessRevoked,
VaultKeyRotated,
VaultCreated,
VaultDeleted,
VaultOpened,
SecretCreated,
SecretUpdated,
SecretDeleted,
}
impl AuditAction {
pub fn to_db_str(&self) -> &'static str {
match self {
AuditAction::UserCreated => "user.created",
AuditAction::UserDeleted => "user.deleted",
AuditAction::UserRoleChanged => "user.role_changed",
AuditAction::UserPasswordReset => "user.password_reset",
AuditAction::TeamCreated => "team.created",
AuditAction::TeamDeleted => "team.deleted",
AuditAction::TeamMemberAdded => "team.member_added",
AuditAction::TeamMemberRemoved => "team.member_removed",
AuditAction::VaultSharedWithUser => "vault.shared_with_user",
AuditAction::VaultSharedWithTeam => "vault.shared_with_team",
AuditAction::VaultAccessRevoked => "vault.access_revoked",
AuditAction::VaultKeyRotated => "vault.key_rotated",
AuditAction::VaultCreated => "vault.created",
AuditAction::VaultDeleted => "vault.deleted",
AuditAction::VaultOpened => "vault.opened",
AuditAction::SecretCreated => "secret.created",
AuditAction::SecretUpdated => "secret.updated",
AuditAction::SecretDeleted => "secret.deleted",
}
}
}
#[derive(Debug, Clone)]
pub struct AuditLogEntry {
pub id: i64,
pub actor_user_id: Option<Uuid>,
pub action: String,
pub target_type: Option<String>,
pub target_id: Option<String>,
pub detail: Option<String>,
pub performed_at: String,
}