mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 09:26:47 +00:00
Secret Approval Request: check if user is a reviewer to trigger hasSecretReadValueOrDescribePermission
This commit is contained in:
@@ -285,13 +285,10 @@ export const secretApprovalRequestServiceFactory = ({
|
|||||||
) {
|
) {
|
||||||
throw new ForbiddenRequestError({ message: "User has insufficient privileges" });
|
throw new ForbiddenRequestError({ message: "User has insufficient privileges" });
|
||||||
}
|
}
|
||||||
const getHasSecretReadAccess = (
|
const getHasSecretReadAccess = (environment: string, tags: { slug: string }[], secretPath?: string) => {
|
||||||
shouldCheckSecretPermission: boolean | null | undefined,
|
const isReviewer = policy.approvers.some(({ userId }) => userId === actorId);
|
||||||
environment: string,
|
|
||||||
tags: { slug: string }[],
|
if (!isReviewer) {
|
||||||
secretPath?: string
|
|
||||||
) => {
|
|
||||||
if (shouldCheckSecretPermission) {
|
|
||||||
const canRead = hasSecretReadValueOrDescribePermission(permission, ProjectPermissionSecretActions.ReadValue, {
|
const canRead = hasSecretReadValueOrDescribePermission(permission, ProjectPermissionSecretActions.ReadValue, {
|
||||||
environment,
|
environment,
|
||||||
secretPath: secretPath || "/",
|
secretPath: secretPath || "/",
|
||||||
@@ -322,18 +319,8 @@ export const secretApprovalRequestServiceFactory = ({
|
|||||||
version: el.version,
|
version: el.version,
|
||||||
secretMetadata: el.secretMetadata as ResourceMetadataDTO,
|
secretMetadata: el.secretMetadata as ResourceMetadataDTO,
|
||||||
isRotatedSecret: el.secret?.isRotatedSecret ?? false,
|
isRotatedSecret: el.secret?.isRotatedSecret ?? false,
|
||||||
secretValueHidden: !getHasSecretReadAccess(
|
secretValueHidden: !getHasSecretReadAccess(secretApprovalRequest.environment, el.tags, secretPath?.[0]?.path),
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
secretValue: !getHasSecretReadAccess(secretApprovalRequest.environment, el.tags, secretPath?.[0]?.path)
|
||||||
secretApprovalRequest.environment,
|
|
||||||
el.tags,
|
|
||||||
secretPath?.[0]?.path
|
|
||||||
),
|
|
||||||
secretValue: !getHasSecretReadAccess(
|
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
|
||||||
secretApprovalRequest.environment,
|
|
||||||
el.tags,
|
|
||||||
secretPath?.[0]?.path
|
|
||||||
)
|
|
||||||
? INFISICAL_SECRET_VALUE_HIDDEN_MASK
|
? INFISICAL_SECRET_VALUE_HIDDEN_MASK
|
||||||
: el.secret && el.secret.isRotatedSecret
|
: el.secret && el.secret.isRotatedSecret
|
||||||
? undefined
|
? undefined
|
||||||
@@ -354,17 +341,11 @@ export const secretApprovalRequestServiceFactory = ({
|
|||||||
id: el.secret.id,
|
id: el.secret.id,
|
||||||
version: el.secret.version,
|
version: el.secret.version,
|
||||||
secretValueHidden: !getHasSecretReadAccess(
|
secretValueHidden: !getHasSecretReadAccess(
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
|
||||||
secretApprovalRequest.environment,
|
secretApprovalRequest.environment,
|
||||||
el.tags,
|
el.tags,
|
||||||
secretPath?.[0]?.path
|
secretPath?.[0]?.path
|
||||||
),
|
),
|
||||||
secretValue: !getHasSecretReadAccess(
|
secretValue: !getHasSecretReadAccess(secretApprovalRequest.environment, el.tags, secretPath?.[0]?.path)
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
|
||||||
secretApprovalRequest.environment,
|
|
||||||
el.tags,
|
|
||||||
secretPath?.[0]?.path
|
|
||||||
)
|
|
||||||
? INFISICAL_SECRET_VALUE_HIDDEN_MASK
|
? INFISICAL_SECRET_VALUE_HIDDEN_MASK
|
||||||
: el.secret.encryptedValue
|
: el.secret.encryptedValue
|
||||||
? secretManagerDecryptor({ cipherTextBlob: el.secret.encryptedValue }).toString()
|
? secretManagerDecryptor({ cipherTextBlob: el.secret.encryptedValue }).toString()
|
||||||
@@ -380,17 +361,11 @@ export const secretApprovalRequestServiceFactory = ({
|
|||||||
id: el.secretVersion.id,
|
id: el.secretVersion.id,
|
||||||
version: el.secretVersion.version,
|
version: el.secretVersion.version,
|
||||||
secretValueHidden: !getHasSecretReadAccess(
|
secretValueHidden: !getHasSecretReadAccess(
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
|
||||||
secretApprovalRequest.environment,
|
secretApprovalRequest.environment,
|
||||||
el.tags,
|
el.tags,
|
||||||
secretPath?.[0]?.path
|
secretPath?.[0]?.path
|
||||||
),
|
),
|
||||||
secretValue: !getHasSecretReadAccess(
|
secretValue: !getHasSecretReadAccess(secretApprovalRequest.environment, el.tags, secretPath?.[0]?.path)
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
|
||||||
secretApprovalRequest.environment,
|
|
||||||
el.tags,
|
|
||||||
secretPath?.[0]?.path
|
|
||||||
)
|
|
||||||
? INFISICAL_SECRET_VALUE_HIDDEN_MASK
|
? INFISICAL_SECRET_VALUE_HIDDEN_MASK
|
||||||
: el.secretVersion.encryptedValue
|
: el.secretVersion.encryptedValue
|
||||||
? secretManagerDecryptor({ cipherTextBlob: el.secretVersion.encryptedValue }).toString()
|
? secretManagerDecryptor({ cipherTextBlob: el.secretVersion.encryptedValue }).toString()
|
||||||
@@ -409,12 +384,7 @@ export const secretApprovalRequestServiceFactory = ({
|
|||||||
const encryptedSecrets = await secretApprovalRequestSecretDAL.findByRequestId(secretApprovalRequest.id);
|
const encryptedSecrets = await secretApprovalRequestSecretDAL.findByRequestId(secretApprovalRequest.id);
|
||||||
secrets = encryptedSecrets.map((el) => ({
|
secrets = encryptedSecrets.map((el) => ({
|
||||||
...el,
|
...el,
|
||||||
secretValueHidden: !getHasSecretReadAccess(
|
secretValueHidden: !getHasSecretReadAccess(secretApprovalRequest.environment, el.tags, secretPath?.[0]?.path),
|
||||||
secretApprovalRequest.policy.shouldCheckSecretPermission,
|
|
||||||
secretApprovalRequest.environment,
|
|
||||||
el.tags,
|
|
||||||
secretPath?.[0]?.path
|
|
||||||
),
|
|
||||||
...decryptSecretWithBot(el, botKey),
|
...decryptSecretWithBot(el, botKey),
|
||||||
secret: el.secret
|
secret: el.secret
|
||||||
? {
|
? {
|
||||||
|
|||||||
Reference in New Issue
Block a user