@@ -35,7 +35,7 @@ import { getPlatformCrypto } from '../../utils/platformCrypto';
3535import { memoize } from '../../utils/memoize' ;
3636import { logAuthInfo } from './providers-logger' ;
3737import { isNotEmptyField } from '../../database/utils' ;
38- import { enrichWithRemoteCredentials , getRemoteCredentialsProviderSelector } from '../../config/credentials' ;
38+ import { enrichWithRemoteCredentials , getRemoteCredentialsFields , getRemoteCredentialsProviderSelector } from '../../config/credentials' ;
3939
4040// Type for data that are encrypted
4141const getKeyPair = memoize ( async ( ) => {
@@ -79,15 +79,22 @@ export const buildSecretInfos = (
7979 return result ;
8080} ;
8181
82+ const secretFieldNameSeparator = ':' ;
83+
8284export const getAvailableSecrets = ( ) : AvailableSecretInfo [ ] => {
8385 const secrets = conf . get ( 'secrets' ) ;
8486 if ( ! secrets || typeof secrets !== 'object' ) {
8587 return [ ] ;
8688 }
8789 return Object . keys ( secrets ) . flatMap ( ( name ) => {
88- const provider = getRemoteCredentialsProviderSelector ( `secrets:${ name } ` ) ;
90+ const prefix = `secrets:${ name } ` ;
91+ const provider = getRemoteCredentialsProviderSelector ( prefix ) ;
8992 if ( provider ) {
90- return { provider_name : provider , secret_name : name } ;
93+ const secretFields = getRemoteCredentialsFields ( prefix ) ;
94+ return secretFields . map ( ( field ) => ( {
95+ provider_name : provider ,
96+ secret_name : `${ name } ${ secretFieldNameSeparator } ${ field } ` ,
97+ } ) ) ;
9198 }
9299 if ( conf . get ( `secrets:${ name } :value` ) ) {
93100 return { provider_name : 'env' , secret_name : name } ;
@@ -96,8 +103,9 @@ export const getAvailableSecrets = (): AvailableSecretInfo[] => {
96103 } ) ;
97104} ;
98105
99- const getSecretValueByName = async ( secretName : string , fieldName : string ) : Promise < string | undefined > => {
100- const prefix = `secrets:${ secretName } ` ;
106+ const getSecretValueByName = async ( secretName : string ) : Promise < string | undefined > => {
107+ const [ name , fieldName ] = secretName . split ( secretFieldNameSeparator ) ;
108+ const prefix = `secrets:${ name } ` ;
101109 if ( getRemoteCredentialsProviderSelector ( prefix ) ) {
102110 const enriched = await enrichWithRemoteCredentials ( prefix , { } ) ;
103111 return enriched [ fieldName ] ;
@@ -109,7 +117,7 @@ export const retrieveSecrets = async (config: any): Promise<SecretProvider> => {
109117 const resolve = async ( field : string ) : Promise < string | undefined > => {
110118 const secretName = config [ `${ field } _ref` ] ;
111119 if ( isNotEmptyField ( secretName ) ) {
112- return getSecretValueByName ( secretName , field ) ;
120+ return getSecretValueByName ( secretName ) ;
113121 }
114122 const encryptedValue = config [ `${ field } _encrypted` ] ;
115123 if ( isNotEmptyField ( encryptedValue ) ) {
0 commit comments