mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 13:27:46 +00:00
111 lines
3.2 KiB
TypeScript
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];
|
|
};
|