From 5093c57cf97cea6f78e4e262afc1cf711921a402 Mon Sep 17 00:00:00 2001 From: Alex Tran Date: Mon, 7 Mar 2022 14:54:46 -0600 Subject: [PATCH] Added schema validation for mapbox secret from server --- docker/.env.example | 7 ++++++- .../api-v1/server-info/server-info.controller.ts | 16 ++++++++++++++-- server/src/config/app.config.ts | 6 ++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/docker/.env.example b/docker/.env.example index 0ea603a6e6..2298bf31a1 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -10,4 +10,9 @@ DB_DATABASE_NAME= UPLOAD_LOCATION=absolute_location_on_your_machine_where_you_want_to_store_the_backup # JWT SECRET -JWT_SECRET= \ No newline at end of file +JWT_SECRET= + +# MAPBOX +## ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY +ENABLE_MAPBOX= +MAPBOX_KEY= \ No newline at end of file diff --git a/server/src/api-v1/server-info/server-info.controller.ts b/server/src/api-v1/server-info/server-info.controller.ts index de6f9ece54..0c7016a2db 100644 --- a/server/src/api-v1/server-info/server-info.controller.ts +++ b/server/src/api-v1/server-info/server-info.controller.ts @@ -1,9 +1,12 @@ -import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; +import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { AuthUserDto, GetAuthUser } from '../../decorators/auth-user.decorator'; +import { JwtAuthGuard } from '../../modules/immich-jwt/guards/jwt-auth.guard'; import { ServerInfoService } from './server-info.service'; @Controller('server-info') export class ServerInfoController { - constructor(private readonly serverInfoService: ServerInfoService) {} + constructor(private readonly serverInfoService: ServerInfoService, private readonly configService: ConfigService) {} @Get() async getServerInfo() { @@ -16,4 +19,13 @@ export class ServerInfoController { res: 'pong', }; } + + @UseGuards(JwtAuthGuard) + @Get('/mapbox') + async getMapboxInfo(@GetAuthUser() authUser: AuthUserDto) { + return { + isEnable: this.configService.get('ENABLE_MAPBOX'), + mapboxSecret: this.configService.get('MAPBOX_KEY'), + }; + } } diff --git a/server/src/config/app.config.ts b/server/src/config/app.config.ts index 1abc0db216..21e156fe75 100644 --- a/server/src/config/app.config.ts +++ b/server/src/config/app.config.ts @@ -11,5 +11,11 @@ export const immichAppConfig: ConfigModuleOptions = { DB_DATABASE_NAME: Joi.string().required(), UPLOAD_LOCATION: Joi.string().required(), JWT_SECRET: Joi.string().required(), + ENABLE_MAPBOX: Joi.boolean().required().valid(true, false), + MAPBOX_KEY: Joi.any().when('ENABLE_MAPBOX', { + is: true, + then: Joi.string().required(), + otherwise: Joi.string().optional, + }), }), };