diff --git a/front/craco.config.js b/front/craco.config.js index e8b406716..fb87dd395 100644 --- a/front/craco.config.js +++ b/front/craco.config.js @@ -5,13 +5,13 @@ module.exports = { client: { overlay: { runtimeErrors: (error) => { - if (error.message === "ResizeObserver loop limit exceeded") { - return false; + switch (error.message) { + case "ResizeObserver loop limit exceeded": + case "Unauthenticated": + return false; + default: + return true; } - if (error.message === "Unauthorized") { - return false; - } - return true; }, }, } diff --git a/front/src/modules/apollo/services/apollo.factory.ts b/front/src/modules/apollo/services/apollo.factory.ts index 6eb2f5a92..a11beb595 100644 --- a/front/src/modules/apollo/services/apollo.factory.ts +++ b/front/src/modules/apollo/services/apollo.factory.ts @@ -71,7 +71,7 @@ export class ApolloFactory implements ApolloManager { const retryLink = new RetryLink({ delay: { - initial: 100, + initial: 3000, }, attempts: { max: 2, diff --git a/server/src/app.module.ts b/server/src/app.module.ts index 982cb2369..d25289c70 100644 --- a/server/src/app.module.ts +++ b/server/src/app.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { GraphQLModule } from '@nestjs/graphql'; import { ConfigModule } from '@nestjs/config'; -import { ModuleRef } from '@nestjs/core'; +import { APP_FILTER, ModuleRef } from '@nestjs/core'; import { YogaDriver, YogaDriverConfig } from '@graphql-yoga/nestjs'; import GraphQLJSON from 'graphql-type-json'; @@ -23,6 +23,7 @@ import { JwtPayload, } from './core/auth/strategies/jwt.auth.strategy'; import { TenantService } from './tenant/tenant.service'; +import { ExceptionFilter } from './filters/exception.filter'; @Module({ imports: [ @@ -107,7 +108,13 @@ import { TenantService } from './tenant/tenant.service'; CoreModule, TenantModule, ], - providers: [AppService], + providers: [ + AppService, + { + provide: APP_FILTER, + useClass: ExceptionFilter, + }, + ], }) export class AppModule { static moduleRef: ModuleRef; diff --git a/server/src/filters/exception.filter.ts b/server/src/filters/exception.filter.ts index ad65aae27..a55f9a3be 100644 --- a/server/src/filters/exception.filter.ts +++ b/server/src/filters/exception.filter.ts @@ -1,4 +1,4 @@ -import { Catch, HttpException } from '@nestjs/common'; +import { Catch, UnauthorizedException } from '@nestjs/common'; import { GqlExceptionFilter } from '@nestjs/graphql'; import { Prisma } from '@prisma/client'; @@ -6,7 +6,7 @@ import { GraphQLError } from 'graphql'; @Catch() export class ExceptionFilter implements GqlExceptionFilter { - catch(exception: HttpException) { + catch(exception: Error) { if (exception instanceof Prisma.PrismaClientValidationError) { throw new GraphQLError('Invalid request', { extensions: { @@ -14,6 +14,14 @@ export class ExceptionFilter implements GqlExceptionFilter { }, }); } + if (exception instanceof UnauthorizedException) { + throw new GraphQLError('Unauthorized', { + extensions: { + code: 'UNAUTHENTICATED', + }, + }); + } + return exception; } }