mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-04 08:26:10 +00:00
Proper update project endpoint
This commit is contained in:
@@ -26,9 +26,15 @@ import { TSecretBlindIndexDALFactory } from "../secret-blind-index/secret-blind-
|
|||||||
import { ROOT_FOLDER_NAME, TSecretFolderDALFactory } from "../secret-folder/secret-folder-dal";
|
import { ROOT_FOLDER_NAME, TSecretFolderDALFactory } from "../secret-folder/secret-folder-dal";
|
||||||
import { TUserDALFactory } from "../user/user-dal";
|
import { TUserDALFactory } from "../user/user-dal";
|
||||||
import { TProjectDALFactory } from "./project-dal";
|
import { TProjectDALFactory } from "./project-dal";
|
||||||
import { createProjectKey, createWsMembers } from "./project-fns";
|
import { assignWorkspaceKeysToMembers, createProjectKey } from "./project-fns";
|
||||||
import { TProjectQueueFactory } from "./project-queue";
|
import { TProjectQueueFactory } from "./project-queue";
|
||||||
import { TCreateProjectDTO, TDeleteProjectDTO, TGetProjectDTO, TUpgradeProjectDTO } from "./project-types";
|
import {
|
||||||
|
TCreateProjectDTO,
|
||||||
|
TDeleteProjectDTO,
|
||||||
|
TGetProjectDTO,
|
||||||
|
TUpdateProjectDTO,
|
||||||
|
TUpgradeProjectDTO
|
||||||
|
} from "./project-types";
|
||||||
|
|
||||||
export const DEFAULT_PROJECT_ENVS = [
|
export const DEFAULT_PROJECT_ENVS = [
|
||||||
{ name: "Development", slug: "dev" },
|
{ name: "Development", slug: "dev" },
|
||||||
@@ -74,7 +80,7 @@ export const projectServiceFactory = ({
|
|||||||
/*
|
/*
|
||||||
* Create workspace. Make user the admin
|
* Create workspace. Make user the admin
|
||||||
* */
|
* */
|
||||||
const createProject = async ({ orgId, actor, actorId, actorOrgId, workspaceName }: TCreateProjectDTO) => {
|
const createProject = async ({ orgId, actor, actorId, actorOrgId, workspaceName, slug }: TCreateProjectDTO) => {
|
||||||
const { permission, membership: orgMembership } = await permissionService.getOrgPermission(
|
const { permission, membership: orgMembership } = await permissionService.getOrgPermission(
|
||||||
actor,
|
actor,
|
||||||
actorId,
|
actorId,
|
||||||
@@ -102,7 +108,7 @@ export const projectServiceFactory = ({
|
|||||||
{
|
{
|
||||||
name: workspaceName,
|
name: workspaceName,
|
||||||
orgId,
|
orgId,
|
||||||
slug: slugify(`${workspaceName}-${alphaNumericNanoId(4)}`),
|
slug: slug || slugify(`${workspaceName}-${alphaNumericNanoId(4)}`),
|
||||||
version: ProjectVersion.V2
|
version: ProjectVersion.V2
|
||||||
},
|
},
|
||||||
tx
|
tx
|
||||||
@@ -194,7 +200,7 @@ export const projectServiceFactory = ({
|
|||||||
throw new Error("User not found");
|
throw new Error("User not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
const [projectAdmin] = createWsMembers({
|
const [projectAdmin] = assignWorkspaceKeysToMembers({
|
||||||
decryptKey: latestKey,
|
decryptKey: latestKey,
|
||||||
userPrivateKey: ghostUser.keys.plainPrivateKey,
|
userPrivateKey: ghostUser.keys.plainPrivateKey,
|
||||||
members: [
|
members: [
|
||||||
@@ -305,6 +311,17 @@ export const projectServiceFactory = ({
|
|||||||
return projectDAL.findProjectById(projectId);
|
return projectDAL.findProjectById(projectId);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const updateProject = async ({ projectId, actor, actorId, actorOrgId, update }: TUpdateProjectDTO) => {
|
||||||
|
const { permission } = await permissionService.getProjectPermission(actor, actorId, projectId, actorOrgId);
|
||||||
|
ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionActions.Edit, ProjectPermissionSub.Settings);
|
||||||
|
|
||||||
|
const updatedProject = await projectDAL.updateById(projectId, {
|
||||||
|
name: update.name,
|
||||||
|
autoCapitalization: update.autoCapitalization
|
||||||
|
});
|
||||||
|
return updatedProject;
|
||||||
|
};
|
||||||
|
|
||||||
const toggleAutoCapitalization = async ({
|
const toggleAutoCapitalization = async ({
|
||||||
projectId,
|
projectId,
|
||||||
actor,
|
actor,
|
||||||
@@ -371,6 +388,7 @@ export const projectServiceFactory = ({
|
|||||||
createProject,
|
createProject,
|
||||||
deleteProject,
|
deleteProject,
|
||||||
getProjects,
|
getProjects,
|
||||||
|
updateProject,
|
||||||
findProjectGhostUser,
|
findProjectGhostUser,
|
||||||
getProjectUpgradeStatus,
|
getProjectUpgradeStatus,
|
||||||
getAProject,
|
getAProject,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ export type TCreateProjectDTO = {
|
|||||||
actorOrgId?: string;
|
actorOrgId?: string;
|
||||||
orgId: string;
|
orgId: string;
|
||||||
workspaceName: string;
|
workspaceName: string;
|
||||||
|
slug?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type TDeleteProjectDTO = {
|
export type TDeleteProjectDTO = {
|
||||||
@@ -25,6 +26,13 @@ export type TGetProjectDTO = {
|
|||||||
projectId: string;
|
projectId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type TUpdateProjectDTO = {
|
||||||
|
update: {
|
||||||
|
name?: string;
|
||||||
|
autoCapitalization?: boolean;
|
||||||
|
};
|
||||||
|
} & TProjectPermission;
|
||||||
|
|
||||||
export type TUpgradeProjectDTO = {
|
export type TUpgradeProjectDTO = {
|
||||||
userPrivateKey: string;
|
userPrivateKey: string;
|
||||||
} & TProjectPermission;
|
} & TProjectPermission;
|
||||||
|
|||||||
Reference in New Issue
Block a user