mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-12 16:29:14 +00:00
Draft refactor core secrets fn into reusable factories
This commit is contained in:
@@ -32,7 +32,10 @@ import { TSecretFolderDALFactory } from "@app/services/secret-folder/secret-fold
|
||||
import { TSecretTagDALFactory } from "@app/services/secret-tag/secret-tag-dal";
|
||||
|
||||
import { TIntegrationDALFactory } from "../integration/integration-dal";
|
||||
import { createManySecretsRawHelper, updateManySecretsRawHelper } from "../secret/secret-fns";
|
||||
import {
|
||||
createManySecretsRawHelper
|
||||
// updateManySecretsRawHelper
|
||||
} from "../secret/secret-fns";
|
||||
import { Integrations, IntegrationSyncBehavior, IntegrationUrls } from "./integration-list";
|
||||
|
||||
const getSecretKeyValuePair = (secrets: Record<string, { value: string | null; comment?: string } | null>) =>
|
||||
@@ -589,7 +592,6 @@ const syncSecretsAWSSecretManager = async ({
|
||||
|
||||
/**
|
||||
* Sync/push [secrets] to Heroku app named [integration.app]
|
||||
* server.services...
|
||||
*/
|
||||
const syncSecretsHeroku = async ({
|
||||
projectDAL,
|
||||
@@ -609,7 +611,7 @@ const syncSecretsHeroku = async ({
|
||||
accessToken
|
||||
}: {
|
||||
projectDAL: TProjectDALFactory;
|
||||
integrationDAL: TIntegrationDALFactory;
|
||||
integrationDAL: Pick<TIntegrationDALFactory, "updateById">;
|
||||
secretDAL: TSecretDALFactory;
|
||||
secretVersionDAL: TSecretVersionDALFactory;
|
||||
secretBlindIndexDAL: TSecretBlindIndexDALFactory;
|
||||
@@ -696,27 +698,27 @@ const syncSecretsHeroku = async ({
|
||||
});
|
||||
}
|
||||
|
||||
if (Object.keys(secretsToUpdate).length) {
|
||||
await updateManySecretsRawHelper({
|
||||
projectId,
|
||||
environment,
|
||||
path: secretPath,
|
||||
secrets: Object.keys(secretsToUpdate).map((key) => ({
|
||||
secretName: key,
|
||||
secretValue: secretsToUpdate[key],
|
||||
type: SecretType.Shared,
|
||||
secretComment: ""
|
||||
})),
|
||||
botKey, // TODO: consider getting botKey inside this fn
|
||||
projectDAL,
|
||||
secretDAL,
|
||||
secretVersionDAL,
|
||||
secretBlindIndexDAL,
|
||||
secretTagDAL,
|
||||
secretVersionTagDAL,
|
||||
folderDAL
|
||||
});
|
||||
}
|
||||
// if (Object.keys(secretsToUpdate).length) {
|
||||
// await updateManySecretsRawHelper({
|
||||
// projectId,
|
||||
// environment,
|
||||
// path: secretPath,
|
||||
// secrets: Object.keys(secretsToUpdate).map((key) => ({
|
||||
// secretName: key,
|
||||
// secretValue: secretsToUpdate[key],
|
||||
// type: SecretType.Shared,
|
||||
// secretComment: ""
|
||||
// })),
|
||||
// botKey, // TODO: consider getting botKey inside this fn
|
||||
// projectDAL,
|
||||
// secretDAL,
|
||||
// secretVersionDAL,
|
||||
// secretBlindIndexDAL,
|
||||
// secretTagDAL,
|
||||
// secretVersionTagDAL,
|
||||
// folderDAL
|
||||
// });
|
||||
// }
|
||||
|
||||
await request.patch(
|
||||
`${IntegrationUrls.HEROKU_API_URL}/apps/${integration.app}/config-vars`,
|
||||
@@ -3071,7 +3073,7 @@ export const syncIntegrationSecrets = async ({
|
||||
appendices
|
||||
}: {
|
||||
projectDAL: TProjectDALFactory;
|
||||
integrationDAL: TIntegrationDALFactory;
|
||||
integrationDAL: Pick<TIntegrationDALFactory, "updateById">;
|
||||
secretDAL: TSecretDALFactory;
|
||||
secretVersionDAL: TSecretVersionDALFactory;
|
||||
secretBlindIndexDAL: TSecretBlindIndexDALFactory;
|
||||
|
||||
@@ -25,7 +25,8 @@ import {
|
||||
TFnSecretBlindIndexCheck,
|
||||
TFnSecretBulkInsert,
|
||||
TFnSecretBulkUpdate,
|
||||
TUpdateManySecretsRawHelper
|
||||
TUpdateManySecretsRawFn,
|
||||
TUpdateManySecretsRawFnFactory
|
||||
} from "./secret-types";
|
||||
|
||||
export const generateSecretBlindIndexBySalt = async (secretName: string, secretBlindIndexDoc: TSecretBlindIndexes) => {
|
||||
@@ -500,13 +501,15 @@ export const createManySecretsRawHelper = async ({
|
||||
return newSecrets;
|
||||
};
|
||||
|
||||
export const updateManySecretsRawHelper = async ({
|
||||
projectId,
|
||||
environment,
|
||||
path: secretPath,
|
||||
secrets,
|
||||
userId,
|
||||
botKey, // TODO: consider getting botKey inside this fn
|
||||
// TOOD: potentially convert raw stuff
|
||||
|
||||
// updateManySecretsRawFnFactory
|
||||
|
||||
// updateManySecretsRawHelper
|
||||
|
||||
export const updateManySecretsRawFnFactory = async ({
|
||||
// TODO: refactor
|
||||
botKey,
|
||||
projectDAL,
|
||||
secretDAL,
|
||||
secretVersionDAL,
|
||||
@@ -514,7 +517,16 @@ export const updateManySecretsRawHelper = async ({
|
||||
secretTagDAL,
|
||||
secretVersionTagDAL,
|
||||
folderDAL
|
||||
}: TUpdateManySecretsRawHelper) => {
|
||||
}: TUpdateManySecretsRawFnFactory) => {
|
||||
const updateManySecretsRawFn = async ({
|
||||
projectId,
|
||||
environment,
|
||||
path: secretPath,
|
||||
secrets, // accept instead ciphertext secrets
|
||||
userId
|
||||
}: TUpdateManySecretsRawFn) => {
|
||||
// TODO: fetch botKey from here
|
||||
|
||||
await projectDAL.checkProjectUpgradeStatus(projectId);
|
||||
|
||||
const folder = await folderDAL.findBySecretPath(projectId, environment, secretPath);
|
||||
@@ -557,7 +569,8 @@ export const updateManySecretsRawHelper = async ({
|
||||
message: "Failed to update personal secret override for no corresponding shared secret"
|
||||
});
|
||||
|
||||
if (secret.newSecretName) throw new BadRequestError({ message: "Personal secret cannot change the key name" });
|
||||
if (secret.newSecretName)
|
||||
throw new BadRequestError({ message: "Personal secret cannot change the key name" });
|
||||
}
|
||||
|
||||
const tags = secret.tags ? await secretTagDAL.findManyTagsById(projectId, secret.tags) : [];
|
||||
@@ -625,3 +638,6 @@ export const updateManySecretsRawHelper = async ({
|
||||
|
||||
return updatedSecrets;
|
||||
};
|
||||
|
||||
return updateManySecretsRawFn;
|
||||
};
|
||||
|
||||
@@ -29,6 +29,8 @@ import { TSecretDALFactory } from "./secret-dal";
|
||||
import { interpolateSecrets } from "./secret-fns";
|
||||
import { TCreateSecretReminderDTO, THandleReminderDTO, TRemoveSecretReminderDTO } from "./secret-types";
|
||||
|
||||
// import { updateManySecretsRawFnFactory } from "@app/services/secret/secret-fns";
|
||||
|
||||
export type TSecretQueueFactory = ReturnType<typeof secretQueueFactory>;
|
||||
|
||||
type TSecretQueueFactoryDep = {
|
||||
@@ -318,6 +320,17 @@ export const secretQueueFactory = ({
|
||||
});
|
||||
}
|
||||
|
||||
// const updateManySecretsRawFn = updateManySecretsRawFnFactory({
|
||||
// botKey, // can move this out
|
||||
// projectDAL,
|
||||
// secretDAL,
|
||||
// secretVersionDAL,
|
||||
// secretBlindIndexDAL,
|
||||
// secretTagDAL,
|
||||
// secretVersionTagDAL,
|
||||
// folderDAL
|
||||
// });
|
||||
|
||||
await syncIntegrationSecrets({
|
||||
projectDAL,
|
||||
integrationDAL,
|
||||
@@ -328,7 +341,7 @@ export const secretQueueFactory = ({
|
||||
secretVersionTagDAL,
|
||||
folderDAL,
|
||||
botKey,
|
||||
projectId,
|
||||
projectId, // service
|
||||
environment,
|
||||
secretPath,
|
||||
integration,
|
||||
|
||||
@@ -274,7 +274,18 @@ export type TCreateManySecretsRawHelper = {
|
||||
folderDAL: TSecretFolderDALFactory;
|
||||
};
|
||||
|
||||
export type TUpdateManySecretsRawHelper = {
|
||||
export type TUpdateManySecretsRawFnFactory = {
|
||||
botKey: string;
|
||||
projectDAL: TProjectDALFactory;
|
||||
secretDAL: TSecretDALFactory;
|
||||
secretVersionDAL: TSecretVersionDALFactory;
|
||||
secretBlindIndexDAL: TSecretBlindIndexDALFactory;
|
||||
secretTagDAL: TSecretTagDALFactory;
|
||||
secretVersionTagDAL: TSecretVersionTagDALFactory;
|
||||
folderDAL: TSecretFolderDALFactory;
|
||||
};
|
||||
|
||||
export type TUpdateManySecretsRawFn = {
|
||||
projectId: string;
|
||||
environment: string;
|
||||
path: string;
|
||||
@@ -292,13 +303,5 @@ export type TUpdateManySecretsRawHelper = {
|
||||
source?: string;
|
||||
};
|
||||
}[];
|
||||
userId?: string; // only relevant for personal secret(s)
|
||||
botKey: string;
|
||||
projectDAL: TProjectDALFactory;
|
||||
secretDAL: TSecretDALFactory;
|
||||
secretVersionDAL: TSecretVersionDALFactory;
|
||||
secretBlindIndexDAL: TSecretBlindIndexDALFactory;
|
||||
secretTagDAL: TSecretTagDALFactory;
|
||||
secretVersionTagDAL: TSecretVersionTagDALFactory;
|
||||
folderDAL: TSecretFolderDALFactory;
|
||||
userId?: string;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user