mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 14:27:59 +00:00
chore: further cleanup
This commit is contained in:
@@ -60,13 +60,6 @@ export class ForbiddenRequestError extends Error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ForbiddenReadSecretError extends ForbiddenRequestError {
|
|
||||||
constructor({ error, message }: { message?: string; error?: unknown } = {}) {
|
|
||||||
super({ message, error });
|
|
||||||
this.name = "ForbiddenReadSecretError";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class BadRequestError extends Error {
|
export class BadRequestError extends Error {
|
||||||
name: string;
|
name: string;
|
||||||
|
|
||||||
|
|||||||
@@ -292,7 +292,8 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => {
|
|||||||
secrets: secretRawSchema
|
secrets: secretRawSchema
|
||||||
.omit({ createdAt: true, updatedAt: true })
|
.omit({ createdAt: true, updatedAt: true })
|
||||||
.extend({
|
.extend({
|
||||||
// secretValueHidden: z.boolean(),
|
// No `secretValueHidden` on imports, because imported secrets that the user doesn't have read value permission on, will be filtered out.
|
||||||
|
// Therefore all returned secret imports will have the value present.
|
||||||
secretMetadata: ResourceMetadataSchema.optional()
|
secretMetadata: ResourceMetadataSchema.optional()
|
||||||
})
|
})
|
||||||
.array()
|
.array()
|
||||||
@@ -2322,7 +2323,6 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// ? No work needed, does not expose secret value.
|
|
||||||
server.route({
|
server.route({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: "/backfill-secret-references",
|
url: "/backfill-secret-references",
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { logger } from "@app/lib/logger";
|
|||||||
|
|
||||||
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
|
import { TProjectEnvDALFactory } from "../project-env/project-env-dal";
|
||||||
import { ResourceMetadataDTO } from "../resource-metadata/resource-metadata-schema";
|
import { ResourceMetadataDTO } from "../resource-metadata/resource-metadata-schema";
|
||||||
|
import { INFISICAL_SECRET_VALUE_HIDDEN_MASK } from "../secret/secret-fns";
|
||||||
import { TSecretFolderDALFactory } from "../secret-folder/secret-folder-dal";
|
import { TSecretFolderDALFactory } from "../secret-folder/secret-folder-dal";
|
||||||
import { TSecretV2BridgeDALFactory } from "./secret-v2-bridge-dal";
|
import { TSecretV2BridgeDALFactory } from "./secret-v2-bridge-dal";
|
||||||
import { TFnSecretBulkDelete, TFnSecretBulkInsert, TFnSecretBulkUpdate } from "./secret-v2-bridge-types";
|
import { TFnSecretBulkDelete, TFnSecretBulkInsert, TFnSecretBulkUpdate } from "./secret-v2-bridge-types";
|
||||||
@@ -649,7 +650,7 @@ export const reshapeBridgeSecret = (
|
|||||||
|
|
||||||
...(secretValueHidden
|
...(secretValueHidden
|
||||||
? {
|
? {
|
||||||
secretValue: "<hidden-by-infisical>",
|
secretValue: INFISICAL_SECRET_VALUE_HIDDEN_MASK,
|
||||||
secretValueHidden: true
|
secretValueHidden: true
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { TSecretApprovalPolicyServiceFactory } from "@app/ee/services/secret-app
|
|||||||
import { TSecretApprovalRequestDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-dal";
|
import { TSecretApprovalRequestDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-dal";
|
||||||
import { TSecretApprovalRequestSecretDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-secret-dal";
|
import { TSecretApprovalRequestSecretDALFactory } from "@app/ee/services/secret-approval-request/secret-approval-request-secret-dal";
|
||||||
import { TSecretSnapshotServiceFactory } from "@app/ee/services/secret-snapshot/secret-snapshot-service";
|
import { TSecretSnapshotServiceFactory } from "@app/ee/services/secret-snapshot/secret-snapshot-service";
|
||||||
import { BadRequestError, ForbiddenReadSecretError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors";
|
import { BadRequestError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors";
|
||||||
import { diff, groupBy } from "@app/lib/fn";
|
import { diff, groupBy } from "@app/lib/fn";
|
||||||
import { setKnexStringValue } from "@app/lib/knex";
|
import { setKnexStringValue } from "@app/lib/knex";
|
||||||
import { logger } from "@app/lib/logger";
|
import { logger } from "@app/lib/logger";
|
||||||
@@ -987,7 +987,6 @@ export const secretV2BridgeServiceFactory = ({
|
|||||||
secretDAL,
|
secretDAL,
|
||||||
decryptSecretValue: (value) => (value ? secretManagerDecryptor({ cipherTextBlob: value }).toString() : undefined),
|
decryptSecretValue: (value) => (value ? secretManagerDecryptor({ cipherTextBlob: value }).toString() : undefined),
|
||||||
canExpandValue: (expandEnvironment, expandSecretPath, expandSecretKey, expandSecretTags) =>
|
canExpandValue: (expandEnvironment, expandSecretPath, expandSecretKey, expandSecretTags) =>
|
||||||
// ? Question(Daniel): Will throw an error if the user doesn't have access to any of the expanded secrets.
|
|
||||||
permission.can(
|
permission.can(
|
||||||
ProjectPermissionSecretActions.ReadValue,
|
ProjectPermissionSecretActions.ReadValue,
|
||||||
subject(ProjectPermissionSub.Secrets, {
|
subject(ProjectPermissionSub.Secrets, {
|
||||||
@@ -1249,8 +1248,9 @@ export const secretV2BridgeServiceFactory = ({
|
|||||||
) &&
|
) &&
|
||||||
secretType !== SecretType.Personal
|
secretType !== SecretType.Personal
|
||||||
) {
|
) {
|
||||||
throw new ForbiddenReadSecretError({
|
throw new ForbiddenRequestError({
|
||||||
message: `You do not have permission to view secret value on secret with name '${secretName}'`
|
message: `You do not have permission to view secret value on secret with name '${secretName}'`,
|
||||||
|
name: "ForbiddenReadSecretError"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ import {
|
|||||||
TUpdateManySecretsRawFnFactory
|
TUpdateManySecretsRawFnFactory
|
||||||
} from "./secret-types";
|
} from "./secret-types";
|
||||||
|
|
||||||
|
export const INFISICAL_SECRET_VALUE_HIDDEN_MASK = "<hidden-by-infisical>";
|
||||||
|
|
||||||
export const generateSecretBlindIndexBySalt = async (secretName: string, secretBlindIndexDoc: TSecretBlindIndexes) => {
|
export const generateSecretBlindIndexBySalt = async (secretName: string, secretBlindIndexDoc: TSecretBlindIndexes) => {
|
||||||
const appCfg = getConfig();
|
const appCfg = getConfig();
|
||||||
const secretBlindIndex = await buildSecretBlindIndexFromName({
|
const secretBlindIndex = await buildSecretBlindIndexFromName({
|
||||||
@@ -370,7 +372,7 @@ export const decryptSecretRaw = (
|
|||||||
tag: secret.secretValueTag,
|
tag: secret.secretValueTag,
|
||||||
key
|
key
|
||||||
})
|
})
|
||||||
: "<hidden-by-infisical>";
|
: INFISICAL_SECRET_VALUE_HIDDEN_MASK;
|
||||||
|
|
||||||
let secretComment = "";
|
let secretComment = "";
|
||||||
|
|
||||||
@@ -1214,12 +1216,10 @@ export const conditionallyHideSecretValue = (
|
|||||||
secretValueTag: string;
|
secretValueTag: string;
|
||||||
}
|
}
|
||||||
) => {
|
) => {
|
||||||
const hiddenPlaceholder = "hidden-by-infisical>";
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
secretValueCiphertext: shouldHideValue ? hiddenPlaceholder : secretValueCiphertext,
|
secretValueCiphertext: shouldHideValue ? INFISICAL_SECRET_VALUE_HIDDEN_MASK : secretValueCiphertext,
|
||||||
secretValueIV: shouldHideValue ? hiddenPlaceholder : secretValueIV,
|
secretValueIV: shouldHideValue ? INFISICAL_SECRET_VALUE_HIDDEN_MASK : secretValueIV,
|
||||||
secretValueTag: shouldHideValue ? hiddenPlaceholder : secretValueTag,
|
secretValueTag: shouldHideValue ? INFISICAL_SECRET_VALUE_HIDDEN_MASK : secretValueTag,
|
||||||
secretValueHidden: shouldHideValue
|
secretValueHidden: shouldHideValue
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user