diff --git a/backend/src/controllers/v2/secretsController.ts b/backend/src/controllers/v2/secretsController.ts index 10675937b..828a4e8e1 100644 --- a/backend/src/controllers/v2/secretsController.ts +++ b/backend/src/controllers/v2/secretsController.ts @@ -16,6 +16,7 @@ import { eventPushSecrets } from '../../events'; import { EESecretService, EELogService } from '../../ee/services'; import { postHogClient } from '../../services'; import { BadRequestError } from '../../utils/errors'; +import { getChannelFromUserAgent } from '../../utils/posthog'; /** * Create secret(s) for workspace with id [workspaceId] and environment [environment] @@ -75,7 +76,7 @@ export const createSecrets = async (req: Request, res: Response) => { } } */ - const channel = req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli'; + const channel = getChannelFromUserAgent(req.headers['user-agent']) const { workspaceId, environment } = req.body; let toAdd; @@ -194,7 +195,7 @@ export const createSecrets = async (req: Request, res: Response) => { numberOfSecrets: toAdd.length, environment, workspaceId, - channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli', + channel: channel, userAgent: req.headers?.['user-agent'] } }); @@ -280,7 +281,7 @@ export const getSecrets = async (req: Request, res: Response) => { if (err) throw ValidationError({ message: 'Failed to get secrets', stack: err.stack }); - const channel = req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli'; + const channel = getChannelFromUserAgent(req.headers['user-agent']) const readAction = await EELogService.createActionSecret({ name: ACTION_READ_SECRETS, @@ -368,6 +369,7 @@ export const updateSecrets = async (req: Request, res: Response) => { */ const channel = req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli'; + // TODO: move type interface PatchSecret { id: string; @@ -516,7 +518,7 @@ export const updateSecrets = async (req: Request, res: Response) => { numberOfSecrets: workspaceSecretObj[key].length, environment: workspaceSecretObj[key][0].environment, workspaceId: key, - channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli', + channel: channel, userAgent: req.headers?.['user-agent'] } }); @@ -582,7 +584,7 @@ export const deleteSecrets = async (req: Request, res: Response) => { } } */ - const channel = req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli'; + const channel = getChannelFromUserAgent(req.headers['user-agent']) const toDelete = req.secrets.map((s: any) => s._id); await Secret.deleteMany({ @@ -642,7 +644,7 @@ export const deleteSecrets = async (req: Request, res: Response) => { numberOfSecrets: workspaceSecretObj[key].length, environment: workspaceSecretObj[key][0].environment, workspaceId: key, - channel: req.headers?.['user-agent']?.toLowerCase().includes('mozilla') ? 'web' : 'cli', + channel: channel, userAgent: req.headers?.['user-agent'] } }); diff --git a/backend/src/utils/posthog.ts b/backend/src/utils/posthog.ts new file mode 100644 index 000000000..85a411ca7 --- /dev/null +++ b/backend/src/utils/posthog.ts @@ -0,0 +1,15 @@ +const CLI_USER_AGENT_NAME = "cli" +const K8_OPERATOR_AGENT_NAME = "k8-operator" +export const getChannelFromUserAgent = function (userAgent: string | undefined) { + if (userAgent == undefined) { + return "other" + } else if (userAgent == CLI_USER_AGENT_NAME) { + return "cli" + } else if (userAgent == K8_OPERATOR_AGENT_NAME) { + return "k8-operator" + } else if (userAgent.toLowerCase().includes('mozilla')) { + return "web" + } else { + return "other" + } +} \ No newline at end of file