Yuki Takei 1 год назад
Родитель
Сommit
0b76fbbc67

+ 0 - 4
apps/app/src/server/service/config-manager/config-loader.ts

@@ -54,10 +54,6 @@ export class ConfigLoader implements IConfigLoader<ConfigKey, ConfigValues> {
     return dbConfig;
   }
 
-  getManagedEnvVars(includeSecret: boolean): Record<string, string> {
-    return configUtils.getManagedEnvVars(Object.values(CONFIG_DEFINITIONS), includeSecret);
-  }
-
   private parseEnvValue(value: string, type: string): unknown {
     switch (type) {
       case 'number':

+ 29 - 0
apps/app/src/server/service/config-manager/config-manager.spec.ts

@@ -82,4 +82,33 @@ describe('ConfigManager test', () => {
     });
   });
 
+  describe('getManagedEnvVars()', () => {
+
+    beforeAll(() => {
+      process.env.AUTO_INSTALL_ADMIN_USERNAME = 'admin';
+      process.env.AUTO_INSTALL_ADMIN_PASSWORD = 'password';
+
+      configManager.loadConfigs({ source: 'env' });
+    });
+
+    test('include secret', () => {
+      // act
+      const result = configManager.getManagedEnvVars(true);
+
+      // assert
+      expect(result.AUTO_INSTALL_ADMIN_USERNAME).toEqual('admin');
+      expect(result.AUTO_INSTALL_ADMIN_PASSWORD).toEqual('password');
+    });
+
+    test('exclude secret', () => {
+      // act
+      const result = configManager.getManagedEnvVars();
+
+      // assert
+      expect(result.AUTO_INSTALL_ADMIN_USERNAME).toEqual('admin');
+      expect(result.AUTO_INSTALL_ADMIN_PASSWORD).toEqual('***');
+    });
+
+  });
+
 });

+ 20 - 2
apps/app/src/server/service/config-manager/config-manager.ts

@@ -161,8 +161,26 @@ export class ConfigManager implements IConfigManager<ConfigKey, ConfigValues>, S
     };
   }
 
-  getManagedEnvVars(includeSecret = false): Record<string, string> {
-    return this.configLoader.getManagedEnvVars(includeSecret);
+  getManagedEnvVars(showSecretValues = false): Record<string, string> {
+    if (!this.envConfig) {
+      throw new Error('Config is not loaded');
+    }
+
+    const envVars = {} as Record<string, string>;
+
+    for (const { definition, value } of Object.values(this.envConfig)) {
+      if (definition.envVarName == null) {
+        continue;
+      }
+
+      const shouldBeMasked = definition.isSecret && !showSecretValues;
+
+      envVars[definition.envVarName] = shouldBeMasked
+        ? '***'
+        : String(value);
+    }
+
+    return envVars;
   }
 
   /**

+ 1 - 1
packages/core/src/interfaces/config-manager.ts

@@ -84,6 +84,6 @@ export interface IConfigManager<K extends string, V extends Record<K, any>> {
   /**
    * Get environment variables managed with ConfigDefinitions
    */
-  getManagedEnvVars(includeSecret: boolean): Record<string, string>;
+  getManagedEnvVars(showSecretValues: boolean): Record<string, string>;
 
 }

+ 0 - 29
packages/core/src/utils/config-utils.ts

@@ -1,29 +0,0 @@
-import type { ConfigDefinition } from '../interfaces/config-manager';
-
-export function getManagedEnvVars(
-    definitions: ConfigDefinition<unknown>[],
-    includeSecret: boolean,
-): Record<string, string> {
-  const envVars: Record<string, string> = {};
-
-  for (const metadata of definitions) {
-    const { envVarName } = metadata;
-    if (envVarName == null) {
-      continue;
-    }
-
-    const envVarValue = process.env[envVarName];
-    if (envVarValue == null) {
-      continue;
-    }
-
-    // skip secret
-    if (metadata.isSecret && !includeSecret) {
-      continue;
-    }
-
-    envVars[envVarName] = envVarValue;
-  }
-
-  return envVars;
-}