From ae97b749330ec0d1b4e89bf90a44d9c8a8bc3ce9 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:38:58 +0100 Subject: [PATCH 1/4] Feat: Improve create project, remove organization slug from frontend --- frontend/src/helpers/project.ts | 9 +---- frontend/src/hooks/api/workspace/queries.tsx | 20 +++++----- frontend/src/hooks/api/workspace/types.ts | 37 +++++++++---------- frontend/src/layouts/AppLayout/AppLayout.tsx | 1 - .../src/pages/org/[id]/overview/index.tsx | 1 - frontend/src/services/ProjectService.ts | 9 +---- 6 files changed, 30 insertions(+), 47 deletions(-) diff --git a/frontend/src/helpers/project.ts b/frontend/src/helpers/project.ts index 8379b0fa59..ff8e700a4e 100644 --- a/frontend/src/helpers/project.ts +++ b/frontend/src/helpers/project.ts @@ -77,18 +77,11 @@ const secretsToBeAdded = [ * @param {String} obj.projectName - name of new project * @returns {Project} project - new project */ -const initProjectHelper = async ({ - organizationSlug, - projectName -}: { - organizationSlug: string; - projectName: string; -}) => { +const initProjectHelper = async ({ projectName }: { projectName: string }) => { // create new project const { data: { project } } = await createWorkspace({ - organizationSlug, projectName }); diff --git a/frontend/src/hooks/api/workspace/queries.tsx b/frontend/src/hooks/api/workspace/queries.tsx index 24a7e57946..001454233d 100644 --- a/frontend/src/hooks/api/workspace/queries.tsx +++ b/frontend/src/hooks/api/workspace/queries.tsx @@ -199,19 +199,17 @@ export const useGetWorkspaceIntegrations = (workspaceId: string) => }); export const createWorkspace = ({ - organizationSlug, projectName }: CreateWorkspaceDTO): Promise<{ data: { project: Workspace } }> => { - return apiRequest.post("/api/v2/workspace", { projectName, organizationSlug }); + return apiRequest.post("/api/v2/workspace", { projectName }); }; export const useCreateWorkspace = () => { const queryClient = useQueryClient(); return useMutation<{ data: { project: Workspace } }, {}, CreateWorkspaceDTO>({ - mutationFn: async ({ organizationSlug, projectName }) => + mutationFn: async ({ projectName }) => createWorkspace({ - organizationSlug, projectName }), onSuccess: () => { @@ -325,7 +323,13 @@ export const useDeleteUserFromWorkspace = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ usernames, workspaceId }: { workspaceId: string; usernames: string[] }) => { + mutationFn: async ({ + usernames, + workspaceId + }: { + workspaceId: string; + usernames: string[]; + }) => { const { data: { deletedMembership } } = await apiRequest.delete(`/api/v2/workspace/${workspaceId}/memberships`, { @@ -391,11 +395,7 @@ export const useAddIdentityToWorkspace = () => { export const useUpdateIdentityWorkspaceRole = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ - identityId, - workspaceId, - roles - }:TUpdateWorkspaceIdentityRoleDTO)=> { + mutationFn: async ({ identityId, workspaceId, roles }: TUpdateWorkspaceIdentityRoleDTO) => { const { data: { identityMembership } } = await apiRequest.patch( diff --git a/frontend/src/hooks/api/workspace/types.ts b/frontend/src/hooks/api/workspace/types.ts index 657b076939..f0cee77415 100644 --- a/frontend/src/hooks/api/workspace/types.ts +++ b/frontend/src/hooks/api/workspace/types.ts @@ -45,7 +45,6 @@ export type TGetUpgradeProjectStatusDTO = { // mutation dto export type CreateWorkspaceDTO = { projectName: string; - organizationSlug: string; }; export type RenameWorkspaceDTO = { workspaceID: string; newWorkspaceName: string }; @@ -82,16 +81,16 @@ export type TUpdateWorkspaceUserRoleDTO = { workspaceId: string; roles: ( | { - role: string; - isTemporary?: false; - } + role: string; + isTemporary?: false; + } | { - role: string; - isTemporary: true; - temporaryMode: ProjectUserMembershipTemporaryMode; - temporaryRange: string; - temporaryAccessStartTime: string; - } + role: string; + isTemporary: true; + temporaryMode: ProjectUserMembershipTemporaryMode; + temporaryRange: string; + temporaryAccessStartTime: string; + } )[]; }; @@ -100,15 +99,15 @@ export type TUpdateWorkspaceIdentityRoleDTO = { workspaceId: string; roles: ( | { - role: string; - isTemporary?: false; - } + role: string; + isTemporary?: false; + } | { - role: string; - isTemporary: true; - temporaryMode: ProjectUserMembershipTemporaryMode; - temporaryRange: string; - temporaryAccessStartTime: string; - } + role: string; + isTemporary: true; + temporaryMode: ProjectUserMembershipTemporaryMode; + temporaryRange: string; + temporaryAccessStartTime: string; + } )[]; }; diff --git a/frontend/src/layouts/AppLayout/AppLayout.tsx b/frontend/src/layouts/AppLayout/AppLayout.tsx index e78913f6ec..70a6b4326b 100644 --- a/frontend/src/layouts/AppLayout/AppLayout.tsx +++ b/frontend/src/layouts/AppLayout/AppLayout.tsx @@ -236,7 +236,6 @@ export const AppLayout = ({ children }: LayoutProps) => { project: { id: newProjectId } } } = await createWs.mutateAsync({ - organizationSlug: currentOrg.slug, projectName: name }); diff --git a/frontend/src/pages/org/[id]/overview/index.tsx b/frontend/src/pages/org/[id]/overview/index.tsx index 57b4674cf8..38be2f4b79 100644 --- a/frontend/src/pages/org/[id]/overview/index.tsx +++ b/frontend/src/pages/org/[id]/overview/index.tsx @@ -512,7 +512,6 @@ const OrganizationPage = withPermission( project: { id: newProjectId } } } = await createWs.mutateAsync({ - organizationSlug: currentOrg.slug, projectName: name }); diff --git a/frontend/src/services/ProjectService.ts b/frontend/src/services/ProjectService.ts index e1d0e3fe80..afdc7c9f95 100644 --- a/frontend/src/services/ProjectService.ts +++ b/frontend/src/services/ProjectService.ts @@ -9,15 +9,8 @@ class ProjectService { * @param {String} obj.projectName - name of new project * @returns {Project} project - new project */ - static async initProject({ - organizationSlug, - projectName - }: { - organizationSlug: string; - projectName: string; - }) { + static async initProject({ projectName }: { projectName: string }) { return initProjectHelper({ - organizationSlug, projectName }); } From 2c539697df106e0e55142155bdeb42d302a267fc Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:39:24 +0100 Subject: [PATCH 2/4] Feat: Remove orgSlug from create project endpoint --- backend/src/server/routes/v2/project-router.ts | 4 +--- backend/src/services/project/project-service.ts | 9 +-------- backend/src/services/project/project-types.ts | 1 - 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/backend/src/server/routes/v2/project-router.ts b/backend/src/server/routes/v2/project-router.ts index 7ae5b35087..3258be50af 100644 --- a/backend/src/server/routes/v2/project-router.ts +++ b/backend/src/server/routes/v2/project-router.ts @@ -150,8 +150,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { message: "Slug must be a valid slug" }) .optional() - .describe(PROJECTS.CREATE.slug), - organizationSlug: z.string().trim().describe(PROJECTS.CREATE.organizationSlug) + .describe(PROJECTS.CREATE.slug) }), response: { 200: z.object({ @@ -166,7 +165,6 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { actor: req.permission.type, actorOrgId: req.permission.orgId, actorAuthMethod: req.permission.authMethod, - orgSlug: req.body.organizationSlug, workspaceName: req.body.projectName, slug: req.body.slug }); diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index 71703a50cb..5eaf081dc5 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -92,7 +92,6 @@ export const projectServiceFactory = ({ * Create workspace. Make user the admin * */ const createProject = async ({ - orgSlug, actor, actorId, actorOrgId, @@ -100,13 +99,7 @@ export const projectServiceFactory = ({ workspaceName, slug: projectSlug }: TCreateProjectDTO) => { - if (!orgSlug) { - throw new BadRequestError({ - message: "Must provide organization slug to create project" - }); - } - - const organization = await orgDAL.findOne({ slug: orgSlug }); + const organization = await orgDAL.findOne({ id: actorOrgId }); const { permission, membership: orgMembership } = await permissionService.getOrgPermission( actor, diff --git a/backend/src/services/project/project-types.ts b/backend/src/services/project/project-types.ts index 5b2b635f2d..dcd424e18c 100644 --- a/backend/src/services/project/project-types.ts +++ b/backend/src/services/project/project-types.ts @@ -24,7 +24,6 @@ export type TCreateProjectDTO = { actorAuthMethod: ActorAuthMethod; actorId: string; actorOrgId?: string; - orgSlug: string; workspaceName: string; slug?: string; }; From 31c0fd96ea2601097cdbef0183c4ce253fb7d2e3 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:39:34 +0100 Subject: [PATCH 3/4] Update UserInfoStep.tsx --- frontend/src/components/signup/UserInfoStep.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/src/components/signup/UserInfoStep.tsx b/frontend/src/components/signup/UserInfoStep.tsx index a7d11d10c4..c98998e354 100644 --- a/frontend/src/components/signup/UserInfoStep.tsx +++ b/frontend/src/components/signup/UserInfoStep.tsx @@ -196,10 +196,8 @@ export default function UserInfoStep({ const userOrgs = await fetchOrganizations(); - const orgSlug = userOrgs[0]?.slug; const orgId = userOrgs[0]?.id; const project = await ProjectService.initProject({ - organizationSlug: orgSlug, projectName: "Example Project" }); From 8702af671d781e874359db98b09a3f4b3f6b3102 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com> Date: Tue, 19 Mar 2024 13:45:57 +0100 Subject: [PATCH 4/4] Fix: Typings error --- .../views/Signup/components/UserInfoSSOStep/UserInfoSSOStep.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/src/views/Signup/components/UserInfoSSOStep/UserInfoSSOStep.tsx b/frontend/src/views/Signup/components/UserInfoSSOStep/UserInfoSSOStep.tsx index c2ad81efe3..1cef143d53 100644 --- a/frontend/src/views/Signup/components/UserInfoSSOStep/UserInfoSSOStep.tsx +++ b/frontend/src/views/Signup/components/UserInfoSSOStep/UserInfoSSOStep.tsx @@ -189,14 +189,12 @@ export const UserInfoSSOStep = ({ const userOrgs = await fetchOrganizations(); const orgId = userOrgs[0]?.id; - const orgSlug = userOrgs[0]?.slug; await selectOrganization({ organizationId: orgId }); const project = await ProjectService.initProject({ - organizationSlug: orgSlug, projectName: "Example Project" });