import { Badge, Td, Tooltip, Tr } from "@app/components/v2"; import { eventToNameMap, userAgentTTypeoNameMap } from "@app/hooks/api/auditLogs/constants"; import { ActorType, EventType } from "@app/hooks/api/auditLogs/enums"; import { Actor, AuditLog, Event } from "@app/hooks/api/auditLogs/types"; type Props = { auditLog: AuditLog; isOrgAuditLogs?: boolean; showActorColumn: boolean; }; export const LogsTableRow = ({ auditLog, isOrgAuditLogs, showActorColumn }: Props) => { const renderActor = (actor: Actor) => { switch (actor.type) { case ActorType.USER: return (

{actor.metadata.email}

User

); case ActorType.SERVICE: return (

{`${actor.metadata.name}`}

Service token

); case ActorType.IDENTITY: return (

{`${actor.metadata.name}`}

Machine Identity

); default: return ; } }; const renderMetadata = (event: Event) => { switch (event.type) { case EventType.GET_SECRETS: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{`# Secrets: ${event.metadata.numberOfSecrets}`}

); case EventType.GET_SECRET: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{`Secret: ${event.metadata.secretKey}`}

); case EventType.CREATE_SECRET: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{`Secret: ${event.metadata.secretKey}`}

); case EventType.UPDATE_SECRET: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{`Secret: ${event.metadata.secretKey}`}

); case EventType.DELETE_SECRET: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{`Secret: ${event.metadata.secretKey}`}

); case EventType.AUTHORIZE_INTEGRATION: return (

{`Integration: ${event.metadata.integration}`}

); case EventType.UNAUTHORIZE_INTEGRATION: return (

{`Integration: ${event.metadata.integration}`}

); case EventType.CREATE_INTEGRATION: return (

{`Integration: ${event.metadata.integration}`}

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{event.metadata.app &&

{`Target app: ${event.metadata.app}`}

} {event.metadata.appId &&

{`Target app: ${event.metadata.appId}`}

} {event.metadata.targetEnvironment && (

{`Target environment: ${event.metadata.targetEnvironment}`}

)} {event.metadata.targetEnvironmentId && (

{`Target environment ID: ${event.metadata.targetEnvironmentId}`}

)} ); case EventType.DELETE_INTEGRATION: return (

{`Integration: ${event.metadata.integration}`}

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.secretPath}`}

{event.metadata.app &&

{`Target App: ${event.metadata.app}`}

} {event.metadata.appId &&

{`Target app: ${event.metadata.appId}`}

} {event.metadata.targetEnvironment && (

{`Target environment: ${event.metadata.targetEnvironment}`}

)} {event.metadata.targetEnvironmentId && (

{`Target environment ID: ${event.metadata.targetEnvironmentId}`}

)} ); case EventType.ADD_TRUSTED_IP: return (

{`IP: ${event.metadata.ipAddress}${ event.metadata.prefix !== undefined ? `/${event.metadata.prefix}` : "" }`}

); case EventType.UPDATE_TRUSTED_IP: return (

{`IP: ${event.metadata.ipAddress}${ event.metadata.prefix !== undefined ? `/${event.metadata.prefix}` : "" }`}

); case EventType.DELETE_TRUSTED_IP: return (

{`IP: ${event.metadata.ipAddress}${ event.metadata.prefix !== undefined ? `/${event.metadata.prefix}` : "" }`}

); case EventType.CREATE_SERVICE_TOKEN: return (

{`Name: ${event.metadata.name}`}

); case EventType.DELETE_SERVICE_TOKEN: return (

{`Name: ${event.metadata.name}`}

); case EventType.CREATE_IDENTITY: return (

{`ID: ${event.metadata.identityId}`}

{`Name: ${event.metadata.name}`}

); case EventType.UPDATE_IDENTITY: return (

{`ID: ${event.metadata.identityId}`}

{`Name: ${event.metadata.name}`}

); case EventType.DELETE_IDENTITY: return (

{`ID: ${event.metadata.identityId}`}

); case EventType.CREATE_ENVIRONMENT: return (

{`Name: ${event.metadata.name}`}

{`Slug: ${event.metadata.slug}`}

); case EventType.UPDATE_ENVIRONMENT: return (

{`Old name: ${event.metadata.oldName}`}

{`New name: ${event.metadata.newName}`}

{`Old slug: ${event.metadata.oldSlug}`}

{`New slug: ${event.metadata.newSlug}`}

); case EventType.DELETE_ENVIRONMENT: return (

{`Name: ${event.metadata.name}`}

{`Slug: ${event.metadata.slug}`}

); case EventType.ADD_WORKSPACE_MEMBER: return (

{`Email: ${event.metadata.email}`}

); case EventType.REMOVE_WORKSPACE_MEMBER: return (

{`Email: ${event.metadata.email}`}

); case EventType.CREATE_FOLDER: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.folderPath}`}

