From 34354994d89e91fbc9e10d7e12a8ff320c41bc67 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 8 Jan 2025 18:29:25 +0800 Subject: [PATCH 1/4] fix: address sso redirect and project role creation --- .../auth/LoginPage/components/InitialStep/InitialStep.tsx | 6 ++++-- .../components/ProjectRoleList/ProjectRoleList.tsx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx b/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx index 678c58d60..16de4c7ec 100644 --- a/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx +++ b/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx @@ -48,7 +48,8 @@ export const InitialStep = ({ setStep, email, setEmail, password, setPassword }: const redirectUrl = `/api/v1/sso/redirect/saml2/organizations/${orgSlug}${ callbackPort ? `?callback_port=${callbackPort}` : "" }`; - navigate({ to: redirectUrl }); + + window.location.assign(redirectUrl); }; const redirectToOidc = (orgSlug: string) => { @@ -56,7 +57,8 @@ export const InitialStep = ({ setStep, email, setEmail, password, setPassword }: const redirectUrl = `/api/v1/sso/oidc/login?orgSlug=${orgSlug}${ callbackPort ? `&callbackPort=${callbackPort}` : "" }`; - navigate({ to: redirectUrl }); + + window.location.assign(redirectUrl); }; useEffect(() => { diff --git a/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx b/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx index cf00be0de..f4bcb771a 100644 --- a/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx +++ b/frontend/src/pages/project/AccessControlPage/components/ProjectRoleListTab/components/ProjectRoleList/ProjectRoleList.tsx @@ -25,7 +25,7 @@ import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@a import { usePopUp } from "@app/hooks"; import { useDeleteProjectRole, useGetProjectRoles } from "@app/hooks/api"; import { TProjectRole } from "@app/hooks/api/roles/types"; -import { RoleModal } from "@app/pages/organization/RoleByIDPage/components"; +import { RoleModal } from "@app/pages/project/RoleDetailsBySlugPage/components/RoleModal"; export const ProjectRoleList = () => { const navigate = useNavigate(); From ddac9f7cc48cbd6193cb3cb467e5b2b2774316a8 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 8 Jan 2025 16:27:56 +0530 Subject: [PATCH 2/4] feat: made all redirect route to coerce it --- .../AppConnections/GithubOauthCallbackPage/route.tsx | 2 +- .../AzureAppConfigurationOauthCallbackPage/route.tsx | 2 +- .../integrations/AzureKeyVaultOauthCallbackPage/route.tsx | 2 +- .../integrations/BitbucketOauthCallbackPage/route.tsx | 2 +- .../integrations/GcpSecretManagerOauthCallbackPage/route.tsx | 2 +- .../integrations/GithubOauthCallbackPage/route.tsx | 2 +- .../integrations/GitlabOauthCallbackPage/route.tsx | 2 +- .../integrations/HerokuOauthCallbackPage/route.tsx | 2 +- .../integrations/NetlifyOauthCallbackPage/route.tsx | 2 +- .../integrations/VercelOauthCallbackPage/route.tsx | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx b/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx index 3157b1c88..22c314765 100644 --- a/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx +++ b/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx @@ -5,7 +5,7 @@ import { z } from "zod"; import { GitHubOAuthCallbackPage } from "./GithubOauthCallbackPage"; const GitHubOAuthCallbackPageQueryParamsSchema = z.object({ - code: z.string().catch(""), + code: z.coerce.string().catch(""), state: z.string().catch(""), installation_id: z.coerce.string().catch("") }); diff --git a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx index a52cffeac..04ab9125f 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { AzureAppConfigurationOauthCallbackPage } from "./AzureAppConfigurationO export const AzureAppConfigurationOauthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx index e69a69e81..2f446be18 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { AzureKeyVaultOauthCallbackPage } from "./AzureKeyVaultOauthCallback"; export const AzureKeyVaultOauthCallbackQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx index 1c4ed2f53..8762c4e06 100644 --- a/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { BitbucketOauthCallbackPage } from "./BitbucketOauthCallbackPage"; export const BitbucketOauthCallbackQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx index 65af436b5..021de7a20 100644 --- a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { GcpSecretManagerOauthCallbackPage } from "./GcpSecretManagerOauthCallba export const GcpSecretManagerOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx index 7b99bc060..24b97d16e 100644 --- a/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx @@ -7,7 +7,7 @@ import { GithubOauthCallbackPage } from "./GithubOauthCallbackPage"; export const GithubOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), installation_id: z.coerce.string().catch(""), - code: z.string().catch("") + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx index 13cd57431..7a960e60c 100644 --- a/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { GitLabOAuthCallbackPage } from "./GitlabOauthCallbackPage"; export const GitlabOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx index b98f7abd5..610d786ae 100644 --- a/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { HerokuOAuthCallbackPage } from "./HerokuOauthCallbackPage"; export const HerokuOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx index 004fda6d2..3a6670440 100644 --- a/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { NetlifyOauthCallbackPage } from "./NetlifyOauthCallbackPage"; export const NetlifyOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx index bfe836cc6..b860252d6 100644 --- a/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { VercelOauthCallbackPage } from "./VercelOauthCallbackPage"; export const VercelOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string() + code: z.coerce.string().catch("") }); export const Route = createFileRoute( From 0ecc196e5dda3d21c4aed7498a57554da6ad41ed Mon Sep 17 00:00:00 2001 From: = Date: Wed, 8 Jan 2025 16:30:46 +0530 Subject: [PATCH 3/4] feat: added missing coerce in azure key vault --- .../integrations/AzureKeyVaultOauthCallbackPage/route.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx index 2f446be18..b4dbd438d 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { AzureKeyVaultOauthCallbackPage } from "./AzureKeyVaultOauthCallback"; export const AzureKeyVaultOauthCallbackQueryParamsSchema = z.object({ state: z.string().catch(""), - code: z.string().catch("") + code: z.coerce.string().catch("") }); export const Route = createFileRoute( From 5ba507bc1ca7c90ecaf930d9e09efb4ac4a12078 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Wed, 8 Jan 2025 19:17:38 +0800 Subject: [PATCH 4/4] misc: made installation ID optional for github --- .../AppConnections/GithubOauthCallbackPage/route.tsx | 2 +- .../integrations/GithubOauthCallbackPage/route.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx b/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx index 22c314765..889c30082 100644 --- a/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx +++ b/frontend/src/pages/organization/AppConnections/GithubOauthCallbackPage/route.tsx @@ -7,7 +7,7 @@ import { GitHubOAuthCallbackPage } from "./GithubOauthCallbackPage"; const GitHubOAuthCallbackPageQueryParamsSchema = z.object({ code: z.coerce.string().catch(""), state: z.string().catch(""), - installation_id: z.coerce.string().catch("") + installation_id: z.coerce.string().optional().catch("") }); export const Route = createFileRoute( diff --git a/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx index 24b97d16e..fd08440a6 100644 --- a/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx @@ -6,7 +6,7 @@ import { GithubOauthCallbackPage } from "./GithubOauthCallbackPage"; export const GithubOAuthCallbackPageQueryParamsSchema = z.object({ state: z.string().catch(""), - installation_id: z.coerce.string().catch(""), + installation_id: z.coerce.string().optional().catch(""), code: z.coerce.string().catch("") });