From 0e31a9146aab933c0441763ec9830d23963ee90f Mon Sep 17 00:00:00 2001
From: vmatsiiako <78047717+vmatsiiako@users.noreply.github.com>
Date: Mon, 18 Mar 2024 22:10:09 -0700
Subject: [PATCH 05/12] Update ee.mdx
---
docs/self-hosting/ee.mdx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/self-hosting/ee.mdx b/docs/self-hosting/ee.mdx
index e1f3cff40..832d99eaf 100644
--- a/docs/self-hosting/ee.mdx
+++ b/docs/self-hosting/ee.mdx
@@ -9,7 +9,7 @@ This guide walks through how you can use these paid features in Infisical.
- Start by either signing up for a free demo [here](https://infisical.com/schedule-demo) or contacting team@infisical.com to purchase a license.
+ Start by either signing up for a free demo [here](https://infisical.com/schedule-demo) or contacting sales@infisical.com to purchase a license.
Once purchased, you will be issued a license key.
@@ -25,4 +25,4 @@ This guide walks through how you can use these paid features in Infisical.
Once the license expires, Infisical will continue to run, but EE features will be disabled until the license is renewed or a new one is purchased.
-
\ No newline at end of file
+
From 3c91e1127f5ac71cb83bd6fb6344157de67342e2 Mon Sep 17 00:00:00 2001
From: Daniel Hougaard <62331820+DanielHougaard@users.noreply.github.com>
Date: Tue, 19 Mar 2024 11:58:01 +0100
Subject: [PATCH 06/12] Fix: Mintlify docs defaulting to localhost endpoint
---
backend/src/server/plugins/swagger.ts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/backend/src/server/plugins/swagger.ts b/backend/src/server/plugins/swagger.ts
index 1eb1a0f4e..2d7e6706c 100644
--- a/backend/src/server/plugins/swagger.ts
+++ b/backend/src/server/plugins/swagger.ts
@@ -14,13 +14,13 @@ export const fastifySwagger = fp(async (fastify) => {
version: "0.0.1"
},
servers: [
- {
- url: "http://localhost:8080",
- description: "Local server"
- },
{
url: "https://app.infisical.com",
description: "Production server"
+ },
+ {
+ url: "http://localhost:8080",
+ description: "Local server"
}
],
components: {
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 07/12] 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 8379b0fa5..ff8e700a4 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 24a7e5794..001454233 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 657b07693..f0cee7741 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 e78913f6e..70a6b4326 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 57b4674cf..38be2f4b7 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 e1d0e3fe8..afdc7c9f9 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 08/12] 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 7ae5b3508..3258be50a 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 71703a50c..5eaf081dc 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 5b2b635f2..dcd424e18 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 09/12] 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 a7d11d10c..c98998e35 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 10/12] 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 c2ad81efe..1cef143d5 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"
});
From cb828200e15ffd900dfcfe95e9e2c88ce57dad67 Mon Sep 17 00:00:00 2001
From: Akhil Mohan
Date: Tue, 19 Mar 2024 13:56:21 +0000
Subject: [PATCH 11/12] fix(server): updated secret rotation to pick on db host
in validation
---
.../secret-rotation-queue/secret-rotation-queue-fn.ts | 3 ++-
backend/src/lib/knex/connection.ts | 11 +++++++++++
backend/src/lib/knex/index.ts | 1 +
3 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 backend/src/lib/knex/connection.ts
diff --git a/backend/src/ee/services/secret-rotation/secret-rotation-queue/secret-rotation-queue-fn.ts b/backend/src/ee/services/secret-rotation/secret-rotation-queue/secret-rotation-queue-fn.ts
index c67477bfd..5a2e478e1 100644
--- a/backend/src/ee/services/secret-rotation/secret-rotation-queue/secret-rotation-queue-fn.ts
+++ b/backend/src/ee/services/secret-rotation/secret-rotation-queue/secret-rotation-queue-fn.ts
@@ -9,6 +9,7 @@ import jmespath from "jmespath";
import knex from "knex";
import { getConfig } from "@app/lib/config/env";
+import { getDbConnectionHost } from "@app/lib/knex";
import { alphaNumericNanoId } from "@app/lib/nanoid";
import { TAssignOp, TDbProviderClients, TDirectAssignOp, THttpProviderFunction } from "../templates/types";
@@ -89,7 +90,7 @@ export const secretRotationDbFn = async ({
const appCfg = getConfig();
const ssl = ca ? { rejectUnauthorized: false, ca } : undefined;
- if (host === "localhost" || host === "127.0.0.1" || appCfg.DB_CONNECTION_URI.includes(host))
+ if (host === "localhost" || host === "127.0.0.1" || getDbConnectionHost(appCfg.DB_CONNECTION_URI) === host)
throw new Error("Invalid db host");
const db = knex({
diff --git a/backend/src/lib/knex/connection.ts b/backend/src/lib/knex/connection.ts
new file mode 100644
index 000000000..993615a0b
--- /dev/null
+++ b/backend/src/lib/knex/connection.ts
@@ -0,0 +1,11 @@
+import { URL } from "url"; // Import the URL class
+
+export const getDbConnectionHost = (urlString: string) => {
+ try {
+ const url = new URL(urlString);
+ // Split hostname and port (if provided)
+ return url.hostname.split(":")[0];
+ } catch (error) {
+ return null;
+ }
+};
diff --git a/backend/src/lib/knex/index.ts b/backend/src/lib/knex/index.ts
index 37fae624e..d78020809 100644
--- a/backend/src/lib/knex/index.ts
+++ b/backend/src/lib/knex/index.ts
@@ -4,6 +4,7 @@ import { Tables } from "knex/types/tables";
import { DatabaseError } from "../errors";
+export * from "./connection";
export * from "./join";
export * from "./select";
From e63deb0860fa11bd101732a77f610be562e159ac Mon Sep 17 00:00:00 2001
From: Tuan Dang
Date: Tue, 19 Mar 2024 10:23:00 -0700
Subject: [PATCH 12/12] Patch org role slug validation
---
backend/src/ee/routes/v1/org-role-router.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backend/src/ee/routes/v1/org-role-router.ts b/backend/src/ee/routes/v1/org-role-router.ts
index 148a84300..3ecf6fbfd 100644
--- a/backend/src/ee/routes/v1/org-role-router.ts
+++ b/backend/src/ee/routes/v1/org-role-router.ts
@@ -19,7 +19,7 @@ export const registerOrgRoleRouter = async (server: FastifyZodProvider) => {
.min(1)
.trim()
.refine(
- (val) => Object.keys(OrgMembershipRole).includes(val),
+ (val) => !Object.keys(OrgMembershipRole).includes(val),
"Please choose a different slug, the slug you have entered is reserved"
)
.refine((v) => slugify(v) === v, {