diff --git a/apps/server/src/core/casl/interfaces/workspace-ability.type.ts b/apps/server/src/core/casl/interfaces/workspace-ability.type.ts index 111a0604d..40020bcd3 100644 --- a/apps/server/src/core/casl/interfaces/workspace-ability.type.ts +++ b/apps/server/src/core/casl/interfaces/workspace-ability.type.ts @@ -13,7 +13,7 @@ export enum WorkspaceCaslSubject { Attachment = 'attachment', API = 'api_key', Audit = 'audit', - PageAnalytics = "page_analytics" + PageAnalytics = 'page_analytics' } export type IWorkspaceAbility = diff --git a/apps/server/src/core/share/share.controller.ts b/apps/server/src/core/share/share.controller.ts index bbb6a701a..051956414 100644 --- a/apps/server/src/core/share/share.controller.ts +++ b/apps/server/src/core/share/share.controller.ts @@ -51,7 +51,8 @@ export class ShareController { private readonly pageAccessService: PageAccessService, private readonly licenseCheckService: LicenseCheckService, @Inject(AUDIT_SERVICE) private readonly auditService: IAuditService, - @Inject(PAGE_VIEW_SERVICE) private readonly pageViewService: IPageViewService, + @Inject(PAGE_VIEW_SERVICE) + private readonly pageViewService: IPageViewService, ) {} @HttpCode(HttpStatus.OK) @@ -76,14 +77,6 @@ export class ShareController { const shareData = await this.shareService.getSharedPage(dto, workspace.id); - void this.pageViewService.track({ - pageId: shareData.page.id, - workspaceId: workspace.id, - spaceId: shareData.page.spaceId, - shareId: shareData.share.id, - userId: null, - }); - const sharingAllowed = await this.shareService.isSharingAllowed( workspace.id, shareData.share.spaceId, @@ -92,6 +85,14 @@ export class ShareController { throw new NotFoundException('Shared page not found'); } + void this.pageViewService.track({ + pageId: shareData.page.id, + workspaceId: workspace.id, + spaceId: shareData.page.spaceId, + shareId: shareData.share.id, + userId: null, + }); + return { ...shareData, features: this.licenseCheckService.resolveFeatures( diff --git a/apps/server/src/database/migrations/20260809T000000-page-views.ts b/apps/server/src/database/migrations/20260809T000000-page-views.ts index ee46e7362..ea7c5d0d7 100644 --- a/apps/server/src/database/migrations/20260809T000000-page-views.ts +++ b/apps/server/src/database/migrations/20260809T000000-page-views.ts @@ -16,6 +16,10 @@ export async function up(db: Kysely): Promise { .addColumn('space_id', 'uuid', (col) => col.references('spaces.id').onDelete('cascade'), ) + .addColumn('user_id', 'uuid', (col) => + col.references('users.id').onDelete('set null'), + ) + .addColumn('share_id', 'uuid') .addColumn('visitor_id', 'varchar', (col) => col.notNull()) .addColumn('view_date', 'varchar', (col) => col.notNull()) .addColumn('hits', 'int8', (col) => col.notNull().defaultTo(1))