diff --git a/apps/api/v2/src/filters/http-exception.filter.ts b/apps/api/v2/src/filters/http-exception.filter.ts index 5b6003f804..c47e1ff936 100644 --- a/apps/api/v2/src/filters/http-exception.filter.ts +++ b/apps/api/v2/src/filters/http-exception.filter.ts @@ -1,4 +1,5 @@ import { ArgumentsHost, Catch, ExceptionFilter, HttpException, Logger } from "@nestjs/common"; +import { Request } from "express"; import { ERROR_STATUS } from "@calcom/platform-constants"; import { Response } from "@calcom/platform-types"; @@ -10,11 +11,14 @@ export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + const request = ctx.getRequest(); const statusCode = exception.getStatus(); this.logger.error(`Http Exception Filter: ${exception?.message}`, { exception, - request, + body: request.body, + headers: request.headers, + url: request.url, + method: request.method, }); response.status(statusCode).json({ status: ERROR_STATUS, diff --git a/apps/api/v2/src/filters/prisma-exception.filter.ts b/apps/api/v2/src/filters/prisma-exception.filter.ts index e3dd572f62..4490a0de8c 100644 --- a/apps/api/v2/src/filters/prisma-exception.filter.ts +++ b/apps/api/v2/src/filters/prisma-exception.filter.ts @@ -7,6 +7,7 @@ import { PrismaClientUnknownRequestError, PrismaClientValidationError, } from "@prisma/client/runtime/library"; +import { Request } from "express"; import { ERROR_STATUS, INTERNAL_SERVER_ERROR } from "@calcom/platform-constants"; import { Response } from "@calcom/platform-types"; @@ -31,10 +32,13 @@ export class PrismaExceptionFilter implements ExceptionFilter { catch(error: PrismaError, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + const request = ctx.getRequest(); this.logger.error(`PrismaError: ${error.message}`, { error, - request, + body: request.body, + headers: request.headers, + url: request.url, + method: request.method, }); response.status(HttpStatus.INTERNAL_SERVER_ERROR).json({ status: ERROR_STATUS, diff --git a/apps/api/v2/src/filters/sentry-exception.filter.ts b/apps/api/v2/src/filters/sentry-exception.filter.ts index 0050bb0a7b..479525ecf4 100644 --- a/apps/api/v2/src/filters/sentry-exception.filter.ts +++ b/apps/api/v2/src/filters/sentry-exception.filter.ts @@ -1,6 +1,7 @@ import { ArgumentsHost, Catch, Logger, HttpStatus } from "@nestjs/common"; import { BaseExceptionFilter } from "@nestjs/core"; import * as Sentry from "@sentry/node"; +import { Request } from "express"; import { ERROR_STATUS, INTERNAL_SERVER_ERROR } from "@calcom/platform-constants"; import { Response } from "@calcom/platform-types"; @@ -12,11 +13,14 @@ export class SentryFilter extends BaseExceptionFilter { handleUnknownError(exception: any, host: ArgumentsHost): void { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + const request = ctx.getRequest(); this.logger.error(`Sentry Exception Filter: ${exception?.message}`, { exception, - request, + body: request.body, + headers: request.headers, + url: request.url, + method: request.method, }); // capture if client has been init diff --git a/apps/api/v2/src/filters/trpc-exception.filter.ts b/apps/api/v2/src/filters/trpc-exception.filter.ts index 4d9ae8710e..e65e94af16 100644 --- a/apps/api/v2/src/filters/trpc-exception.filter.ts +++ b/apps/api/v2/src/filters/trpc-exception.filter.ts @@ -1,4 +1,5 @@ import { ArgumentsHost, Catch, ExceptionFilter, Logger } from "@nestjs/common"; +import { Request } from "express"; import { ERROR_STATUS } from "@calcom/platform-constants"; import { TRPCError } from "@calcom/platform-libraries"; @@ -11,7 +12,7 @@ export class TRPCExceptionFilter implements ExceptionFilter { catch(exception: TRPCError, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + const request = ctx.getRequest(); let statusCode = 500; switch (exception.code) { @@ -42,7 +43,10 @@ export class TRPCExceptionFilter implements ExceptionFilter { this.logger.error(`TRPC Exception Filter: ${exception?.message}`, { exception, - request, + body: request.body, + headers: request.headers, + url: request.url, + method: request.method, }); response.status(statusCode).json({ diff --git a/apps/api/v2/src/filters/zod-exception.filter.ts b/apps/api/v2/src/filters/zod-exception.filter.ts index 62a1294135..eb962ff5fa 100644 --- a/apps/api/v2/src/filters/zod-exception.filter.ts +++ b/apps/api/v2/src/filters/zod-exception.filter.ts @@ -1,5 +1,6 @@ import type { ArgumentsHost, ExceptionFilter } from "@nestjs/common"; import { Catch, HttpStatus, Logger } from "@nestjs/common"; +import { Request } from "express"; import { ZodError } from "zod"; import { BAD_REQUEST, ERROR_STATUS } from "@calcom/platform-constants"; @@ -12,11 +13,14 @@ export class ZodExceptionFilter implements ExceptionFilter { catch(error: ZodError, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + const request = ctx.getRequest(); this.logger.error(`ZodError: ${error.message}`, { error, - request, + body: request.body, + headers: request.headers, + url: request.url, + method: request.method, }); response.status(HttpStatus.BAD_REQUEST).json({ diff --git a/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts b/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts index f465c19580..0241ea7ada 100644 --- a/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts +++ b/apps/api/v2/src/modules/oauth-clients/services/oauth-clients-users.service.ts @@ -27,8 +27,6 @@ export class OAuthClientUsersService { const username = generateShortHash(body.email, oAuthClientId); user = await this.userRepository.create(body, username, oAuthClientId, isPlatformManaged); } else { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const [_, emailDomain] = body.email.split("@"); user = ( await createNewUsersConnectToOrgIfExists({ usernamesOrEmails: [body.email], @@ -40,7 +38,7 @@ export class OAuthClientUsersService { language: "en", }, parentId: null, - autoAcceptEmailDomain: emailDomain, + autoAcceptEmailDomain: "never-auto-accept-email-domain-for-managed-users", connectionInfoMap: { [body.email]: { orgId: organizationId, diff --git a/apps/api/v2/src/modules/tokens/tokens.repository.ts b/apps/api/v2/src/modules/tokens/tokens.repository.ts index b26ce4ff42..291cde6d2f 100644 --- a/apps/api/v2/src/modules/tokens/tokens.repository.ts +++ b/apps/api/v2/src/modules/tokens/tokens.repository.ts @@ -101,7 +101,7 @@ export class TokensRepository { } async refreshOAuthTokens(clientId: string, refreshTokenSecret: string, tokenUserId: number) { - const accessExpiry = DateTime.now().plus({ minute: 1 }).startOf("minute").toJSDate(); + const accessExpiry = DateTime.now().plus({ minute: 60 }).startOf("minute").toJSDate(); const refreshExpiry = DateTime.now().plus({ year: 1 }).startOf("day").toJSDate(); // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/apps/api/v2/test/mocks/next-auth-mock.strategy.ts b/apps/api/v2/test/mocks/next-auth-mock.strategy.ts index 96e92b00a8..236748220f 100644 --- a/apps/api/v2/test/mocks/next-auth-mock.strategy.ts +++ b/apps/api/v2/test/mocks/next-auth-mock.strategy.ts @@ -1,16 +1,16 @@ -import { BaseStrategy } from "@/lib/passport/strategies/types"; +import { NextAuthPassportStrategy } from "@/lib/passport/strategies/types"; import { UsersRepository } from "@/modules/users/users.repository"; import { Injectable } from "@nestjs/common"; import { PassportStrategy } from "@nestjs/passport"; @Injectable() -export class NextAuthMockStrategy extends PassportStrategy(BaseStrategy, "next-auth") { +export class NextAuthMockStrategy extends PassportStrategy(NextAuthPassportStrategy, "next-auth") { constructor(private readonly email: string, private readonly userRepository: UsersRepository) { super(); } async authenticate() { try { - const user = await this.userRepository.findByEmail(this.email); + const user = await this.userRepository.findByEmailWithProfile(this.email); if (!user) { throw new Error("User with the provided email not found"); }