diff --git a/backend/src/ee/routes/v1/ssh-certificate-router.ts b/backend/src/ee/routes/v1/ssh-certificate-router.ts index a3ce95cb4..249a96b50 100644 --- a/backend/src/ee/routes/v1/ssh-certificate-router.ts +++ b/backend/src/ee/routes/v1/ssh-certificate-router.ts @@ -5,9 +5,11 @@ import { SshCertType } from "@app/ee/services/ssh/ssh-certificate-authority-type import { SSH_CERTIFICATE_AUTHORITIES } from "@app/lib/api-docs"; import { ms } from "@app/lib/ms"; import { writeLimit } from "@app/server/config/rateLimiter"; +import { getTelemetryDistinctId } from "@app/server/lib/telemetry"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; import { CertKeyAlgorithm } from "@app/services/certificate/certificate-types"; +import { PostHogEventTypes } from "@app/services/telemetry/telemetry-types"; export const registerSshCertRouter = async (server: FastifyZodProvider) => { server.route({ @@ -73,6 +75,16 @@ export const registerSshCertRouter = async (server: FastifyZodProvider) => { } }); + await server.services.telemetry.sendPostHogEvents({ + event: PostHogEventTypes.SignSshKey, + distinctId: getTelemetryDistinctId(req), + properties: { + certificateTemplateId: req.body.certificateTemplateId, + principals: req.body.principals, + ...req.auditLogInfo + } + }); + return { serialNumber, signedKey: signedPublicKey @@ -152,6 +164,16 @@ export const registerSshCertRouter = async (server: FastifyZodProvider) => { } }); + await server.services.telemetry.sendPostHogEvents({ + event: PostHogEventTypes.IssueSshCreds, + distinctId: getTelemetryDistinctId(req), + properties: { + certificateTemplateId: req.body.certificateTemplateId, + principals: req.body.principals, + ...req.auditLogInfo + } + }); + return { serialNumber, signedKey: signedPublicKey, diff --git a/backend/src/services/telemetry/telemetry-types.ts b/backend/src/services/telemetry/telemetry-types.ts index 786afb9d2..2f92978b2 100644 --- a/backend/src/services/telemetry/telemetry-types.ts +++ b/backend/src/services/telemetry/telemetry-types.ts @@ -15,7 +15,9 @@ export enum PostHogEventTypes { UserOrgInvitation = "User Org Invitation", TelemetryInstanceStats = "Self Hosted Instance Stats", SecretRequestCreated = "Secret Request Created", - SecretRequestDeleted = "Secret Request Deleted" + SecretRequestDeleted = "Secret Request Deleted", + SignSshKey = "Sign SSH Key", + IssueSshCreds = "Issue SSH Credentials" } export type TSecretModifiedEvent = { @@ -139,6 +141,24 @@ export type TSecretRequestDeletedEvent = { }; }; +export type TSignSshKeyEvent = { + event: PostHogEventTypes.SignSshKey; + properties: { + certificateTemplateId: string; + principals: string[]; + userAgent?: string; + }; +}; + +export type TIssueSshCredsEvent = { + event: PostHogEventTypes.IssueSshCreds; + properties: { + certificateTemplateId: string; + principals: string[]; + userAgent?: string; + }; +}; + export type TPostHogEvent = { distinctId: string } & ( | TSecretModifiedEvent | TAdminInitEvent @@ -151,4 +171,6 @@ export type TPostHogEvent = { distinctId: string } & ( | TTelemetryInstanceStatsEvent | TSecretRequestCreatedEvent | TSecretRequestDeletedEvent + | TSignSshKeyEvent + | TIssueSshCredsEvent );