Load views on user load and read in cache (#3552)
* WIP * Poc * Use cached root query + remove proloaded views state * Fix storybook test + fix codegen * Return default schema if token is absent, unauthenticated if token is invalid * Use enum instead of bool --------- Co-authored-by: Thomas Trompette <thomast@twenty.com> Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -172,6 +172,12 @@ export class TokenService {
|
||||
return { token };
|
||||
}
|
||||
|
||||
isTokenPresent(request: Request): boolean {
|
||||
const token = ExtractJwt.fromAuthHeaderAsBearerToken()(request);
|
||||
|
||||
return !!token;
|
||||
}
|
||||
|
||||
async validateToken(request: Request): Promise<Workspace> {
|
||||
const token = ExtractJwt.fromAuthHeaderAsBearerToken()(request);
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Injectable, UnauthorizedException } from '@nestjs/common';
|
||||
import { ContextIdFactory, ModuleRef } from '@nestjs/core';
|
||||
import { GqlOptionsFactory } from '@nestjs/graphql';
|
||||
|
||||
@ -56,17 +56,22 @@ export class GraphQLConfigService
|
||||
},
|
||||
conditionalSchema: async (context) => {
|
||||
try {
|
||||
let workspace: Workspace;
|
||||
|
||||
// If token is not valid, it will return an empty schema
|
||||
try {
|
||||
workspace = await this.tokenService.validateToken(context.req);
|
||||
} catch (err) {
|
||||
if (!this.tokenService.isTokenPresent(context.req)) {
|
||||
return new GraphQLSchema({});
|
||||
}
|
||||
|
||||
const workspace = await this.tokenService.validateToken(context.req);
|
||||
|
||||
return await this.createSchema(context, workspace);
|
||||
} catch (error) {
|
||||
if (error instanceof UnauthorizedException) {
|
||||
throw new GraphQLError('Unauthenticated', {
|
||||
extensions: {
|
||||
code: 'UNAUTHENTICATED',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if (error instanceof JsonWebTokenError) {
|
||||
//mockedUserJWT
|
||||
throw new GraphQLError('Unauthenticated', {
|
||||
|
||||
Reference in New Issue
Block a user