mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Merge pull request #961 from akhilmhdh/fix/folder-bug
fix: resovled batch function not working with folders
This commit is contained in:
@@ -89,15 +89,17 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
||||
workspaceId: new Types.ObjectId(workspaceId)
|
||||
});
|
||||
|
||||
const folders = await Folder.findOne({ workspace: workspaceId, environment });
|
||||
|
||||
if (secretPath) {
|
||||
if (secretPath !== "/") {
|
||||
folderId = await getFolderIdFromServiceToken(workspaceId, environment, secretPath);
|
||||
}
|
||||
|
||||
if (folders && folderId !== "root") {
|
||||
if (folderId !== "root") {
|
||||
const folders = await Folder.findOne({ workspace: workspaceId, environment });
|
||||
if (!folders) throw BadRequestError({ message: "Folder not found" });
|
||||
|
||||
const folder = searchByFolderIdWithDir(folders.nodes, folderId as string);
|
||||
if (!folder?.folder) throw BadRequestError({ message: "Folder not found" });
|
||||
|
||||
secretPath = path.join(
|
||||
"/",
|
||||
...folder.dir.map(({ name }) => name).filter((name) => name !== "root")
|
||||
|
||||
@@ -7,7 +7,7 @@ import { containsGlobPatterns, repackageSecretToRaw } from "../../helpers/secret
|
||||
import { encryptSymmetric128BitHexKeyUTF8 } from "../../utils/crypto";
|
||||
import { getAllImportedSecrets } from "../../services/SecretImportService";
|
||||
import { Folder, IServiceTokenData } from "../../models";
|
||||
import { getFolderByPath } from "../../services/FolderService";
|
||||
import { getFolderByPath, getFolderWithPathFromId } from "../../services/FolderService";
|
||||
import { BadRequestError } from "../../utils/errors";
|
||||
import { validateRequest } from "../../helpers/validation";
|
||||
import * as reqValidator from "../../validation/secrets";
|
||||
@@ -27,9 +27,13 @@ import { PERMISSION_READ_SECRETS, PERMISSION_WRITE_SECRETS } from "../../variabl
|
||||
* @param res
|
||||
*/
|
||||
export const getSecretsRaw = async (req: Request, res: Response) => {
|
||||
const validatedData = await validateRequest(reqValidator.GetSecretsRawV3, req);
|
||||
let {
|
||||
query: { secretPath, environment, workspaceId, include_imports: includeImports, folderId }
|
||||
} = await validateRequest(reqValidator.GetSecretsRawV3, req);
|
||||
query: { secretPath, environment, workspaceId }
|
||||
} = validatedData;
|
||||
const {
|
||||
query: { folderId, include_imports: includeImports }
|
||||
} = validatedData;
|
||||
|
||||
// if the service token has single scope, it will get all secrets for that scope by default
|
||||
const serviceTokenDetails: IServiceTokenData = req?.serviceTokenData;
|
||||
@@ -44,6 +48,13 @@ export const getSecretsRaw = async (req: Request, res: Response) => {
|
||||
workspaceId = serviceTokenDetails.workspace.toString();
|
||||
}
|
||||
|
||||
if (folderId && folderId !== "root") {
|
||||
const folder = await Folder.findOne({ workspace: workspaceId, environment });
|
||||
if (!folder) throw BadRequestError({ message: "Folder not found" });
|
||||
|
||||
secretPath = getFolderWithPathFromId(folder.nodes, folderId).folderPath;
|
||||
}
|
||||
|
||||
if (req.user?._id) {
|
||||
const { permission } = await getUserProjectPermissions(req.user._id, workspaceId);
|
||||
ForbiddenError.from(permission).throwUnlessCan(
|
||||
@@ -367,9 +378,21 @@ export const deleteSecretByNameRaw = async (req: Request, res: Response) => {
|
||||
* @param res
|
||||
*/
|
||||
export const getSecrets = async (req: Request, res: Response) => {
|
||||
const validatedData = await validateRequest(reqValidator.GetSecretsV3, req);
|
||||
const {
|
||||
query: { secretPath, environment, workspaceId, include_imports: includeImports, folderId }
|
||||
} = await validateRequest(reqValidator.GetSecretsV3, req);
|
||||
query: { environment, workspaceId, include_imports: includeImports, folderId }
|
||||
} = validatedData;
|
||||
|
||||
let {
|
||||
query: { secretPath }
|
||||
} = validatedData;
|
||||
|
||||
if (folderId && folderId !== "root") {
|
||||
const folder = await Folder.findOne({ workspace: workspaceId, environment });
|
||||
if (!folder) throw BadRequestError({ message: "Folder not found" });
|
||||
|
||||
secretPath = getFolderWithPathFromId(folder.nodes, folderId).folderPath;
|
||||
}
|
||||
|
||||
if (req.user?._id) {
|
||||
const { permission } = await getUserProjectPermissions(req.user._id, workspaceId);
|
||||
|
||||
@@ -578,8 +578,10 @@ export const getSecretsHelper = async ({
|
||||
}
|
||||
}
|
||||
|
||||
const numberOfSignupSecrets = (secrets.filter((secret) => secret?.metadata?.source === "signup")).length;
|
||||
const atLeastOneNonSignUpSecret = (secrets.length - numberOfSignupSecrets > 0)
|
||||
const numberOfSignupSecrets = secrets.filter(
|
||||
(secret) => secret?.metadata?.source === "signup"
|
||||
).length;
|
||||
const atLeastOneNonSignUpSecret = secrets.length - numberOfSignupSecrets > 0;
|
||||
|
||||
if (postHogClient && atLeastOneNonSignUpSecret) {
|
||||
const shouldCapture = authData.userAgent !== K8_USER_AGENT_NAME || shouldRecordK8Event;
|
||||
|
||||
Reference in New Issue
Block a user