Files
infisical/frontend/src/helpers/project.ts
T

111 lines
3.2 KiB
TypeScript

import { apiRequest } from "@app/config/request";
import { createWorkspace } from "@app/hooks/api/workspace/queries";
import { ProjectType, WorkspaceEnv } from "@app/hooks/api/workspace/types";
const secretsToBeAdded = [
{
secretKey: "DATABASE_URL",
// eslint-disable-next-line no-template-curly-in-string
secretValue: "mongodb+srv://${DB_USERNAME}:${DB_PASSWORD}@mongodb.net",
secretComment: "Secret referencing example"
},
{
secretKey: "DB_USERNAME",
secretValue: "OVERRIDE_THIS",
secretComment: "Override secrets with personal value"
},
{
secretKey: "DB_PASSWORD",
secretValue: "OVERRIDE_THIS",
secretComment: "Another secret override"
},
{
secretKey: "DB_PASSWORD",
secretValue: "example_password"
},
{
secretKey: "TWILIO_AUTH_TOKEN",
secretValue: "example_twillio_token"
},
{
secretKey: "WEBSITE_URL",
secretValue: "http://localhost:3000"
}
];
/**
* Create and initialize a new project in organization with id [organizationId]
* Note: current user should be a member of the organization
*/
export const initProjectHelper = async ({ projectName }: { projectName: string }) => {
// create new project
const {
data: { project }
} = await createWorkspace({
projectName,
type: ProjectType.SecretManager
});
try {
const { data } = await apiRequest.post("/api/v3/secrets/batch/raw", {
workspaceId: project.id,
environment: "dev",
secretPath: "/",
secrets: secretsToBeAdded
});
return data;
} catch (err) {
console.error("Failed to upload secrets", err);
}
return project;
};
export const getProjectBaseURL = (type: ProjectType) => {
switch (type) {
case ProjectType.SecretManager:
return "/projects/secret-management/$projectId";
case ProjectType.CertificateManager:
return "/projects/cert-management/$projectId";
default:
return `/projects/${type}/$projectId` as const;
}
};
// @ts-expect-error akhilmhdh: will remove this later
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const getProjectHomePage = (type: ProjectType, environments: WorkspaceEnv[]) => {
switch (type) {
case ProjectType.SecretManager:
return "/projects/secret-management/$projectId/overview" as const;
case ProjectType.CertificateManager:
return "/projects/cert-management/$projectId/subscribers" as const;
case ProjectType.SecretScanning:
return `/projects/${type}/$projectId/data-sources` as const;
default:
return `/projects/${type}/$projectId/overview` as const;
}
};
export const getProjectTitle = (type: ProjectType) => {
const titleConvert = {
[ProjectType.SecretManager]: "Secrets Management",
[ProjectType.KMS]: "Key Management",
[ProjectType.CertificateManager]: "Cert Management",
[ProjectType.SSH]: "SSH",
[ProjectType.SecretScanning]: "Secret Scanning"
};
return titleConvert[type];
};
export const getProjectLottieIcon = (type: ProjectType) => {
const titleConvert = {
[ProjectType.SecretManager]: "vault",
[ProjectType.KMS]: "unlock",
[ProjectType.CertificateManager]: "note",
[ProjectType.SSH]: "terminal",
[ProjectType.SecretScanning]: "secret-scan"
};
return titleConvert[type];
};