From 81fbb4d60db74281983a79529e512d2f7fe4738e Mon Sep 17 00:00:00 2001 From: Pranav C Date: Mon, 10 Apr 2023 16:28:34 +0530 Subject: [PATCH] fix: miscellaneous bug fixes Signed-off-by: Pranav C --- packages/nocodb-nest/src/app.module.ts | 8 ++++---- .../extract-project-id.middleware.ts | 6 ++++-- .../src/modules/api-docs/api-docs.controller.ts | 2 +- .../modules/attachments/attachments.controller.ts | 10 ++++++---- .../src/modules/audits/audits.controller.ts | 2 +- .../src/modules/bases/bases.controller.ts | 2 +- .../src/modules/caches/caches.controller.ts | 2 +- .../src/modules/columns/columns.controller.ts | 2 +- .../bulk-data-alias/bulk-data-alias.controller.ts | 10 ++++++---- .../data-alias-export.controller.ts | 8 +++++--- .../data-alias-nested.controller.ts | 8 +++++--- .../src/modules/datas/data-alias.controller.spec.ts | 4 ++-- .../src/modules/datas/data-alias.controller.ts | 13 +++++++------ .../src/modules/datas/datas.controller.ts | 2 +- .../nocodb-nest/src/modules/datas/datas.module.ts | 2 +- .../modules/datas/old-datas/old-datas.controller.ts | 7 +++++-- .../modules/form-columns/form-columns.controller.ts | 2 +- .../src/modules/forms/forms.controller.ts | 2 +- .../src/modules/galleries/galleries.controller.ts | 2 +- .../modules/grid-columns/grid-columns.controller.ts | 2 +- .../src/modules/grids/grids.controller.ts | 2 +- .../modules/hook-filters/hook-filters.controller.ts | 3 +-- .../src/modules/hooks/hooks.controller.ts | 2 +- .../src/modules/import/import.controller.ts | 2 +- .../src/modules/kanbans/kanbans.controller.ts | 2 +- .../nocodb-nest/src/modules/maps/maps.controller.ts | 2 +- .../src/modules/meta-diffs/meta-diffs.controller.ts | 2 +- .../model-visibilities.controller.ts | 2 +- .../src/modules/org-lcense/org-lcense.controller.ts | 2 +- .../src/modules/org-tokens/org-tokens.controller.ts | 2 +- .../src/modules/org-users/org-users.controller.ts | 2 +- .../src/modules/plugins/plugins.controller.ts | 2 +- .../project-users/project-users.controller.ts | 2 +- .../src/modules/projects/projects.service.ts | 7 +++++-- .../public-datas-export.controller.ts | 2 +- .../modules/public-datas/public-datas.controller.ts | 2 +- .../modules/public-metas/public-metas.controller.ts | 2 +- .../modules/shared-bases/shared-bases.controller.ts | 2 +- .../nocodb-nest/src/modules/sync/sync.controller.ts | 2 +- .../nocodb-nest/src/modules/test/test.controller.ts | 2 +- .../src/modules/utils/utils.controller.ts | 2 +- .../modules/view-columns/view-columns.controller.ts | 2 +- packages/nocodb-nest/src/strategies/jwt.strategy.ts | 2 +- packages/nocodb-nest/src/utils/extractRolesObj.ts | 2 +- 44 files changed, 83 insertions(+), 67 deletions(-) diff --git a/packages/nocodb-nest/src/app.module.ts b/packages/nocodb-nest/src/app.module.ts index 45f093e3f6..213ef953f2 100644 --- a/packages/nocodb-nest/src/app.module.ts +++ b/packages/nocodb-nest/src/app.module.ts @@ -4,7 +4,7 @@ import { AuthModule } from './modules/auth/auth.module'; import { ExtractProjectIdMiddleware } from './middlewares/extract-project-id/extract-project-id.middleware'; import { UsersModule } from './modules/users/users.module'; import { MetaService } from './meta/meta.service'; -import { LocalStrategy } from './strategies/local.strategy'; +// import { LocalStrategy } from './strategies/local.strategy'; import { UtilsModule } from './modules/utils/utils.module'; import { ProjectsModule } from './modules/projects/projects.module'; import { JwtStrategy } from './strategies/jwt.strategy'; @@ -95,8 +95,8 @@ import { PluginsModule } from './modules/plugins/plugins.module'; }) export class AppModule { configure(consumer: MiddlewareConsumer) { - consumer - .apply(ExtractProjectIdMiddleware) - .forRoutes({ path: '*', method: RequestMethod.ALL }); + // consumer + // .apply(ExtractProjectIdMiddleware) + // .forRoutes({ path: '*', method: RequestMethod.ALL }); } } diff --git a/packages/nocodb-nest/src/middlewares/extract-project-id/extract-project-id.middleware.ts b/packages/nocodb-nest/src/middlewares/extract-project-id/extract-project-id.middleware.ts index 4c7f39f89d..f8d0a3a2c8 100644 --- a/packages/nocodb-nest/src/middlewares/extract-project-id/extract-project-id.middleware.ts +++ b/packages/nocodb-nest/src/middlewares/extract-project-id/extract-project-id.middleware.ts @@ -189,7 +189,9 @@ export class ExtractProjectIdMiddleware implements NestMiddleware, CanActivate { await this.use( context.switchToHttp().getRequest(), context.switchToHttp().getResponse(), - () => {}, + () => { + console.log('next'); + }, ); return true; } @@ -222,7 +224,7 @@ export class AclMiddleware implements NestInterceptor { const roles: Record = extractRolesObj(req.user.roles); - if (req?.session?.passport?.user?.is_api_token && blockApiTokenAccess) { + if (req?.user?.is_api_token && blockApiTokenAccess) { NcError.forbidden('Not allowed with API token'); } if ( diff --git a/packages/nocodb-nest/src/modules/api-docs/api-docs.controller.ts b/packages/nocodb-nest/src/modules/api-docs/api-docs.controller.ts index fa3f964757..acbffa596a 100644 --- a/packages/nocodb-nest/src/modules/api-docs/api-docs.controller.ts +++ b/packages/nocodb-nest/src/modules/api-docs/api-docs.controller.ts @@ -3,7 +3,7 @@ import { ApiDocsService } from './api-docs.service'; import getSwaggerHtml from './template/swaggerHtml'; import getRedocHtml from './template/redocHtml'; -@Controller('api-docs') +@Controller() export class ApiDocsController { constructor(private readonly apiDocsService: ApiDocsService) {} diff --git a/packages/nocodb-nest/src/modules/attachments/attachments.controller.ts b/packages/nocodb-nest/src/modules/attachments/attachments.controller.ts index fb9d027253..eeb467063e 100644 --- a/packages/nocodb-nest/src/modules/attachments/attachments.controller.ts +++ b/packages/nocodb-nest/src/modules/attachments/attachments.controller.ts @@ -7,7 +7,9 @@ import { Query, Request, Response, + UseInterceptors, } from '@nestjs/common'; +import { FileInterceptor } from '@nestjs/platform-express'; import { OrgUserRoles, ProjectRoles } from 'nocodb-sdk'; import path from 'path'; import { NcError } from '../../helpers/catchError'; @@ -45,7 +47,7 @@ const isUploadAllowedMw = async (req: Request, _res: Response, next: any) => { NcError.badRequest('Upload not allowed'); }; -@Controller('attachments') +@Controller() export class AttachmentsController { constructor(private readonly attachmentsService: AttachmentsService) {} @@ -64,6 +66,7 @@ export class AttachmentsController { // ] // ); ) + @UseInterceptors(FileInterceptor('files')) async upload(@Request() req: any, @Query('path') path: string) { const attachments = await this.attachmentsService.upload({ files: (req as any).files, @@ -93,9 +96,8 @@ export class AttachmentsController { // @Get(/^\/download\/(.+)$/) // , getCacheMiddleware(), catchError(fileRead)); @Get('/download/:filename(*)') - // This route will match any URL that starts with - async fileRead(@Param('filename') filename: string - , @Response() res) { + // This route will match any URL that starts with + async fileRead(@Param('filename') filename: string, @Response() res) { try { const { img, type } = await this.attachmentsService.fileRead({ path: path.join('nc', 'uploads', filename), diff --git a/packages/nocodb-nest/src/modules/audits/audits.controller.ts b/packages/nocodb-nest/src/modules/audits/audits.controller.ts index 1005379650..6252c5fe41 100644 --- a/packages/nocodb-nest/src/modules/audits/audits.controller.ts +++ b/packages/nocodb-nest/src/modules/audits/audits.controller.ts @@ -13,7 +13,7 @@ import { Acl } from '../../middlewares/extract-project-id/extract-project-id.mid import { Audit } from '../../models'; import { AuditsService } from './audits.service'; -@Controller('audits') +@Controller() export class AuditsController { constructor(private readonly auditsService: AuditsService) {} diff --git a/packages/nocodb-nest/src/modules/bases/bases.controller.ts b/packages/nocodb-nest/src/modules/bases/bases.controller.ts index d0634cf815..4cd82739e2 100644 --- a/packages/nocodb-nest/src/modules/bases/bases.controller.ts +++ b/packages/nocodb-nest/src/modules/bases/bases.controller.ts @@ -17,7 +17,7 @@ import { import { BasesService } from './bases.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('bases') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class BasesController { constructor(private readonly basesService: BasesService) {} diff --git a/packages/nocodb-nest/src/modules/caches/caches.controller.ts b/packages/nocodb-nest/src/modules/caches/caches.controller.ts index 51c3a897ce..70635677be 100644 --- a/packages/nocodb-nest/src/modules/caches/caches.controller.ts +++ b/packages/nocodb-nest/src/modules/caches/caches.controller.ts @@ -2,7 +2,7 @@ import { Controller, Delete, Get } from '@nestjs/common'; import { Acl } from '../../middlewares/extract-project-id/extract-project-id.middleware'; import { CachesService } from './caches.service'; -@Controller('caches') +@Controller() export class CachesController { constructor(private readonly cachesService: CachesService) {} diff --git a/packages/nocodb-nest/src/modules/columns/columns.controller.ts b/packages/nocodb-nest/src/modules/columns/columns.controller.ts index 1c575aedd6..94f796fd18 100644 --- a/packages/nocodb-nest/src/modules/columns/columns.controller.ts +++ b/packages/nocodb-nest/src/modules/columns/columns.controller.ts @@ -17,7 +17,7 @@ import { import { ColumnsService } from './columns.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('columns') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class ColumnsController { constructor(private readonly columnsService: ColumnsService) {} diff --git a/packages/nocodb-nest/src/modules/datas/bulk-data-alias/bulk-data-alias.controller.ts b/packages/nocodb-nest/src/modules/datas/bulk-data-alias/bulk-data-alias.controller.ts index 51840984de..de05198f2d 100644 --- a/packages/nocodb-nest/src/modules/datas/bulk-data-alias/bulk-data-alias.controller.ts +++ b/packages/nocodb-nest/src/modules/datas/bulk-data-alias/bulk-data-alias.controller.ts @@ -5,12 +5,14 @@ import { Request, Body, Patch, - Delete, -} from '@nestjs/common'; -import { Acl } from '../../../middlewares/extract-project-id/extract-project-id.middleware'; + Delete, UseGuards, +} from '@nestjs/common' +import { Acl, ExtractProjectIdMiddleware } from '../../../middlewares/extract-project-id/extract-project-id.middleware' import { BulkDataAliasService } from './bulk-data-alias.service'; +import { AuthGuard } from '@nestjs/passport'; -@Controller('bulk-data-alias') +@Controller() +@UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class BulkDataAliasController { constructor(private bulkDataAliasService: BulkDataAliasService) {} diff --git a/packages/nocodb-nest/src/modules/datas/data-alias-export/data-alias-export.controller.ts b/packages/nocodb-nest/src/modules/datas/data-alias-export/data-alias-export.controller.ts index 645330ad7d..8dfa30c0e7 100644 --- a/packages/nocodb-nest/src/modules/datas/data-alias-export/data-alias-export.controller.ts +++ b/packages/nocodb-nest/src/modules/datas/data-alias-export/data-alias-export.controller.ts @@ -1,11 +1,13 @@ -import { Controller, Get, Request, Response } from '@nestjs/common'; -import { Acl } from '../../../middlewares/extract-project-id/extract-project-id.middleware'; +import { Controller, Get, Request, Response, UseGuards } from '@nestjs/common' +import { Acl, ExtractProjectIdMiddleware } from '../../../middlewares/extract-project-id/extract-project-id.middleware' import { View } from '../../../models'; import { DatasService } from '../datas.service'; import { extractCsvData, extractXlsxData } from '../helpers'; import * as XLSX from 'xlsx'; +import { AuthGuard } from '@nestjs/passport'; -@Controller('data-alias-export') +@Controller() +@UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class DataAliasExportController { constructor(private datasService: DatasService) {} diff --git a/packages/nocodb-nest/src/modules/datas/data-alias-nested/data-alias-nested.controller.ts b/packages/nocodb-nest/src/modules/datas/data-alias-nested/data-alias-nested.controller.ts index 0b367fd190..ddb645a7f5 100644 --- a/packages/nocodb-nest/src/modules/datas/data-alias-nested/data-alias-nested.controller.ts +++ b/packages/nocodb-nest/src/modules/datas/data-alias-nested/data-alias-nested.controller.ts @@ -1,8 +1,10 @@ -import { Controller, Delete, Get, Param, Post, Request } from '@nestjs/common'; -import { Acl } from '../../../middlewares/extract-project-id/extract-project-id.middleware'; +import { Controller, Delete, Get, Param, Post, Request, UseGuards } from '@nestjs/common' +import { Acl, ExtractProjectIdMiddleware } from '../../../middlewares/extract-project-id/extract-project-id.middleware' import { DataAliasNestedService } from './data-alias-nested.service'; +import { AuthGuard } from '@nestjs/passport'; -@Controller('data-alias-nested') +@Controller() +@UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) class DataAliasNestedController { constructor(private dataAliasNestedService: DataAliasNestedService) {} diff --git a/packages/nocodb-nest/src/modules/datas/data-alias.controller.spec.ts b/packages/nocodb-nest/src/modules/datas/data-alias.controller.spec.ts index 77e68818a2..c3b89775ad 100644 --- a/packages/nocodb-nest/src/modules/datas/data-alias.controller.spec.ts +++ b/packages/nocodb-nest/src/modules/datas/data-alias.controller.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { DataAliasController } from './data-alias.controller'; -import { DataAliasService } from '../data-alias/data-alias.service'; +import { DatasService } from './datas.service' describe('DataAliasController', () => { let controller: DataAliasController; @@ -8,7 +8,7 @@ describe('DataAliasController', () => { beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [DataAliasController], - providers: [DataAliasService], + providers: [DatasService], }).compile(); controller = module.get(DataAliasController); diff --git a/packages/nocodb-nest/src/modules/datas/data-alias.controller.ts b/packages/nocodb-nest/src/modules/datas/data-alias.controller.ts index 9b01664a00..d98a185050 100644 --- a/packages/nocodb-nest/src/modules/datas/data-alias.controller.ts +++ b/packages/nocodb-nest/src/modules/datas/data-alias.controller.ts @@ -7,13 +7,15 @@ import { Patch, Post, Request, - Response, -} from '@nestjs/common'; + Response, UseGuards, +} from '@nestjs/common' import { parseHrtimeToSeconds } from '../../helpers'; -import { Acl } from '../../middlewares/extract-project-id/extract-project-id.middleware'; +import { Acl, ExtractProjectIdMiddleware } from '../../middlewares/extract-project-id/extract-project-id.middleware' import { DatasService } from './datas.service'; +import { AuthGuard } from '@nestjs/passport'; -@Controller('data-alias') +@Controller() +@UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class DataAliasController { constructor(private readonly datasService: DatasService) {} @@ -38,9 +40,8 @@ export class DataAliasController { viewName: viewName, }); const elapsedSeconds = parseHrtimeToSeconds(process.hrtime(startTime)); - res.setHeader('xc-db-response', elapsedSeconds); - return responseData; + res.json(responseData); } @Get([ diff --git a/packages/nocodb-nest/src/modules/datas/datas.controller.ts b/packages/nocodb-nest/src/modules/datas/datas.controller.ts index 9d61bba23f..67c4f6245f 100644 --- a/packages/nocodb-nest/src/modules/datas/datas.controller.ts +++ b/packages/nocodb-nest/src/modules/datas/datas.controller.ts @@ -11,7 +11,7 @@ import { import { Acl } from '../../middlewares/extract-project-id/extract-project-id.middleware'; import { DatasService } from './datas.service'; -@Controller('datas') +@Controller() export class DatasController { constructor(private readonly datasService: DatasService) {} diff --git a/packages/nocodb-nest/src/modules/datas/datas.module.ts b/packages/nocodb-nest/src/modules/datas/datas.module.ts index 8d20c08de3..771c0800da 100644 --- a/packages/nocodb-nest/src/modules/datas/datas.module.ts +++ b/packages/nocodb-nest/src/modules/datas/datas.module.ts @@ -10,10 +10,10 @@ import { DataAliasNestedService } from './data-alias-nested/data-alias-nested.se @Module({ controllers: [ + DataAliasController, DatasController, BulkDataAliasController, DataAliasExportController, - DataAliasController, OldDatasController, ], providers: [DatasService, BulkDataAliasService, DataAliasNestedService] diff --git a/packages/nocodb-nest/src/modules/datas/old-datas/old-datas.controller.ts b/packages/nocodb-nest/src/modules/datas/old-datas/old-datas.controller.ts index cd5c19af21..63abf5ee96 100644 --- a/packages/nocodb-nest/src/modules/datas/old-datas/old-datas.controller.ts +++ b/packages/nocodb-nest/src/modules/datas/old-datas/old-datas.controller.ts @@ -1,4 +1,7 @@ -import { Controller } from '@nestjs/common'; +import { Controller, UseGuards } from '@nestjs/common' +import { ExtractProjectIdMiddleware } from '../../../middlewares/extract-project-id/extract-project-id.middleware' +import { AuthGuard } from '@nestjs/passport' -@Controller('old-datas') +@Controller() +@UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class OldDatasController {} diff --git a/packages/nocodb-nest/src/modules/form-columns/form-columns.controller.ts b/packages/nocodb-nest/src/modules/form-columns/form-columns.controller.ts index b3efdf6f73..12620e60d8 100644 --- a/packages/nocodb-nest/src/modules/form-columns/form-columns.controller.ts +++ b/packages/nocodb-nest/src/modules/form-columns/form-columns.controller.ts @@ -8,7 +8,7 @@ import { AuthGuard } from '@nestjs/passport'; class FormColumnUpdateReqType {} -@Controller('form-columns') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class FormColumnsController { constructor(private readonly formColumnsService: FormColumnsService) {} diff --git a/packages/nocodb-nest/src/modules/forms/forms.controller.ts b/packages/nocodb-nest/src/modules/forms/forms.controller.ts index 6a650a81b6..1363fc038d 100644 --- a/packages/nocodb-nest/src/modules/forms/forms.controller.ts +++ b/packages/nocodb-nest/src/modules/forms/forms.controller.ts @@ -15,7 +15,7 @@ import { import { FormsService } from './forms.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('forms') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class FormsController { constructor(private readonly formsService: FormsService) {} diff --git a/packages/nocodb-nest/src/modules/galleries/galleries.controller.ts b/packages/nocodb-nest/src/modules/galleries/galleries.controller.ts index d73dbfbc42..f07e93b21b 100644 --- a/packages/nocodb-nest/src/modules/galleries/galleries.controller.ts +++ b/packages/nocodb-nest/src/modules/galleries/galleries.controller.ts @@ -15,7 +15,7 @@ import { import { GalleriesService } from './galleries.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('galleries') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class GalleriesController { constructor(private readonly galleriesService: GalleriesService) {} diff --git a/packages/nocodb-nest/src/modules/grid-columns/grid-columns.controller.ts b/packages/nocodb-nest/src/modules/grid-columns/grid-columns.controller.ts index 4ea25ff549..ce6a22b530 100644 --- a/packages/nocodb-nest/src/modules/grid-columns/grid-columns.controller.ts +++ b/packages/nocodb-nest/src/modules/grid-columns/grid-columns.controller.ts @@ -7,7 +7,7 @@ import { import { GridColumnsService } from './grid-columns.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('grid-columns') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class GridColumnsController { constructor(private readonly gridColumnsService: GridColumnsService) {} diff --git a/packages/nocodb-nest/src/modules/grids/grids.controller.ts b/packages/nocodb-nest/src/modules/grids/grids.controller.ts index f487805368..7223a5a445 100644 --- a/packages/nocodb-nest/src/modules/grids/grids.controller.ts +++ b/packages/nocodb-nest/src/modules/grids/grids.controller.ts @@ -14,7 +14,7 @@ import { import { GridsService } from './grids.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('grids') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class GridsController { get '/api/v1/db/meta/tables/:tableId/grids/'() { diff --git a/packages/nocodb-nest/src/modules/hook-filters/hook-filters.controller.ts b/packages/nocodb-nest/src/modules/hook-filters/hook-filters.controller.ts index 5e5d1dd6c6..2b5a00ca45 100644 --- a/packages/nocodb-nest/src/modules/hook-filters/hook-filters.controller.ts +++ b/packages/nocodb-nest/src/modules/hook-filters/hook-filters.controller.ts @@ -1,8 +1,7 @@ import { Controller } from '@nestjs/common'; import { HookFiltersService } from './hook-filters.service'; -@Controller('hook-filters') +@Controller() export class HookFiltersController { constructor(private readonly hookFiltersService: HookFiltersService) {} - } diff --git a/packages/nocodb-nest/src/modules/hooks/hooks.controller.ts b/packages/nocodb-nest/src/modules/hooks/hooks.controller.ts index 498f12f15e..ca6166792d 100644 --- a/packages/nocodb-nest/src/modules/hooks/hooks.controller.ts +++ b/packages/nocodb-nest/src/modules/hooks/hooks.controller.ts @@ -18,7 +18,7 @@ import { import { HooksService } from './hooks.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('hooks') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class HooksController { constructor(private readonly hooksService: HooksService) {} diff --git a/packages/nocodb-nest/src/modules/import/import.controller.ts b/packages/nocodb-nest/src/modules/import/import.controller.ts index 63eb4ec767..a5196173e5 100644 --- a/packages/nocodb-nest/src/modules/import/import.controller.ts +++ b/packages/nocodb-nest/src/modules/import/import.controller.ts @@ -77,7 +77,7 @@ export default ( delete jobs[payload?.id]; }); }; -@Controller('import') +@Controller() export class ImportController { constructor(private readonly importService: ImportService) {} diff --git a/packages/nocodb-nest/src/modules/kanbans/kanbans.controller.ts b/packages/nocodb-nest/src/modules/kanbans/kanbans.controller.ts index 02003df3c4..a4754542e2 100644 --- a/packages/nocodb-nest/src/modules/kanbans/kanbans.controller.ts +++ b/packages/nocodb-nest/src/modules/kanbans/kanbans.controller.ts @@ -15,7 +15,7 @@ import { import { KanbansService } from './kanbans.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('kanbans') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class KanbansController { constructor(private readonly kanbansService: KanbansService) {} diff --git a/packages/nocodb-nest/src/modules/maps/maps.controller.ts b/packages/nocodb-nest/src/modules/maps/maps.controller.ts index b7f57c3caf..a3be956667 100644 --- a/packages/nocodb-nest/src/modules/maps/maps.controller.ts +++ b/packages/nocodb-nest/src/modules/maps/maps.controller.ts @@ -15,7 +15,7 @@ import { import { MapsService } from './maps.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('maps') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class MapsController { constructor(private readonly mapsService: MapsService) {} diff --git a/packages/nocodb-nest/src/modules/meta-diffs/meta-diffs.controller.ts b/packages/nocodb-nest/src/modules/meta-diffs/meta-diffs.controller.ts index a3a9d016ba..25a39e5d42 100644 --- a/packages/nocodb-nest/src/modules/meta-diffs/meta-diffs.controller.ts +++ b/packages/nocodb-nest/src/modules/meta-diffs/meta-diffs.controller.ts @@ -6,7 +6,7 @@ import { import { MetaDiffsService } from './meta-diffs.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('meta-diffs') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class MetaDiffsController { constructor(private readonly metaDiffsService: MetaDiffsService) {} diff --git a/packages/nocodb-nest/src/modules/model-visibilities/model-visibilities.controller.ts b/packages/nocodb-nest/src/modules/model-visibilities/model-visibilities.controller.ts index 95b6f67b78..3f65ae8b79 100644 --- a/packages/nocodb-nest/src/modules/model-visibilities/model-visibilities.controller.ts +++ b/packages/nocodb-nest/src/modules/model-visibilities/model-visibilities.controller.ts @@ -14,7 +14,7 @@ import { import { ModelVisibilitiesService } from './model-visibilities.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('model-visibilities') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class ModelVisibilitiesController { constructor( diff --git a/packages/nocodb-nest/src/modules/org-lcense/org-lcense.controller.ts b/packages/nocodb-nest/src/modules/org-lcense/org-lcense.controller.ts index 3216403b97..5adfe0db09 100644 --- a/packages/nocodb-nest/src/modules/org-lcense/org-lcense.controller.ts +++ b/packages/nocodb-nest/src/modules/org-lcense/org-lcense.controller.ts @@ -3,7 +3,7 @@ import { OrgUserRoles } from 'nocodb-sdk'; import { Acl } from '../../middlewares/extract-project-id/extract-project-id.middleware'; import { OrgLcenseService } from './org-lcense.service'; -@Controller('org-lcense') +@Controller() export class OrgLcenseController { constructor(private readonly orgLcenseService: OrgLcenseService) {} diff --git a/packages/nocodb-nest/src/modules/org-tokens/org-tokens.controller.ts b/packages/nocodb-nest/src/modules/org-tokens/org-tokens.controller.ts index b782e83ad8..abc04dd801 100644 --- a/packages/nocodb-nest/src/modules/org-tokens/org-tokens.controller.ts +++ b/packages/nocodb-nest/src/modules/org-tokens/org-tokens.controller.ts @@ -19,7 +19,7 @@ import { OrgTokensService } from './org-tokens.service'; import { AuthGuard } from '@nestjs/passport'; @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) -@Controller('org-tokens') +@Controller() export class OrgTokensController { constructor( private readonly orgTokensService: OrgTokensService, diff --git a/packages/nocodb-nest/src/modules/org-users/org-users.controller.ts b/packages/nocodb-nest/src/modules/org-users/org-users.controller.ts index a3abf00c29..5d571e707a 100644 --- a/packages/nocodb-nest/src/modules/org-users/org-users.controller.ts +++ b/packages/nocodb-nest/src/modules/org-users/org-users.controller.ts @@ -14,7 +14,7 @@ import { Acl } from '../../middlewares/extract-project-id/extract-project-id.mid import { User } from '../../models'; import { OrgUsersService } from './org-users.service'; -@Controller('org-users') +@Controller() export class OrgUsersController { constructor(private readonly orgUsersService: OrgUsersService) {} diff --git a/packages/nocodb-nest/src/modules/plugins/plugins.controller.ts b/packages/nocodb-nest/src/modules/plugins/plugins.controller.ts index b96b7f2ddd..567090c383 100644 --- a/packages/nocodb-nest/src/modules/plugins/plugins.controller.ts +++ b/packages/nocodb-nest/src/modules/plugins/plugins.controller.ts @@ -10,7 +10,7 @@ const blockInCloudMw = (_req, res, next) => { } else next(); }; -@Controller('plugins') +@Controller() export class PluginsController { constructor(private readonly pluginsService: PluginsService) {} diff --git a/packages/nocodb-nest/src/modules/project-users/project-users.controller.ts b/packages/nocodb-nest/src/modules/project-users/project-users.controller.ts index 1c6d335659..df71ec566c 100644 --- a/packages/nocodb-nest/src/modules/project-users/project-users.controller.ts +++ b/packages/nocodb-nest/src/modules/project-users/project-users.controller.ts @@ -18,7 +18,7 @@ import { ProjectUsersService } from './project-users.service'; import { AuthGuard } from '@nestjs/passport'; @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) -@Controller('project-users') +@Controller() export class ProjectUsersController { constructor(private readonly projectUsersService: ProjectUsersService) {} diff --git a/packages/nocodb-nest/src/modules/projects/projects.service.ts b/packages/nocodb-nest/src/modules/projects/projects.service.ts index 42ae165ac5..92c048f47a 100644 --- a/packages/nocodb-nest/src/modules/projects/projects.service.ts +++ b/packages/nocodb-nest/src/modules/projects/projects.service.ts @@ -11,14 +11,17 @@ import syncMigration from '../../helpers/syncMigration'; import { Project, ProjectUser } from '../../models'; import { T } from 'nc-help'; import Noco from '../../Noco'; +import extractRolesObj from '../../utils/extractRolesObj' import NcConfigFactory from '../../utils/NcConfigFactory'; const nanoid = customAlphabet('1234567890abcdefghijklmnopqrstuvwxyz_', 4); @Injectable() export class ProjectsService { - async list(param: { user: { id: string; roles: string }; query?: any }) { - const projects = param.user?.roles?.includes(OrgUserRoles.SUPER_ADMIN) + async list(param: { user: { id: string; roles: Record }; query?: any }) { + const projects = extractRolesObj(param.user?.roles)[ + OrgUserRoles.SUPER_ADMIN + ] ? await Project.list(param.query) : await ProjectUser.getProjectsList(param.user.id, param.query); diff --git a/packages/nocodb-nest/src/modules/public-datas-export/public-datas-export.controller.ts b/packages/nocodb-nest/src/modules/public-datas-export/public-datas-export.controller.ts index ce7edb120e..fba631708b 100644 --- a/packages/nocodb-nest/src/modules/public-datas-export/public-datas-export.controller.ts +++ b/packages/nocodb-nest/src/modules/public-datas-export/public-datas-export.controller.ts @@ -17,7 +17,7 @@ import { nocoExecute } from 'nc-help'; import papaparse from 'papaparse'; import { serializeCellValue } from '../datas/helpers'; -@Controller('public-datas-export') +@Controller() export class PublicDatasExportController { constructor( private readonly publicDatasExportService: PublicDatasExportService, diff --git a/packages/nocodb-nest/src/modules/public-datas/public-datas.controller.ts b/packages/nocodb-nest/src/modules/public-datas/public-datas.controller.ts index 064e908d80..de9fe8c3d0 100644 --- a/packages/nocodb-nest/src/modules/public-datas/public-datas.controller.ts +++ b/packages/nocodb-nest/src/modules/public-datas/public-datas.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Param, Post, Request } from '@nestjs/common'; import { PublicDatasService } from './public-datas.service'; -@Controller('public-datas') +@Controller() export class PublicDatasController { constructor(private readonly publicDatasService: PublicDatasService) {} diff --git a/packages/nocodb-nest/src/modules/public-metas/public-metas.controller.ts b/packages/nocodb-nest/src/modules/public-metas/public-metas.controller.ts index 60add2b1d5..b09e7bcc8b 100644 --- a/packages/nocodb-nest/src/modules/public-metas/public-metas.controller.ts +++ b/packages/nocodb-nest/src/modules/public-metas/public-metas.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Request, Param } from '@nestjs/common'; import { PublicMetasService } from './public-metas.service'; -@Controller('public-metas') +@Controller() export class PublicMetasController { constructor(private readonly publicMetasService: PublicMetasService) {} diff --git a/packages/nocodb-nest/src/modules/shared-bases/shared-bases.controller.ts b/packages/nocodb-nest/src/modules/shared-bases/shared-bases.controller.ts index d7d5d9a688..365be5ef36 100644 --- a/packages/nocodb-nest/src/modules/shared-bases/shared-bases.controller.ts +++ b/packages/nocodb-nest/src/modules/shared-bases/shared-bases.controller.ts @@ -13,7 +13,7 @@ import { import { SharedBasesService } from './shared-bases.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('shared-bases') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class SharedBasesController { constructor(private readonly sharedBasesService: SharedBasesService) {} diff --git a/packages/nocodb-nest/src/modules/sync/sync.controller.ts b/packages/nocodb-nest/src/modules/sync/sync.controller.ts index aa5c75aba3..437822b0bc 100644 --- a/packages/nocodb-nest/src/modules/sync/sync.controller.ts +++ b/packages/nocodb-nest/src/modules/sync/sync.controller.ts @@ -11,7 +11,7 @@ import { import { Acl } from '../../middlewares/extract-project-id/extract-project-id.middleware'; import { SyncService } from './sync.service'; -@Controller('sync') +@Controller() export class SyncController { constructor(private readonly syncService: SyncService) {} diff --git a/packages/nocodb-nest/src/modules/test/test.controller.ts b/packages/nocodb-nest/src/modules/test/test.controller.ts index a1abd8a988..de44117578 100644 --- a/packages/nocodb-nest/src/modules/test/test.controller.ts +++ b/packages/nocodb-nest/src/modules/test/test.controller.ts @@ -2,7 +2,7 @@ import { Controller, Post, Req } from '@nestjs/common'; import { TestService } from './test.service'; import { TestResetService } from './TestResetService'; -@Controller('test') +@Controller() export class TestController { constructor(private readonly testService: TestService) {} diff --git a/packages/nocodb-nest/src/modules/utils/utils.controller.ts b/packages/nocodb-nest/src/modules/utils/utils.controller.ts index c81778aa45..c04e7cdfe1 100644 --- a/packages/nocodb-nest/src/modules/utils/utils.controller.ts +++ b/packages/nocodb-nest/src/modules/utils/utils.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; import { UtilsService } from './utils.service'; -@Controller('/') +@Controller() export class UtilsController { constructor(private readonly utilsService: UtilsService) {} diff --git a/packages/nocodb-nest/src/modules/view-columns/view-columns.controller.ts b/packages/nocodb-nest/src/modules/view-columns/view-columns.controller.ts index 97d4bc4699..00e8223076 100644 --- a/packages/nocodb-nest/src/modules/view-columns/view-columns.controller.ts +++ b/packages/nocodb-nest/src/modules/view-columns/view-columns.controller.ts @@ -16,7 +16,7 @@ import { import { ViewColumnsService } from './view-columns.service'; import { AuthGuard } from '@nestjs/passport'; -@Controller('view-columns') +@Controller() @UseGuards(ExtractProjectIdMiddleware, AuthGuard('jwt')) export class ViewColumnsController { constructor(private readonly viewColumnsService: ViewColumnsService) {} diff --git a/packages/nocodb-nest/src/strategies/jwt.strategy.ts b/packages/nocodb-nest/src/strategies/jwt.strategy.ts index bda843c6f2..d08c66c108 100644 --- a/packages/nocodb-nest/src/strategies/jwt.strategy.ts +++ b/packages/nocodb-nest/src/strategies/jwt.strategy.ts @@ -26,7 +26,7 @@ export class JwtStrategy extends PassportStrategy(Strategy) { // todo: improve this if ( req.ncProjectId && - jwtPayload.roles?.split(',').includes(OrgUserRoles.SUPER_ADMIN) + extractRolesObj(jwtPayload.roles)[OrgUserRoles.SUPER_ADMIN] ) { return User.getByEmail(jwtPayload?.email).then(async (user) => { return { diff --git a/packages/nocodb-nest/src/utils/extractRolesObj.ts b/packages/nocodb-nest/src/utils/extractRolesObj.ts index 79affffecf..fb409dbdf0 100644 --- a/packages/nocodb-nest/src/utils/extractRolesObj.ts +++ b/packages/nocodb-nest/src/utils/extractRolesObj.ts @@ -1,4 +1,4 @@ -export default (roles: string | string[]) => { +export default (roles) => { if(!roles) return {}; if(typeof roles === 'object' && !Array.isArray(roles)) return roles;