diff --git a/apps/backend/src/app/api/latest/users/crud.tsx b/apps/backend/src/app/api/latest/users/crud.tsx index 3b63509d4..69ea82e20 100644 --- a/apps/backend/src/app/api/latest/users/crud.tsx +++ b/apps/backend/src/app/api/latest/users/crud.tsx @@ -4,6 +4,7 @@ import { PrismaTransaction } from "@/lib/types"; import { sendTeamMembershipDeletedWebhook, sendUserCreatedWebhook, sendUserDeletedWebhook, sendUserUpdatedWebhook } from "@/lib/webhooks"; import { RawQuery, prismaClient, rawQuery, retryTransaction } from "@/prisma-client"; import { createCrudHandlers } from "@/route-handlers/crud-handler"; +import { log } from "@/utils/telemetry"; import { runAsynchronouslyAndWaitUntil } from "@/utils/vercel"; import { BooleanTrue, Prisma } from "@prisma/client"; import { KnownErrors } from "@stackframe/stack-shared"; @@ -536,6 +537,10 @@ export const usersCrudHandlers = createLazyProxy(() => createCrudHandlers(usersC }; }, onCreate: async ({ auth, data }) => { + log("create_user_endpoint_primaryAuthEnabled", { + value: data.primary_email_auth_enabled, + email: data.primary_email ?? undefined, + }); const result = await retryTransaction(async (tx) => { const passwordHash = await getPasswordHashFromData(data); await checkAuthData(tx, { diff --git a/apps/backend/src/utils/telemetry.tsx b/apps/backend/src/utils/telemetry.tsx index 75de51689..39e6ac1fd 100644 --- a/apps/backend/src/utils/telemetry.tsx +++ b/apps/backend/src/utils/telemetry.tsx @@ -1,5 +1,5 @@ -import { AttributeValue, Span, trace } from "@opentelemetry/api"; - +import { Attributes, AttributeValue, Span, trace } from "@opentelemetry/api"; +import { StackAssertionError } from "@stackframe/stack-shared/dist/utils/errors"; const tracer = trace.getTracer('stack-backend'); export function withTraceSpan

(optionsOrDescription: string | { description: string, attributes?: Record }, fn: (...args: P) => Promise): (...args: P) => Promise { @@ -24,6 +24,11 @@ export async function traceSpan(optionsOrDescription: string | { description: }); } -export function log(message: string, ...args: any[]) { - console.log(`[${new Date().toISOString()}] ${message}`, ...args); +export function log(message: string, attributes: Attributes) { + const span = trace.getActiveSpan(); + if (span) { + span.addEvent(message, attributes); + } else { + throw new StackAssertionError('No active span found'); + } }