mirror of
				https://github.com/scm-manager/scm-manager.git
				synced 2025-10-31 18:46:07 +01:00 
			
		
		
		
	Fix routing for entity names with parenthesis (#1998)
If entities like users, groups or repository namespaces contains parenthesis the frontend router gets confused and doesn't work properly. To fix this issue we escape the chars in the url which may cause such problems because they are reserved by the http url schema. Co-authored-by: René Pfeuffer <rene.pfeuffer@cloudogu.com> Co-authored-by: Florian Scholdei <florian.scholdei@cloudogu.com>
This commit is contained in:
		| @@ -229,6 +229,8 @@ const RepositoryRoot = () => { | ||||
|     /> | ||||
|   ); | ||||
|  | ||||
|   const escapedUrl = urls.escapeUrlForRoute(url); | ||||
|  | ||||
|   return ( | ||||
|     <StateMenuContextProvider> | ||||
|       <Page | ||||
| @@ -247,57 +249,64 @@ const RepositoryRoot = () => { | ||||
|         <CustomQueryFlexWrappedColumns> | ||||
|           <PrimaryContentColumn> | ||||
|             <Switch> | ||||
|               <Redirect exact from={match.url} to={redirectedUrl} /> | ||||
|               <Redirect exact from={urls.escapeUrlForRoute(match.url)} to={urls.escapeUrlForRoute(redirectedUrl)} /> | ||||
|  | ||||
|               {/* redirect pre 2.0.0-rc2 links */} | ||||
|               <Redirect from={`${url}/changeset/:id`} to={`${url}/code/changeset/:id`} /> | ||||
|               <Redirect exact from={`${url}/sources`} to={`${url}/code/sources`} /> | ||||
|               <Redirect from={`${url}/sources/:revision/:path*`} to={`${url}/code/sources/:revision/:path*`} /> | ||||
|               <Redirect exact from={`${url}/changesets`} to={`${url}/code/changesets`} /> | ||||
|               <Redirect from={`${url}/branch/:branch/changesets`} to={`${url}/code/branch/:branch/changesets/`} /> | ||||
|               <Redirect from={`${escapedUrl}/changeset/:id`} to={`${url}/code/changeset/:id`} /> | ||||
|               <Redirect exact from={`${escapedUrl}/sources`} to={`${url}/code/sources`} /> | ||||
|               <Redirect from={`${escapedUrl}/sources/:revision/:path*`} to={`${url}/code/sources/:revision/:path*`} /> | ||||
|               <Redirect exact from={`${escapedUrl}/changesets`} to={`${url}/code/changesets`} /> | ||||
|               <Redirect | ||||
|                 from={`${escapedUrl}/branch/:branch/changesets`} | ||||
|                 to={`${url}/code/branch/:branch/changesets/`} | ||||
|               /> | ||||
|  | ||||
|               <Route path={`${url}/info`} exact> | ||||
|               <Route path={`${escapedUrl}/info`} exact> | ||||
|                 <RepositoryDetails repository={repository} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/settings/general`}> | ||||
|               <Route path={`${escapedUrl}/settings/general`}> | ||||
|                 <EditRepo repository={repository} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/settings/permissions`}> | ||||
|               <Route path={`${escapedUrl}/settings/permissions`}> | ||||
|                 <Permissions namespaceOrRepository={repository} /> | ||||
|               </Route> | ||||
|               <Route exact path={`${url}/code/changeset/:id`}> | ||||
|               <Route exact path={`${escapedUrl}/code/changeset/:id`}> | ||||
|                 <ChangesetView repository={repository} fileControlFactoryFactory={fileControlFactoryFactory} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/code/sourceext/:extension`} exact={true}> | ||||
|               <Route path={`${escapedUrl}/code/sourceext/:extension`} exact={true}> | ||||
|                 <SourceExtensions repository={repository} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/code/sourceext/:extension/:revision/:path*`}> | ||||
|               <Route path={`${escapedUrl}/code/sourceext/:extension/:revision/:path*`}> | ||||
|                 <SourceExtensions repository={repository} baseUrl={`${url}/code/sources`} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/code`}> | ||||
|               <Route path={`${escapedUrl}/code`}> | ||||
|                 <CodeOverview baseUrl={`${url}/code`} repository={repository} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/branch/:branch`}> | ||||
|               <Route path={`${escapedUrl}/branch/:branch`}> | ||||
|                 <BranchRoot repository={repository} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/branches`} exact={true}> | ||||
|               <Route path={`${escapedUrl}/branches`} exact={true}> | ||||
|                 <BranchesOverview repository={repository} baseUrl={`${url}/branch`} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/branches/create`}> | ||||
|               <Route path={`${escapedUrl}/branches/create`}> | ||||
|                 <CreateBranch repository={repository} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/tag/:tag`}> | ||||
|               <Route path={`${escapedUrl}/tag/:tag`}> | ||||
|                 <TagRoot repository={repository} baseUrl={`${url}/tag`} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/tags`} exact={true}> | ||||
|               <Route path={`${escapedUrl}/tags`} exact={true}> | ||||
|                 <TagsOverview repository={repository} baseUrl={`${url}/tag`} /> | ||||
|               </Route> | ||||
|               <Route path={`${url}/compare/:sourceType/:sourceName`}> | ||||
|               <Route path={`${escapedUrl}/compare/:sourceType/:sourceName`}> | ||||
|                 <CompareRoot repository={repository} baseUrl={`${url}/compare`} /> | ||||
|               </Route> | ||||
|               <ExtensionPoint<extensionPoints.RepositoryRoute> | ||||
|                 name="repository.route" | ||||
|                 props={extensionProps} | ||||
|                 props={{ | ||||
|                   repository, | ||||
|                   url: urls.escapeUrlForRoute(url), | ||||
|                   indexLinks | ||||
|                 }} | ||||
|                 renderAll={true} | ||||
|               /> | ||||
|             </Switch> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user