From 3e0c483b57cc177e4ab6eb82401fa2f7cf4de341 Mon Sep 17 00:00:00 2001 From: "makabe.t" Date: Mon, 2 Oct 2023 07:13:34 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20456:=20NestJS=E3=81=AE=E7=92=B0?= =?UTF-8?q?=E5=A2=83=E5=A4=89=E6=95=B0=E3=82=92=E6=95=B4=E7=90=86=E3=81=97?= =?UTF-8?q?=E3=81=A6=E3=83=90=E3=83=AA=E3=83=87=E3=83=BC=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task2769: NestJSの環境変数を整理してバリデーションを修正](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2769) - 非必須の環境変数をチェックしないようにオプショナルを修正しました - ローカルでのDBマイグレーションに必要なため、コンテナ起動時の`.env`ファイル読み込みを追加しました。 - 環境変数についてDB関連項目を残し、すべて`.env.local`に移動しました。 ## レビューポイント - 環境変数に対するチェックのオプショナル設定は適切か - 環境変数をlocalに移動させたが問題ないか。 ## UIの変更 - なし ## 動作確認状況 - ローカルで確認 ## 補足 - 不足している環境変数についてレビュー完了後にAppService、Wikiを整備しておきます。 --- .../.devcontainer/docker-compose.yml | 1 + dictation_server/.env | 11 --- dictation_server/.env.local.example | 13 ++- .../src/common/validators/env.validator.ts | 90 ++++++++----------- 4 files changed, 45 insertions(+), 70 deletions(-) diff --git a/dictation_server/.devcontainer/docker-compose.yml b/dictation_server/.devcontainer/docker-compose.yml index c3de580..47cf396 100644 --- a/dictation_server/.devcontainer/docker-compose.yml +++ b/dictation_server/.devcontainer/docker-compose.yml @@ -2,6 +2,7 @@ version: '3' services: dictation_server: + env_file: ../.env build: . working_dir: /app/dictation_server ports: diff --git a/dictation_server/.env b/dictation_server/.env index eba8c6a..c104e29 100644 --- a/dictation_server/.env +++ b/dictation_server/.env @@ -1,16 +1,5 @@ DB_HOST=omds-mysql DB_PORT=3306 -DB_EXTERNAL_PORT=3306 DB_NAME=omds -DB_ROOT_PASS=omdsdbpass DB_USERNAME=omdsdbuser DB_PASSWORD=omdsdbpass -NO_COLOR=TRUE -ACCESS_TOKEN_LIFETIME_WEB=7200000 -REFRESH_TOKEN_LIFETIME_WEB=86400000 -REFRESH_TOKEN_LIFETIME_DEFAULT=2592000000 -TENANT_NAME=adb2codmsdev -SIGNIN_FLOW_NAME=b2c_1_signin_dev -EMAIL_CONFIRM_LIFETIME=86400000 -APP_DOMAIN=https://10.1.0.10:4443/ -STORAGE_TOKEN_EXPIRE_TIME=2 \ No newline at end of file diff --git a/dictation_server/.env.local.example b/dictation_server/.env.local.example index e54ab26..eda234a 100644 --- a/dictation_server/.env.local.example +++ b/dictation_server/.env.local.example @@ -1,10 +1,10 @@ STAGE=local +NO_COLOR=TRUE CORS=TRUE PORT=8081 -AZURE_TENANT_ID=xxxxxxxx -AZURE_CLIENT_ID=xxxxxxxx -AZURE_CLIENT_SECRET=xxxxxxxx # 開発環境ではADB2Cが別テナントになる都合上、環境変数を分けている +TENANT_NAME=adb2codmsdev +SIGNIN_FLOW_NAME=b2c_1_signin_dev ADB2C_TENANT_ID=xxxxxxxx ADB2C_CLIENT_ID=xxxxxxxx ADB2C_CLIENT_SECRET=xxxxxxxx @@ -17,6 +17,7 @@ MAIL_FROM=xxxxx@xxxxx.xxxx NOTIFICATION_HUB_NAME=ntf-odms-dev NOTIFICATION_HUB_CONNECT_STRING=XXXXXXXXXXXXXXXXXX APP_DOMAIN=http://localhost:8081/ +STORAGE_TOKEN_EXPIRE_TIME=30 STORAGE_ACCOUNT_NAME_US=saodmsusdev STORAGE_ACCOUNT_NAME_AU=saodmsaudev STORAGE_ACCOUNT_NAME_EU=saodmseudev @@ -25,4 +26,8 @@ STORAGE_ACCOUNT_KEY_AU=XXXXXXXXXXXXXXXXXXXXXXX STORAGE_ACCOUNT_KEY_EU=XXXXXXXXXXXXXXXXXXXXXXX STORAGE_ACCOUNT_ENDPOINT_US=https://AAAAAAAAAAAAA STORAGE_ACCOUNT_ENDPOINT_AU=https://AAAAAAAAAAAAA -STORAGE_ACCOUNT_ENDPOINT_EU=https://AAAAAAAAAAAAA \ No newline at end of file +STORAGE_ACCOUNT_ENDPOINT_EU=https://AAAAAAAAAAAAA +ACCESS_TOKEN_LIFETIME_WEB=7200000 +REFRESH_TOKEN_LIFETIME_WEB=86400000 +REFRESH_TOKEN_LIFETIME_DEFAULT=2592000000 +EMAIL_CONFIRM_LIFETIME=86400000 \ No newline at end of file diff --git a/dictation_server/src/common/validators/env.validator.ts b/dictation_server/src/common/validators/env.validator.ts index 9ceea2a..22cfbfe 100644 --- a/dictation_server/src/common/validators/env.validator.ts +++ b/dictation_server/src/common/validators/env.validator.ts @@ -20,18 +20,10 @@ export class EnvValidator { @IsNumber() DB_PORT: number; - @IsNotEmpty() - @IsNumber() - DB_EXTERNAL_PORT: number; - @IsNotEmpty() @IsString() DB_NAME: string; - @IsNotEmpty() - @IsString() - DB_ROOT_PASS: string; - @IsNotEmpty() @IsString() DB_USERNAME: string; @@ -40,21 +32,22 @@ export class EnvValidator { @IsString() DB_PASSWORD: string; + // .env.local + @IsOptional() + @IsString() + STAGE: string; + @IsOptional() @IsString() NO_COLOR: string; - @IsNotEmpty() - @IsNumber() - ACCESS_TOKEN_LIFETIME_WEB: number; + @IsOptional() + @IsString() + CORS: string; - @IsNotEmpty() + @IsOptional() @IsNumber() - REFRESH_TOKEN_LIFETIME_WEB: number; - - @IsNotEmpty() - @IsNumber() - REFRESH_TOKEN_LIFETIME_DEFAULT: number; + PORT: number; @IsNotEmpty() @IsString() @@ -64,43 +57,6 @@ export class EnvValidator { @IsString() SIGNIN_FLOW_NAME: string; - @IsNotEmpty() - @IsNumber() - EMAIL_CONFIRM_LIFETIME: number; - - @IsNotEmpty() - @IsString() - APP_DOMAIN: string; - - @IsNotEmpty() - @IsNumber() - STORAGE_TOKEN_EXPIRE_TIME: number; - - // .env.local - @IsOptional() - @IsString() - STAGE: string; - - @IsOptional() - @IsString() - CORS: string; - - @IsNotEmpty() - @IsNumber() - PORT: number; - - @IsNotEmpty() - @IsString() - AZURE_TENANT_ID: string; - - @IsNotEmpty() - @IsString() - AZURE_CLIENT_ID: string; - - @IsNotEmpty() - @IsString() - AZURE_CLIENT_SECRET: string; - @IsNotEmpty() @IsString() ADB2C_TENANT_ID: string; @@ -113,7 +69,7 @@ export class EnvValidator { @IsString() ADB2C_CLIENT_SECRET: string; - @IsNotEmpty() + @IsOptional() @IsString() ADB2C_ORIGIN: string; @@ -145,6 +101,14 @@ export class EnvValidator { @IsString() NOTIFICATION_HUB_CONNECT_STRING: string; + @IsNotEmpty() + @IsString() + APP_DOMAIN: string; + + @IsNotEmpty() + @IsNumber() + STORAGE_TOKEN_EXPIRE_TIME: number; + @IsNotEmpty() @IsString() STORAGE_ACCOUNT_NAME_US: string; @@ -180,6 +144,22 @@ export class EnvValidator { @IsNotEmpty() @IsString() STORAGE_ACCOUNT_ENDPOINT_EU: string; + + @IsNotEmpty() + @IsNumber() + ACCESS_TOKEN_LIFETIME_WEB: number; + + @IsNotEmpty() + @IsNumber() + REFRESH_TOKEN_LIFETIME_WEB: number; + + @IsNotEmpty() + @IsNumber() + REFRESH_TOKEN_LIFETIME_DEFAULT: number; + + @IsNotEmpty() + @IsNumber() + EMAIL_CONFIRM_LIFETIME: number; } export function validate(config: Record) {