From 5e9a715127822a1fc385564998e1efc3e41207ee Mon Sep 17 00:00:00 2001 From: Mike Turley Date: Wed, 9 Aug 2023 17:31:18 -0400 Subject: [PATCH] :bug: URL-encode ruleset and rule in affected apps page URL so it doesn't break when ruleset contains a slash (/) character (#1272) Fixes an issue @ibolton336 identified where navigating to the affected apps page from the issues page causes a broken URL if the issue's ruleset contains a `/`. Signed-off-by: Mike Turley --- .../issues/affected-applications/affected-applications.tsx | 4 +++- client/src/app/pages/issues/helpers.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/app/pages/issues/affected-applications/affected-applications.tsx b/client/src/app/pages/issues/affected-applications/affected-applications.tsx index cea1aec8b4..4d5a0f5017 100644 --- a/client/src/app/pages/issues/affected-applications/affected-applications.tsx +++ b/client/src/app/pages/issues/affected-applications/affected-applications.tsx @@ -45,7 +45,9 @@ interface IAffectedApplicationsRouteParams { export const AffectedApplications: React.FC = () => { const { t } = useTranslation(); - const { ruleset, rule } = useParams(); + const routeParams = useParams(); + const ruleset = decodeURIComponent(routeParams.ruleset); + const rule = decodeURIComponent(routeParams.rule); const issueTitle = new URLSearchParams(useLocation().search).get("issueTitle") || "Active rule"; diff --git a/client/src/app/pages/issues/helpers.ts b/client/src/app/pages/issues/helpers.ts index 088d8a0435..33ea13c3b8 100644 --- a/client/src/app/pages/issues/helpers.ts +++ b/client/src/app/pages/issues/helpers.ts @@ -109,8 +109,8 @@ export const getAffectedAppsUrl = ({ if (fromFilterValues[key]) toFilterValues[key] = fromFilterValues[key]; }); const baseUrl = Paths.issuesAllAffectedApplications - .replace("/:ruleset/", `/${ruleReport.ruleset}/`) - .replace("/:rule/", `/${ruleReport.rule}/`); + .replace("/:ruleset/", `/${encodeURIComponent(ruleReport.ruleset)}/`) + .replace("/:rule/", `/${encodeURIComponent(ruleReport.rule)}/`); const prefix = (key: string) => `${TableURLParamKeyPrefix.issuesAffectedApps}:${key}`; return `${baseUrl}?${trimAndStringifyUrlParams({