/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
apps/api/src/app/analytics/analytics.controller.ts
56 строк
2 KB
Himanshu Garg
chore(root): changes for release and bumping up node to a security release (#12250)
07 авг 2026, 11:06
Не верифицирован
07 авг 2026, 11:06
db33feb
Код
Авторство
О чём код?
import { Body, Controller, HttpCode, HttpStatus, Post } from '@nestjs/common'; import { ApiExcludeController } from '@nestjs/swagger'; import { SkipThrottle } from '@nestjs/throttler'; import { AnalyticsService, ExternalApiAccessible, SkipPermissionsCheck, UserSession } from '@novu/application-generic'; import { UserSessionData } from '@novu/shared'; import { RequireAuthentication } from '../auth/framework/auth.decorator'; @Controller({ path: 'telemetry', }) @SkipThrottle() @RequireAuthentication() @ApiExcludeController() export class AnalyticsController { constructor(private analyticsService: AnalyticsService) {} @Post('/measure') @ExternalApiAccessible() @SkipPermissionsCheck() async trackEvent( @Body('event') event: string, @Body('data') data: Record<string, unknown> = {}, @UserSession() user: UserSessionData ): Promise<any> { this.analyticsService.track(event, user._id, { ...data, _organization: user?.organizationId, }); return { success: true, }; } @Post('/identify') @ExternalApiAccessible() @HttpCode(HttpStatus.NO_CONTENT) @SkipPermissionsCheck() async identifyUser(@Body() body: any, @UserSession() user: UserSessionData) { if (body.anonymousId) { this.analyticsService.alias(body.anonymousId, user._id); } this.analyticsService.upsertUser(user, user._id, { organizationType: body.organizationType, companySize: body.companySize, jobTitle: body.jobTitle, }); this.analyticsService.updateGroup(user._id, user.organizationId, { organizationType: body.organizationType, companySize: body.companySize, jobTitle: body.jobTitle, }); } }