{`Folder: ${event.metadata.folderName}`}

); case EventType.UPDATE_FOLDER: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.folderPath}`}

{`Old folder: ${event.metadata.oldFolderName}`}

{`New folder: ${event.metadata.newFolderName}`}

); case EventType.DELETE_FOLDER: return (

{`Environment: ${event.metadata.environment}`}

{`Path: ${event.metadata.folderPath}`}

{`Folder: ${event.metadata.folderName}`}

); case EventType.CREATE_WEBHOOK: return (

{`Environment: ${event.metadata.environment}`}

{`Secret path: ${event.metadata.secretPath}`}

{`Disabled: ${event.metadata.isDisabled}`}

); case EventType.UPDATE_WEBHOOK_STATUS: return (

{`Environment: ${event.metadata.environment}`}

{`Secret path: ${event.metadata.secretPath}`}

{`Disabled: ${event.metadata.isDisabled}`}

); case EventType.DELETE_WEBHOOK: return (

{`Environment: ${event.metadata.environment}`}

{`Secret path: ${event.metadata.secretPath}`}

{`Disabled: ${event.metadata.isDisabled}`}

); case EventType.GET_SECRET_IMPORTS: return (

{`Environment: ${event.metadata.environment}`}

{`# Imported paths: ${event.metadata.numberOfImports}`}

); case EventType.CREATE_SECRET_IMPORT: return (

{`Import from env: ${event.metadata.importFromEnvironment}`}

{`Import from path: ${event.metadata.importFromSecretPath}`}

{`Import to env: ${event.metadata.importToEnvironment}`}

{`Import to path: ${event.metadata.importToSecretPath}`}

); case EventType.UPDATE_SECRET_IMPORT: return (

{`Import to env: ${event.metadata.importToEnvironment}`}

{`Import to path: ${event.metadata.importToSecretPath}`}

); case EventType.DELETE_SECRET_IMPORT: return (

{`Import from env: ${event.metadata.importFromEnvironment}`}

{`Import from path: ${event.metadata.importFromSecretPath}`}

{`Import to env: ${event.metadata.importToEnvironment}`}

{`Import to path: ${event.metadata.importToSecretPath}`}

); case EventType.UPDATE_USER_WORKSPACE_ROLE: return (

{`Email: ${event.metadata.email}`}

{`Old role: ${event.metadata.oldRole}`}

{`New role: ${event.metadata.newRole}`}

); case EventType.UPDATE_USER_WORKSPACE_DENIED_PERMISSIONS: return (

{`Email: ${event.metadata.email}`}

{event.metadata.deniedPermissions.map((permission) => { return (

{`Denied env-ability: ${permission.environmentSlug}-${permission.ability}`}

); })} ); case EventType.ORG_ADMIN_ACCESS_PROJECT: return (

{`Email: ${event.metadata.email}`}

); case EventType.CREATE_PKI_ALERT: case EventType.UPDATE_PKI_ALERT: return (

{`Alert ID: ${event.metadata.pkiAlertId}`}

{`Name: ${event.metadata.name}`}

{`Alert Before Days: ${event.metadata.alertBeforeDays}`}

); case EventType.GET_PKI_ALERT: case EventType.DELETE_PKI_ALERT: return (

{`Alert ID: ${event.metadata.pkiAlertId}`}

); case EventType.CREATE_PKI_COLLECTION: return (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

{`Name: ${event.metadata.name}`}

); case EventType.UPDATE_PKI_COLLECTION: return (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

{`Name: ${event.metadata.name}`}

); case EventType.GET_PKI_COLLECTION: case EventType.DELETE_PKI_COLLECTION: return (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

); case EventType.GET_PKI_COLLECTION_ITEMS: return (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

); case EventType.ADD_PKI_COLLECTION_ITEM: return (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

{`Collection Item ID: ${event.metadata.pkiCollectionItemId}`}

{`Type: ${event.metadata.type}`}

{`Item ID: ${event.metadata.itemId}`}

); case EventType.DELETE_PKI_COLLECTION_ITEM: return (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

{`Collection Item ID: ${event.metadata.pkiCollectionItemId}`}

); case EventType.CREATE_CA: case EventType.GET_CA: case EventType.UPDATE_CA: case EventType.DELETE_CA: case EventType.GET_CA_CSR: case EventType.GET_CA_CERT: case EventType.IMPORT_CA_CERT: case EventType.GET_CA_CRL: case EventType.SIGN_INTERMEDIATE: case EventType.ISSUE_CERT: return (

{`CA DN: ${event.metadata.dn}`}

); case EventType.GET_CERT: case EventType.DELETE_CERT: case EventType.REVOKE_CERT: case EventType.GET_CERT_BODY: return (

{`Cert CN: ${event.metadata.cn}`}

); case EventType.CREATE_CERTIFICATE_TEMPLATE: case EventType.UPDATE_CERTIFICATE_TEMPLATE: return (

{`Certificate Template ID: ${event.metadata.certificateTemplateId}`}

{`Certificate Authority ID: ${event.metadata.caId}`}

{`Name: ${event.metadata.name}`}

{`Common Name: ${event.metadata.commonName}`}

{`Subject Alternative Name: ${event.metadata.subjectAlternativeName}`}

{`TTL: ${event.metadata.ttl}`}

{event.metadata.pkiCollectionId && (

{`Collection ID: ${event.metadata.pkiCollectionId}`}

)} ); case EventType.GET_CERTIFICATE_TEMPLATE: case EventType.DELETE_CERTIFICATE_TEMPLATE: return (

{`Certificate Template ID: ${event.metadata.certificateTemplateId}`}

); case EventType.CREATE_CERTIFICATE_TEMPLATE_EST_CONFIG: case EventType.UPDATE_CERTIFICATE_TEMPLATE_EST_CONFIG: return (

{`Certificate Template ID: ${event.metadata.certificateTemplateId}`}

{`Enabled: ${event.metadata.isEnabled}`}

); case EventType.GET_CERTIFICATE_TEMPLATE_EST_CONFIG: return (

{`Certificate Template ID: ${event.metadata.certificateTemplateId}`}

); case EventType.GET_PROJECT_SLACK_CONFIG: return (

{`Project Slack Config ID: ${event.metadata.id}`}

); case EventType.UPDATE_PROJECT_SLACK_CONFIG: return (

{`Project Slack Config ID: ${event.metadata.id}`}

{`Slack integration ID: ${event.metadata.slackIntegrationId}`}

{`Access Request Notification Status: ${event.metadata.isAccessRequestNotificationEnabled}`}

{`Access Request Channels: ${event.metadata.accessRequestChannels}`}

{`Secret Approval Request Notification Status: ${event.metadata.isSecretRequestNotificationEnabled}`}

{`Secret Request Channels: ${event.metadata.secretRequestChannels}`}

); case EventType.INTEGRATION_SYNCED: return (

{event.metadata.isSynced ? "Successful" : "Failed"}

); default: return ; } }; const formatDate = (dateToFormat: string) => { const date = new Date(dateToFormat); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); let hours = date.getHours(); const minutes = String(date.getMinutes()).padStart(2, "0"); // convert from 24h to 12h format const period = hours >= 12 ? "PM" : "AM"; hours %= 12; hours = hours || 12; // the hour '0' should be '12' const formattedDate = `${day}-${month}-${year} at ${hours}:${minutes} ${period}`; return formattedDate; }; const renderSource = () => { const { event, actor } = auditLog; if (event.type === EventType.INTEGRATION_SYNCED) { if (actor.type === ActorType.USER) { return (

Manually triggered by {actor.metadata.email}

); } // Platform / automatic syncs return (

Automatically synced by Infisical

); } return (

{userAgentTTypeoNameMap[auditLog.userAgentType]}

{auditLog.ipAddress}

); }; return ( {formatDate(auditLog.createdAt)} {`${eventToNameMap[auditLog.event.type]}`} {isOrgAuditLogs && {auditLog.project.name}} {showActorColumn && renderActor(auditLog.actor)} {renderSource()} {renderMetadata(auditLog.event)} ); };