fix: orgid in routing

This commit is contained in:
Piyush Gupta
2025-11-19 14:09:28 +05:30
parent 617c9cb1bc
commit 16c06dacfe
312 changed files with 4776 additions and 4324 deletions

View File

@@ -70,7 +70,8 @@ export default function NavHeader({
{currentOrg?.name?.charAt(0)} {currentOrg?.name?.charAt(0)}
</div> </div>
<Link <Link
to="/organization/projects" to="/organizations/$orgId/projects"
params={{ orgId: currentOrg?.id || "" }}
className="truncate pl-0.5 text-sm font-medium text-primary/80 hover:text-primary" className="truncate pl-0.5 text-sm font-medium text-primary/80 hover:text-primary"
> >
{currentOrg?.name} {currentOrg?.name}
@@ -90,8 +91,8 @@ export default function NavHeader({
<FontAwesomeIcon icon={faAngleRight} className="mr-3 ml-3 text-sm text-gray-400" /> <FontAwesomeIcon icon={faAngleRight} className="mr-3 ml-3 text-sm text-gray-400" />
{pageName === "Secrets" ? ( {pageName === "Secrets" ? (
<Link <Link
to="/projects/secret-management/$projectId/overview" to="/organizations/$orgId/projects/secret-management/$projectId/overview"
params={{ projectId: currentProject.id }} params={{ orgId: currentOrg?.id || "", projectId: currentProject.id }}
className="text-sm font-medium text-primary/80 hover:text-primary" className="text-sm font-medium text-primary/80 hover:text-primary"
> >
{pageName} {pageName}
@@ -126,8 +127,8 @@ export default function NavHeader({
<div className="flex items-center space-x-3"> <div className="flex items-center space-x-3">
<FontAwesomeIcon icon={faAngleRight} className="mr-1.5 ml-3 text-xs text-gray-400" /> <FontAwesomeIcon icon={faAngleRight} className="mr-1.5 ml-3 text-xs text-gray-400" />
<Link <Link
to="/projects/secret-management/$projectId/secrets/$envSlug" to="/organizations/$orgId/projects/secret-management/$projectId/secrets/$envSlug"
params={{ projectId: currentProject.id, envSlug: routerEnvSlug }} params={{ orgId: currentOrg.id, projectId: currentProject.id, envSlug: routerEnvSlug }}
className="text-sm font-medium text-primary/80 hover:text-primary" className="text-sm font-medium text-primary/80 hover:text-primary"
> >
{userAvailableEnvs?.find(({ slug }) => slug === currentEnv)?.name} {userAvailableEnvs?.find(({ slug }) => slug === currentEnv)?.name}
@@ -188,8 +189,9 @@ export default function NavHeader({
</div> </div>
) : ( ) : (
<Link <Link
to="/projects/secret-management/$projectId/secrets/$envSlug" to="/organizations/$orgId/projects/secret-management/$projectId/secrets/$envSlug"
params={{ params={{
orgId: currentOrg?.id || "",
projectId: currentProject.id, projectId: currentProject.id,
envSlug: routerEnvSlug || "" envSlug: routerEnvSlug || ""
}} }}

View File

@@ -3,6 +3,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link } from "@tanstack/react-router"; import { Link } from "@tanstack/react-router";
import { twMerge } from "tailwind-merge"; import { twMerge } from "tailwind-merge";
import { useOrganization } from "@app/context";
import { useTimedReset } from "@app/hooks"; import { useTimedReset } from "@app/hooks";
import { createNotification } from "../notifications"; import { createNotification } from "../notifications";
@@ -23,6 +24,7 @@ export const SecretDashboardPathBreadcrumb = ({
projectId, projectId,
disableCopy disableCopy
}: Props) => { }: Props) => {
const { currentOrg } = useOrganization();
const [, isCopying, setIsCopying] = useTimedReset({ const [, isCopying, setIsCopying] = useTimedReset({
initialState: false initialState: false
}); });
@@ -69,8 +71,9 @@ export const SecretDashboardPathBreadcrumb = ({
</div> </div>
) : ( ) : (
<Link <Link
to="/projects/secret-management/$projectId/secrets/$envSlug" to="/organizations/$orgId/projects/secret-management/$projectId/secrets/$envSlug"
params={{ params={{
orgId: currentOrg?.id || "",
projectId, projectId,
envSlug: environmentSlug envSlug: environmentSlug
}} }}

View File

@@ -25,343 +25,343 @@ export const ROUTE_PATHS = Object.freeze({
Organization: { Organization: {
Settings: { Settings: {
OauthCallbackPage: setRoute( OauthCallbackPage: setRoute(
"/organization/settings/oauth/callback", "/organizations/$orgId/settings/oauth/callback",
"/_authenticate/_inject-org-details/_org-layout/organization/settings/oauth/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/settings/oauth/callback"
) )
}, },
SecretSharing: setRoute( SecretSharing: setRoute(
"/organization/secret-sharing", "/organizations/$orgId/secret-sharing",
"/_authenticate/_inject-org-details/_org-layout/organization/secret-sharing/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/secret-sharing/"
), ),
SettingsPage: setRoute( SettingsPage: setRoute(
"/organization/settings", "/organizations/$orgId/settings",
"/_authenticate/_inject-org-details/_org-layout/organization/settings/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/settings/"
), ),
GroupDetailsByIDPage: setRoute( GroupDetailsByIDPage: setRoute(
"/organization/groups/$groupId", "/organizations/$orgId/groups/$groupId",
"/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/groups/$groupId"
), ),
IdentityDetailsByIDPage: setRoute( IdentityDetailsByIDPage: setRoute(
"/organization/identities/$identityId", "/organizations/$orgId/identities/$identityId",
"/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/identities/$identityId"
), ),
UserDetailsByIDPage: setRoute( UserDetailsByIDPage: setRoute(
"/organization/members/$membershipId", "/organizations/$orgId/members/$membershipId",
"/_authenticate/_inject-org-details/_org-layout/organization/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/members/$membershipId"
), ),
AccessControlPage: setRoute( AccessControlPage: setRoute(
"/organization/access-management", "/organizations/$orgId/access-management",
"/_authenticate/_inject-org-details/_org-layout/organization/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/access-management"
), ),
RoleByIDPage: setRoute( RoleByIDPage: setRoute(
"/organization/roles/$roleId", "/organizations/$orgId/roles/$roleId",
"/_authenticate/_inject-org-details/_org-layout/organization/roles/$roleId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/roles/$roleId"
), ),
AppConnections: { AppConnections: {
OauthCallbackPage: setRoute( OauthCallbackPage: setRoute(
"/organization/app-connections/$appConnection/oauth/callback", "/organizations/$orgId/app-connections/$appConnection/oauth/callback",
"/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/app-connections/$appConnection/oauth/callback"
) )
}, },
NetworkingPage: setRoute( NetworkingPage: setRoute(
"/organization/networking", "/organizations/$orgId/networking",
"/_authenticate/_inject-org-details/_org-layout/organization/networking" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/networking"
) )
}, },
SecretManager: { SecretManager: {
ApprovalPage: setRoute( ApprovalPage: setRoute(
"/projects/secret-management/$projectId/approval", "/organizations/$orgId/projects/secret-management/$projectId/approval",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/approval" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval"
), ),
SecretDashboardPage: setRoute( SecretDashboardPage: setRoute(
"/projects/secret-management/$projectId/secrets/$envSlug", "/organizations/$orgId/projects/secret-management/$projectId/secrets/$envSlug",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/secrets/$envSlug" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secrets/$envSlug"
), ),
RollbackPreviewPage: setRoute( RollbackPreviewPage: setRoute(
"/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/restore", "/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/restore",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId/restore" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId/restore"
), ),
CommitDetailsPage: setRoute( CommitDetailsPage: setRoute(
"/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId", "/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId"
), ),
CommitsPage: setRoute( CommitsPage: setRoute(
"/projects/secret-management/$projectId/commits/$environment/$folderId", "/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId"
), ),
OverviewPage: setRoute( OverviewPage: setRoute(
"/projects/secret-management/$projectId/overview", "/organizations/$orgId/projects/secret-management/$projectId/overview",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/overview" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview"
), ),
IntegrationsListPage: setRoute( IntegrationsListPage: setRoute(
"/projects/secret-management/$projectId/integrations", "/organizations/$orgId/projects/secret-management/$projectId/integrations",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/"
), ),
IntegrationDetailsByIDPage: setRoute( IntegrationDetailsByIDPage: setRoute(
"/projects/secret-management/$projectId/integrations/$integrationId", "/organizations/$orgId/projects/secret-management/$projectId/integrations/$integrationId",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/$integrationId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/$integrationId"
), ),
SecretSyncDetailsByIDPage: setRoute( SecretSyncDetailsByIDPage: setRoute(
"/projects/secret-management/$projectId/integrations/secret-syncs/$destination/$syncId", "/organizations/$orgId/projects/secret-management/$projectId/integrations/secret-syncs/$destination/$syncId",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/secret-syncs/$destination/$syncId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/secret-syncs/$destination/$syncId"
), ),
Integratons: { Integratons: {
SelectIntegrationAuth: setRoute( SelectIntegrationAuth: setRoute(
"/projects/secret-management/$projectId/integrations/select-integration-auth", "/organizations/$orgId/projects/secret-management/$projectId/integrations/select-integration-auth",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/select-integration-auth" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/select-integration-auth"
), ),
HerokuOauthCallbackPage: setRoute( HerokuOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/heroku/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/heroku/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/heroku/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/heroku/oauth2/callback"
), ),
HerokuConfigurePage: setRoute( HerokuConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/heroku/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/heroku/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/heroku/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/heroku/create"
), ),
AwsParameterStoreConfigurePage: setRoute( AwsParameterStoreConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/aws-parameter-store/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/aws-parameter-store/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/aws-parameter-store/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/aws-parameter-store/create"
), ),
AwsSecretManagerConfigurePage: setRoute( AwsSecretManagerConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/aws-secret-manager/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/aws-secret-manager/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/aws-secret-manager/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/aws-secret-manager/create"
), ),
AzureAppConfigurationsOauthCallbackPage: setRoute( AzureAppConfigurationsOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/azure-app-configuration/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-app-configuration/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback"
), ),
AzureAppConfigurationsConfigurePage: setRoute( AzureAppConfigurationsConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/azure-app-configuration/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-app-configuration/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-app-configuration/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-app-configuration/create"
), ),
AzureDevopsConfigurePage: setRoute( AzureDevopsConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/azure-devops/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-devops/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-devops/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-devops/create"
), ),
AzureKeyVaultAuthorizePage: setRoute( AzureKeyVaultAuthorizePage: setRoute(
"/projects/secret-management/$projectId/integrations/azure-key-vault/authorize", "/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-key-vault/authorize",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-key-vault/authorize" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-key-vault/authorize"
), ),
AzureKeyVaultOauthCallbackPage: setRoute( AzureKeyVaultOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/azure-key-vault/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-key-vault/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-key-vault/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-key-vault/oauth2/callback"
), ),
AzureKeyVaultConfigurePage: setRoute( AzureKeyVaultConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/azure-key-vault/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-key-vault/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-key-vault/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-key-vault/create"
), ),
BitbucketOauthCallbackPage: setRoute( BitbucketOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/bitbucket/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/bitbucket/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/bitbucket/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/bitbucket/oauth2/callback"
), ),
BitbucketConfigurePage: setRoute( BitbucketConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/bitbucket/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/bitbucket/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/bitbucket/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/bitbucket/create"
), ),
ChecklyConfigurePage: setRoute( ChecklyConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/checkly/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/checkly/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/checkly/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/checkly/create"
), ),
CircleConfigurePage: setRoute( CircleConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/circleci/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/circleci/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/circleci/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/circleci/create"
), ),
CloudflarePagesConfigurePage: setRoute( CloudflarePagesConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/cloudflare-pages/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/cloudflare-pages/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/cloudflare-pages/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/cloudflare-pages/create"
), ),
DigitalOceanAppPlatformConfigurePage: setRoute( DigitalOceanAppPlatformConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/digital-ocean-app-platform/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/digital-ocean-app-platform/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/digital-ocean-app-platform/create"
), ),
CloudflareWorkersConfigurePage: setRoute( CloudflareWorkersConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/cloudflare-workers/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/cloudflare-workers/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/cloudflare-workers/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/cloudflare-workers/create"
), ),
CodefreshConfigurePage: setRoute( CodefreshConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/codefresh/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/codefresh/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/codefresh/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/codefresh/create"
), ),
GcpSecretManagerConfigurePage: setRoute( GcpSecretManagerConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/gcp-secret-manager/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/gcp-secret-manager/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/create"
), ),
GcpSecretManagerOauthCallbackPage: setRoute( GcpSecretManagerOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/gcp-secret-manager/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/gcp-secret-manager/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/gcp-secret-manager/oauth2/callback"
), ),
GithubConfigurePage: setRoute( GithubConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/github/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/github/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/github/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/github/create"
), ),
GithubOauthCallbackPage: setRoute( GithubOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/github/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/github/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/github/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/github/oauth2/callback"
), ),
GitlabConfigurePage: setRoute( GitlabConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/gitlab/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/gitlab/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/gitlab/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/gitlab/create"
), ),
GitlabOauthCallbackPage: setRoute( GitlabOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/gitlab/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/gitlab/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/gitlab/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/gitlab/oauth2/callback"
), ),
VercelOauthCallbackPage: setRoute( VercelOauthCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/vercel/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/vercel/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/vercel/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/vercel/oauth2/callback"
), ),
VercelConfigurePage: setRoute( VercelConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/vercel/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/vercel/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/vercel/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/vercel/create"
), ),
FlyioConfigurePage: setRoute( FlyioConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/flyio/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/flyio/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/flyio/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/flyio/create"
), ),
HashicorpVaultConfigurePage: setRoute( HashicorpVaultConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/hashicorp-vault/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/hashicorp-vault/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/hashicorp-vault/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/hashicorp-vault/create"
), ),
HasuraCloudConfigurePage: setRoute( HasuraCloudConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/hasura-cloud/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/hasura-cloud/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/hasura-cloud/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/hasura-cloud/create"
), ),
LaravelForgeConfigurePage: setRoute( LaravelForgeConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/laravel-forge/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/laravel-forge/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/laravel-forge/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/laravel-forge/create"
), ),
NorthflankConfigurePage: setRoute( NorthflankConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/northflank/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/northflank/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/northflank/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/northflank/create"
), ),
RailwayConfigurePage: setRoute( RailwayConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/railway/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/railway/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/railway/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/railway/create"
), ),
RenderConfigurePage: setRoute( RenderConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/render/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/render/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/render/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/render/create"
), ),
RundeckConfigurePage: setRoute( RundeckConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/rundeck/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/rundeck/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/rundeck/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/rundeck/create"
), ),
WindmillConfigurePage: setRoute( WindmillConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/windmill/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/windmill/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/windmill/create"
), ),
TravisCIConfigurePage: setRoute( TravisCIConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/travisci/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/travisci/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/travisci/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/travisci/create"
), ),
TerraformCloudConfigurePage: setRoute( TerraformCloudConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/terraform-cloud/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/terraform-cloud/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/terraform-cloud/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/terraform-cloud/create"
), ),
TeamcityConfigurePage: setRoute( TeamcityConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/teamcity/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/teamcity/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/teamcity/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/teamcity/create"
), ),
SupabaseConfigurePage: setRoute( SupabaseConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/supabase/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/supabase/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/supabase/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/supabase/create"
), ),
OctopusDeployCloudConfigurePage: setRoute( OctopusDeployCloudConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/octopus-deploy/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/octopus-deploy/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/octopus-deploy/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/octopus-deploy/create"
), ),
DatabricksConfigurePage: setRoute( DatabricksConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/databricks/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/databricks/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/databricks/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/databricks/create"
), ),
QoveryConfigurePage: setRoute( QoveryConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/qovery/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/qovery/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/qovery/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/qovery/create"
), ),
Cloud66ConfigurePage: setRoute( Cloud66ConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/cloud-66/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/cloud-66/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/cloud-66/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/cloud-66/create"
), ),
NetlifyConfigurePage: setRoute( NetlifyConfigurePage: setRoute(
"/projects/secret-management/$projectId/integrations/netlify/create", "/organizations/$orgId/projects/secret-management/$projectId/integrations/netlify/create",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/netlify/create" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/netlify/create"
), ),
NetlifyOuathCallbackPage: setRoute( NetlifyOuathCallbackPage: setRoute(
"/projects/secret-management/$projectId/integrations/netlify/oauth2/callback", "/organizations/$orgId/projects/secret-management/$projectId/integrations/netlify/oauth2/callback",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/integrations/netlify/oauth2/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/netlify/oauth2/callback"
) )
} }
}, },
CertManager: { CertManager: {
CertAuthDetailsByIDPage: setRoute( CertAuthDetailsByIDPage: setRoute(
"/projects/cert-management/$projectId/ca/$caName", "/organizations/$orgId/projects/cert-management/$projectId/ca/$caName",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/ca/$caName" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/ca/$caName"
), ),
SubscribersPage: setRoute( SubscribersPage: setRoute(
"/projects/cert-management/$projectId/subscribers", "/organizations/$orgId/projects/cert-management/$projectId/subscribers",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/subscribers" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/subscribers"
), ),
CertificateAuthoritiesPage: setRoute( CertificateAuthoritiesPage: setRoute(
"/projects/cert-management/$projectId/certificate-authorities", "/organizations/$orgId/projects/cert-management/$projectId/certificate-authorities",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/certificate-authorities" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/certificate-authorities"
), ),
AlertingPage: setRoute( AlertingPage: setRoute(
"/projects/cert-management/$projectId/alerting", "/organizations/$orgId/projects/cert-management/$projectId/alerting",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/alerting" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/alerting"
), ),
PkiCollectionDetailsByIDPage: setRoute( PkiCollectionDetailsByIDPage: setRoute(
"/projects/cert-management/$projectId/pki-collections/$collectionId", "/organizations/$orgId/projects/cert-management/$projectId/pki-collections/$collectionId",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/pki-collections/$collectionId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/pki-collections/$collectionId"
), ),
PkiSubscriberDetailsByIDPage: setRoute( PkiSubscriberDetailsByIDPage: setRoute(
"/projects/cert-management/$projectId/subscribers/$subscriberName", "/organizations/$orgId/projects/cert-management/$projectId/subscribers/$subscriberName",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/subscribers/$subscriberName" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/subscribers/$subscriberName"
), ),
IntegrationsListPage: setRoute( IntegrationsListPage: setRoute(
"/projects/cert-management/$projectId/integrations", "/organizations/$orgId/projects/cert-management/$projectId/integrations",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/integrations/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/integrations/"
), ),
PkiSyncDetailsByIDPage: setRoute( PkiSyncDetailsByIDPage: setRoute(
"/projects/cert-management/$projectId/integrations/$syncId", "/organizations/$orgId/projects/cert-management/$projectId/integrations/$syncId",
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/integrations/$syncId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/integrations/$syncId"
) )
}, },
Ssh: { Ssh: {
SshCaByIDPage: setRoute( SshCaByIDPage: setRoute(
"/projects/ssh/$projectId/ca/$caId", "/organizations/$orgId/projects/ssh/$projectId/ca/$caId",
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/ca/$caId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/ca/$caId"
), ),
SshHostGroupDetailsByIDPage: setRoute( SshHostGroupDetailsByIDPage: setRoute(
"/projects/ssh/$projectId/ssh-host-groups/$sshHostGroupId", "/organizations/$orgId/projects/ssh/$projectId/ssh-host-groups/$sshHostGroupId",
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/ssh-host-groups/$sshHostGroupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/ssh-host-groups/$sshHostGroupId"
) )
}, },
SecretScanning: { SecretScanning: {
DataSourceByIdPage: setRoute( DataSourceByIdPage: setRoute(
"/projects/secret-scanning/$projectId/data-sources/$type/$dataSourceId", "/organizations/$orgId/projects/secret-scanning/$projectId/data-sources/$type/$dataSourceId",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/data-sources/$type/$dataSourceId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/data-sources/$type/$dataSourceId"
), ),
FindingsPage: setRoute( FindingsPage: setRoute(
"/projects/secret-scanning/$projectId/findings", "/organizations/$orgId/projects/secret-scanning/$projectId/findings",
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/findings" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/findings"
) )
}, },
Pam: { Pam: {
AccountsPage: setRoute( AccountsPage: setRoute(
"/projects/pam/$projectId/accounts", "/organizations/$orgId/projects/pam/$projectId/accounts",
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/accounts" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/accounts"
), ),
ResourcesPage: setRoute( ResourcesPage: setRoute(
"/projects/pam/$projectId/resources", "/organizations/$orgId/projects/pam/$projectId/resources",
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/resources" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources"
), ),
SessionsPage: setRoute( SessionsPage: setRoute(
"/projects/pam/$projectId/sessions", "/organizations/$orgId/projects/pam/$projectId/sessions",
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/sessions/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions/"
), ),
PamSessionByIDPage: setRoute( PamSessionByIDPage: setRoute(
"/projects/pam/$projectId/sessions/$sessionId", "/organizations/$orgId/projects/pam/$projectId/sessions/$sessionId",
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/sessions/$sessionId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions/$sessionId"
) )
}, },
Public: { Public: {

View File

@@ -64,11 +64,11 @@ export const initProjectHelper = async ({ projectName }: { projectName: string }
export const getProjectBaseURL = (type: ProjectType) => { export const getProjectBaseURL = (type: ProjectType) => {
switch (type) { switch (type) {
case ProjectType.SecretManager: case ProjectType.SecretManager:
return "/projects/secret-management/$projectId"; return "/organizations/$orgId/projects/secret-management/$projectId";
case ProjectType.CertificateManager: case ProjectType.CertificateManager:
return "/projects/cert-management/$projectId"; return "/organizations/$orgId/projects/cert-management/$projectId";
default: default:
return `/projects/${type}/$projectId` as const; return `/organizations/$orgId/projects/${type}/$projectId` as const;
} }
}; };
@@ -77,15 +77,15 @@ export const getProjectBaseURL = (type: ProjectType) => {
export const getProjectHomePage = (type: ProjectType, environments: ProjectEnv[]) => { export const getProjectHomePage = (type: ProjectType, environments: ProjectEnv[]) => {
switch (type) { switch (type) {
case ProjectType.SecretManager: case ProjectType.SecretManager:
return "/projects/secret-management/$projectId/overview" as const; return "/organizations/$orgId/projects/secret-management/$projectId/overview" as const;
case ProjectType.CertificateManager: case ProjectType.CertificateManager:
return "/projects/cert-management/$projectId/policies" as const; return "/organizations/$orgId/projects/cert-management/$projectId/policies" as const;
case ProjectType.SecretScanning: case ProjectType.SecretScanning:
return `/projects/${type}/$projectId/data-sources` as const; return `/organizations/$orgId/projects/${type}/$projectId/data-sources` as const;
case ProjectType.PAM: case ProjectType.PAM:
return `/projects/${type}/$projectId/accounts` as const; return `/organizations/$orgId/projects/${type}/$projectId/accounts` as const;
default: default:
return `/projects/${type}/$projectId/overview` as const; return `/organizations/$orgId/projects/${type}/$projectId/overview` as const;
} }
}; };

View File

@@ -2,12 +2,13 @@ import { Link, Outlet, useLocation } from "@tanstack/react-router";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import { Tab, TabList, Tabs } from "@app/components/v2"; import { Tab, TabList, Tabs } from "@app/components/v2";
import { useProject, useProjectPermission } from "@app/context"; import { useOrganization, useProject, useProjectPermission } from "@app/context";
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner"; import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
export const KmsLayout = () => { export const KmsLayout = () => {
const { currentProject } = useProject(); const { currentProject } = useProject();
const { currentOrg } = useOrganization();
const { assumedPrivilegeDetails } = useProjectPermission(); const { assumedPrivilegeDetails } = useProjectPermission();
const location = useLocation(); const location = useLocation();
@@ -27,24 +28,27 @@ export const KmsLayout = () => {
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link <Link
to="/projects/kms/$projectId/overview" to="/organizations/$orgId/projects/kms/$projectId/overview"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Overview</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Overview</Tab>}
</Link> </Link>
<Link <Link
to="/projects/kms/$projectId/kmip" to="/organizations/$orgId/projects/kms/$projectId/kmip"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>KMIP</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>KMIP</Tab>}
</Link> </Link>
<Link <Link
to="/projects/kms/$projectId/access-management" to="/organizations/$orgId/projects/kms/$projectId/access-management"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -62,16 +66,18 @@ export const KmsLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/kms/$projectId/audit-logs" to="/organizations/$orgId/projects/kms/$projectId/audit-logs"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>}
</Link> </Link>
<Link <Link
to="/projects/kms/$projectId/settings" to="/organizations/$orgId/projects/kms/$projectId/settings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >

View File

@@ -282,7 +282,7 @@ export const Navbar = () => {
<div className="z-10 flex min-h-12 items-center bg-mineshaft-900 px-4 pt-1"> <div className="z-10 flex min-h-12 items-center bg-mineshaft-900 px-4 pt-1">
<div className="mr-auto flex items-center overflow-hidden"> <div className="mr-auto flex items-center overflow-hidden">
<div className="shrink-0"> <div className="shrink-0">
<Link to="/organization/projects"> <Link to="/organizations/$orgId/projects" params={{ orgId: currentOrg.id }}>
<img alt="infisical logo" src="/images/logotransparent.png" className="h-4" /> <img alt="infisical logo" src="/images/logotransparent.png" className="h-4" />
</Link> </Link>
</div> </div>
@@ -322,7 +322,8 @@ export const Navbar = () => {
type="button" type="button"
onClick={async () => { onClick={async () => {
navigate({ navigate({
to: "/organization/projects", to: "/organizations/$orgId/projects",
params: { orgId: currentOrg.id },
search: (search) => ({ ...search, subOrganization: undefined }) search: (search) => ({ ...search, subOrganization: undefined })
}); });
if (isSubOrganization) { if (isSubOrganization) {
@@ -407,7 +408,8 @@ export const Navbar = () => {
<DropdownMenuItem <DropdownMenuItem
onClick={async () => { onClick={async () => {
navigate({ navigate({
to: "/organization/projects", to: "/organizations/$orgId/projects",
params: { orgId: currentOrg.id },
search: (prev) => ({ ...prev, subOrganization: subOrg.name }) search: (prev) => ({ ...prev, subOrganization: subOrg.name })
}); });
await router.invalidate({ sync: true }).catch(() => null); await router.invalidate({ sync: true }).catch(() => null);
@@ -481,7 +483,7 @@ export const Navbar = () => {
"min-w-6 bg-transparent text-mineshaft-200 hover:!bg-transparent hover:underline [&>svg]:!text-sub-org" "min-w-6 bg-transparent text-mineshaft-200 hover:!bg-transparent hover:underline [&>svg]:!text-sub-org"
)} )}
> >
<Link to="/organization/projects"> <Link to="/organizations/$orgId/projects" params={{ orgId: currentOrg.id }}>
<SubOrgIcon className="size-[12px]" /> <SubOrgIcon className="size-[12px]" />
<span>{currentOrg.subOrganization.name}</span> <span>{currentOrg.subOrganization.name}</span>
</Link> </Link>
@@ -511,7 +513,8 @@ export const Navbar = () => {
<DropdownMenuItem <DropdownMenuItem
onClick={async () => { onClick={async () => {
navigate({ navigate({
to: "/organization/projects", to: "/organizations/$orgId/projects",
params: { orgId: currentOrg.id },
search: (prev) => ({ ...prev, subOrganization: subOrg.name }) search: (prev) => ({ ...prev, subOrganization: subOrg.name })
}); });
await router.invalidate({ sync: true }).catch(() => null); await router.invalidate({ sync: true }).catch(() => null);
@@ -593,7 +596,8 @@ export const Navbar = () => {
isAllowed ? ( isAllowed ? (
<Link <Link
className="mr-2 flex h-[34px] items-center rounded-md border border-mineshaft-500 px-2.5 py-1.5 text-sm whitespace-nowrap text-mineshaft-200 hover:bg-mineshaft-600" className="mr-2 flex h-[34px] items-center rounded-md border border-mineshaft-500 px-2.5 py-1.5 text-sm whitespace-nowrap text-mineshaft-200 hover:bg-mineshaft-600"
to="/organization/access-management" to="/organizations/$orgId/access-management"
params={{ orgId: currentOrg.id }}
search={{ search={{
selectedTab: "members", selectedTab: "members",
action: "invite-members" action: "invite-members"
@@ -696,7 +700,8 @@ export const Navbar = () => {
{(isAllowed) => {(isAllowed) =>
isAllowed ? ( isAllowed ? (
<Link <Link
to="/organization/access-management" to="/organizations/$orgId/access-management"
params={{ orgId: currentOrg.id }}
search={{ search={{
selectedTab: "members", selectedTab: "members",
action: "invite-members" action: "invite-members"
@@ -778,7 +783,11 @@ export const Navbar = () => {
</div> </div>
<div className="mt-4"> <div className="mt-4">
<div className="flex space-x-3"> <div className="flex space-x-3">
<Link to="/organization/billing" className="inline-flex"> <Link
to="/organizations/$orgId/billing"
params={{ orgId: currentOrg.id }}
className="inline-flex"
>
<Button <Button
colorSchema="primary" colorSchema="primary"
variant="solid" variant="solid"

View File

@@ -11,7 +11,7 @@ type Props = {
}; };
export const OrgNavBar = ({ isHidden }: Props) => { export const OrgNavBar = ({ isHidden }: Props) => {
const { isRootOrganization } = useOrganization(); const { isRootOrganization, currentOrg } = useOrganization();
const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const); const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const);
const { pathname } = useLocation(); const { pathname } = useLocation();
@@ -32,43 +32,47 @@ export const OrgNavBar = ({ isHidden }: Props) => {
<nav className="w-full"> <nav className="w-full">
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link to="/organization/projects"> <Link to="/organizations/$orgId/projects" params={{ orgId: currentOrg.id }}>
{({ isActive }) => ( {({ isActive }) => (
<Tab variant={variant} value={isActive ? "selected" : ""}> <Tab variant={variant} value={isActive ? "selected" : ""}>
Overview Overview
</Tab> </Tab>
)} )}
</Link> </Link>
<Link to="/organization/app-connections"> <Link
to="/organizations/$orgId/app-connections"
params={{ orgId: currentOrg.id }}
>
{({ isActive }) => ( {({ isActive }) => (
<Tab variant={variant} value={isActive ? "selected" : ""}> <Tab variant={variant} value={isActive ? "selected" : ""}>
App Connections App Connections
</Tab> </Tab>
)} )}
</Link> </Link>
<Link to="/organization/networking"> <Link to="/organizations/$orgId/networking" params={{ orgId: currentOrg.id }}>
{({ isActive }) => ( {({ isActive }) => (
<Tab variant={variant} value={isActive ? "selected" : ""}> <Tab variant={variant} value={isActive ? "selected" : ""}>
Networking Networking
</Tab> </Tab>
)} )}
</Link> </Link>
<Link to="/organization/secret-sharing"> <Link to="/organizations/$orgId/secret-sharing" params={{ orgId: currentOrg.id }}>
{({ isActive }) => ( {({ isActive }) => (
<Tab value={isActive ? "selected" : ""} variant={variant}> <Tab value={isActive ? "selected" : ""} variant={variant}>
Secret Sharing Secret Sharing
</Tab> </Tab>
)} )}
</Link> </Link>
<Link to="/organization/access-management"> <Link
to="/organizations/$orgId/access-management"
params={{ orgId: currentOrg.id }}
>
{({ isActive }) => ( {({ isActive }) => (
<Tab <Tab
variant={variant} variant={variant}
value={ value={
isActive || isActive ||
pathname.match( pathname.match(/organizations\/[^/]+\/(members|identities|groups|roles)/)
/organization\/members|organization\/identities|organization\/groups|organization\/roles/
)
? "selected" ? "selected"
: "" : ""
} }
@@ -77,7 +81,7 @@ export const OrgNavBar = ({ isHidden }: Props) => {
</Tab> </Tab>
)} )}
</Link> </Link>
<Link to="/organization/audit-logs"> <Link to="/organizations/$orgId/audit-logs" params={{ orgId: currentOrg.id }}>
{({ isActive }) => ( {({ isActive }) => (
<Tab variant={variant} value={isActive ? "selected" : ""}> <Tab variant={variant} value={isActive ? "selected" : ""}>
Audit Logs Audit Logs
@@ -85,7 +89,7 @@ export const OrgNavBar = ({ isHidden }: Props) => {
)} )}
</Link> </Link>
{isRootOrganization && ( {isRootOrganization && (
<Link to="/organization/billing"> <Link to="/organizations/$orgId/billing" params={{ orgId: currentOrg.id }}>
{({ isActive }) => ( {({ isActive }) => (
<Tab variant={variant} value={isActive ? "selected" : ""}> <Tab variant={variant} value={isActive ? "selected" : ""}>
Usage & Billing Usage & Billing
@@ -93,7 +97,7 @@ export const OrgNavBar = ({ isHidden }: Props) => {
)} )}
</Link> </Link>
)} )}
<Link to="/organization/settings"> <Link to="/organizations/$orgId/settings" params={{ orgId: currentOrg.id }}>
{({ isActive }) => ( {({ isActive }) => (
<Tab variant={variant} value={isActive ? "selected" : ""}> <Tab variant={variant} value={isActive ? "selected" : ""}>
Settings Settings

View File

@@ -4,13 +4,14 @@ import { motion } from "framer-motion";
import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal";
import { Tab, TabList, Tabs } from "@app/components/v2"; import { Tab, TabList, Tabs } from "@app/components/v2";
import { useProject, useProjectPermission, useSubscription } from "@app/context"; import { useOrganization, useProject, useProjectPermission, useSubscription } from "@app/context";
import { usePopUp } from "@app/hooks"; import { usePopUp } from "@app/hooks";
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner"; import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
export const PamLayout = () => { export const PamLayout = () => {
const { currentProject } = useProject(); const { currentProject } = useProject();
const { currentOrg } = useOrganization();
const { subscription } = useSubscription(); const { subscription } = useSubscription();
const { assumedPrivilegeDetails } = useProjectPermission(); const { assumedPrivilegeDetails } = useProjectPermission();
const location = useLocation(); const location = useLocation();
@@ -42,32 +43,36 @@ export const PamLayout = () => {
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link <Link
to="/projects/pam/$projectId/accounts" to="/organizations/$orgId/projects/pam/$projectId/accounts"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Accounts</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Accounts</Tab>}
</Link> </Link>
<Link <Link
to="/projects/pam/$projectId/resources" to="/organizations/$orgId/projects/pam/$projectId/resources"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Resources</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Resources</Tab>}
</Link> </Link>
<Link <Link
to="/projects/pam/$projectId/sessions" to="/organizations/$orgId/projects/pam/$projectId/sessions"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Sessions</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Sessions</Tab>}
</Link> </Link>
<Link <Link
to="/projects/pam/$projectId/access-management" to="/organizations/$orgId/projects/pam/$projectId/access-management"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -85,16 +90,18 @@ export const PamLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/pam/$projectId/audit-logs" to="/organizations/$orgId/projects/pam/$projectId/audit-logs"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>}
</Link> </Link>
<Link <Link
to="/projects/pam/$projectId/settings" to="/organizations/$orgId/projects/pam/$projectId/settings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >

View File

@@ -2,7 +2,7 @@ import { Link, Outlet, useLocation } from "@tanstack/react-router";
import { motion } from "framer-motion"; import { motion } from "framer-motion";
import { Tab, TabList, Tabs } from "@app/components/v2"; import { Tab, TabList, Tabs } from "@app/components/v2";
import { useProject, useProjectPermission, useSubscription } from "@app/context"; import { useOrganization, useProject, useProjectPermission, useSubscription } from "@app/context";
import { import {
useListWorkspaceCertificateTemplates, useListWorkspaceCertificateTemplates,
useListWorkspacePkiSubscribers useListWorkspacePkiSubscribers
@@ -11,6 +11,7 @@ import {
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner"; import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
export const PkiManagerLayout = () => { export const PkiManagerLayout = () => {
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const { assumedPrivilegeDetails } = useProjectPermission(); const { assumedPrivilegeDetails } = useProjectPermission();
const { subscription } = useSubscription(); const { subscription } = useSubscription();
@@ -42,16 +43,18 @@ export const PkiManagerLayout = () => {
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link <Link
to="/projects/cert-management/$projectId/policies" to="/organizations/$orgId/projects/cert-management/$projectId/policies"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Certificates</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Certificates</Tab>}
</Link> </Link>
<Link <Link
to="/projects/cert-management/$projectId/certificate-authorities" to="/organizations/$orgId/projects/cert-management/$projectId/certificate-authorities"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -62,24 +65,27 @@ export const PkiManagerLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/cert-management/$projectId/alerting" to="/organizations/$orgId/projects/cert-management/$projectId/alerting"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Alerting</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Alerting</Tab>}
</Link> </Link>
<Link <Link
to="/projects/cert-management/$projectId/integrations" to="/organizations/$orgId/projects/cert-management/$projectId/integrations"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Integrations</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Integrations</Tab>}
</Link> </Link>
<Link <Link
to="/projects/cert-management/$projectId/app-connections" to="/organizations/$orgId/projects/cert-management/$projectId/app-connections"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -89,8 +95,9 @@ export const PkiManagerLayout = () => {
<> <>
{(subscription.pkiLegacyTemplates || hasExistingSubscribers) && ( {(subscription.pkiLegacyTemplates || hasExistingSubscribers) && (
<Link <Link
to="/projects/cert-management/$projectId/subscribers" to="/organizations/$orgId/projects/cert-management/$projectId/subscribers"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -101,8 +108,9 @@ export const PkiManagerLayout = () => {
)} )}
{(subscription.pkiLegacyTemplates || hasExistingTemplates) && ( {(subscription.pkiLegacyTemplates || hasExistingTemplates) && (
<Link <Link
to="/projects/cert-management/$projectId/certificate-templates" to="/organizations/$orgId/projects/cert-management/$projectId/certificate-templates"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -116,8 +124,9 @@ export const PkiManagerLayout = () => {
</> </>
)} )}
<Link <Link
to="/projects/cert-management/$projectId/access-management" to="/organizations/$orgId/projects/cert-management/$projectId/access-management"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -135,16 +144,18 @@ export const PkiManagerLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/cert-management/$projectId/audit-logs" to="/organizations/$orgId/projects/cert-management/$projectId/audit-logs"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>}
</Link> </Link>
<Link <Link
to="/projects/cert-management/$projectId/settings" to="/organizations/$orgId/projects/cert-management/$projectId/settings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >

View File

@@ -3,7 +3,7 @@ import { motion } from "framer-motion";
import { Tab, TabList, Tabs } from "@app/components/v2"; import { Tab, TabList, Tabs } from "@app/components/v2";
import { Badge } from "@app/components/v3"; import { Badge } from "@app/components/v3";
import { useProject, useProjectPermission } from "@app/context"; import { useOrganization, useProject, useProjectPermission } from "@app/context";
import { import {
useGetAccessRequestsCount, useGetAccessRequestsCount,
useGetSecretApprovalRequestCount, useGetSecretApprovalRequestCount,
@@ -15,6 +15,7 @@ import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePri
export const SecretManagerLayout = () => { export const SecretManagerLayout = () => {
const { currentProject, projectId } = useProject(); const { currentProject, projectId } = useProject();
const { assumedPrivilegeDetails } = useProjectPermission(); const { assumedPrivilegeDetails } = useProjectPermission();
const { currentOrg } = useOrganization();
const location = useLocation(); const location = useLocation();
const projectSlug = currentProject?.slug || ""; const projectSlug = currentProject?.slug || "";
@@ -52,8 +53,9 @@ export const SecretManagerLayout = () => {
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link <Link
to="/projects/secret-management/$projectId/overview" to="/organizations/$orgId/projects/secret-management/$projectId/overview"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id, projectId: currentProject.id,
...(currentProject.environments.length ...(currentProject.environments.length
? { envSlug: currentProject.environments[0]?.slug } ? { envSlug: currentProject.environments[0]?.slug }
@@ -73,8 +75,9 @@ export const SecretManagerLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/secret-management/$projectId/approval" to="/organizations/$orgId/projects/secret-management/$projectId/approval"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -92,8 +95,9 @@ export const SecretManagerLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/secret-management/$projectId/integrations" to="/organizations/$orgId/projects/secret-management/$projectId/integrations"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -101,8 +105,9 @@ export const SecretManagerLayout = () => {
</Link> </Link>
{Boolean(secretRotations?.length) && ( {Boolean(secretRotations?.length) && (
<Link <Link
to="/projects/secret-management/$projectId/secret-rotation" to="/organizations/$orgId/projects/secret-management/$projectId/secret-rotation"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -112,16 +117,18 @@ export const SecretManagerLayout = () => {
</Link> </Link>
)} )}
<Link <Link
to="/projects/secret-management/$projectId/app-connections" to="/organizations/$orgId/projects/secret-management/$projectId/app-connections"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>App Connections</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>App Connections</Tab>}
</Link> </Link>
<Link <Link
to="/projects/secret-management/$projectId/access-management" to="/organizations/$orgId/projects/secret-management/$projectId/access-management"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -139,16 +146,18 @@ export const SecretManagerLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/secret-management/$projectId/audit-logs" to="/organizations/$orgId/projects/secret-management/$projectId/audit-logs"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>}
</Link> </Link>
<Link <Link
to="/projects/secret-management/$projectId/settings" to="/organizations/$orgId/projects/secret-management/$projectId/settings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >

View File

@@ -5,6 +5,7 @@ import { Tab, TabList, Tabs } from "@app/components/v2";
import { Badge } from "@app/components/v3"; import { Badge } from "@app/components/v3";
import { import {
ProjectPermissionSub, ProjectPermissionSub,
useOrganization,
useProject, useProject,
useProjectPermission, useProjectPermission,
useSubscription useSubscription
@@ -15,6 +16,7 @@ import { useGetSecretScanningUnresolvedFindingCount } from "@app/hooks/api/secre
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner"; import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
export const SecretScanningLayout = () => { export const SecretScanningLayout = () => {
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const { assumedPrivilegeDetails } = useProjectPermission(); const { assumedPrivilegeDetails } = useProjectPermission();
@@ -50,16 +52,18 @@ export const SecretScanningLayout = () => {
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link <Link
to="/projects/secret-scanning/$projectId/data-sources" to="/organizations/$orgId/projects/secret-scanning/$projectId/data-sources"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Data Sources</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Data Sources</Tab>}
</Link> </Link>
<Link <Link
to="/projects/secret-scanning/$projectId/findings" to="/organizations/$orgId/projects/secret-scanning/$projectId/findings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -75,16 +79,18 @@ export const SecretScanningLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/secret-scanning/$projectId/app-connections" to="/organizations/$orgId/projects/secret-scanning/$projectId/app-connections"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>App Connections</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>App Connections</Tab>}
</Link> </Link>
<Link <Link
to="/projects/secret-scanning/$projectId/access-management" to="/organizations/$orgId/projects/secret-scanning/$projectId/access-management"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -102,16 +108,18 @@ export const SecretScanningLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/secret-scanning/$projectId/audit-logs" to="/organizations/$orgId/projects/secret-scanning/$projectId/audit-logs"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>}
</Link> </Link>
<Link <Link
to="/projects/secret-scanning/$projectId/settings" to="/organizations/$orgId/projects/secret-scanning/$projectId/settings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >

View File

@@ -6,6 +6,7 @@ import { Tab, TabList, Tabs } from "@app/components/v2";
import { import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
useOrganization,
useProject, useProject,
useProjectPermission useProjectPermission
} from "@app/context"; } from "@app/context";
@@ -13,6 +14,7 @@ import {
import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner"; import { AssumePrivilegeModeBanner } from "../ProjectLayout/components/AssumePrivilegeModeBanner";
export const SshLayout = () => { export const SshLayout = () => {
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const { assumedPrivilegeDetails } = useProjectPermission(); const { assumedPrivilegeDetails } = useProjectPermission();
const location = useLocation(); const location = useLocation();
@@ -32,8 +34,9 @@ export const SshLayout = () => {
<Tabs value="selected"> <Tabs value="selected">
<TabList className="border-b-0"> <TabList className="border-b-0">
<Link <Link
to="/projects/ssh/$projectId/overview" to="/organizations/$orgId/projects/ssh/$projectId/overview"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -54,8 +57,9 @@ export const SshLayout = () => {
{(isAllowed) => {(isAllowed) =>
isAllowed && ( isAllowed && (
<Link <Link
to="/projects/ssh/$projectId/cas" to="/organizations/$orgId/projects/ssh/$projectId/cas"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -71,8 +75,9 @@ export const SshLayout = () => {
} }
</ProjectPermissionCan> </ProjectPermissionCan>
<Link <Link
to="/projects/ssh/$projectId/access-management" to="/organizations/$orgId/projects/ssh/$projectId/access-management"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
@@ -90,16 +95,18 @@ export const SshLayout = () => {
)} )}
</Link> </Link>
<Link <Link
to="/projects/ssh/$projectId/audit-logs" to="/organizations/$orgId/projects/ssh/$projectId/audit-logs"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >
{({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>} {({ isActive }) => <Tab value={isActive ? "selected" : ""}>Audit Logs</Tab>}
</Link> </Link>
<Link <Link
to="/projects/ssh/$projectId/settings" to="/organizations/$orgId/projects/ssh/$projectId/settings"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
> >

View File

@@ -12,7 +12,10 @@ export const navigateUserToOrg = async (navigate: NavigateFn, organizationId?: s
if (organizationId) { if (organizationId) {
localStorage.setItem("orgData.id", organizationId); localStorage.setItem("orgData.id", organizationId);
navigate({ to: "/organization/projects" }); navigate({
to: "/organizations/$orgId/projects",
params: { orgId: organizationId }
});
return; return;
} }
@@ -20,7 +23,10 @@ export const navigateUserToOrg = async (navigate: NavigateFn, organizationId?: s
// user is part of at least 1 non-auth enforced org // user is part of at least 1 non-auth enforced org
const userOrg = nonAuthEnforcedOrgs[0] && nonAuthEnforcedOrgs[0].id; const userOrg = nonAuthEnforcedOrgs[0] && nonAuthEnforcedOrgs[0].id;
localStorage.setItem("orgData.id", userOrg); localStorage.setItem("orgData.id", userOrg);
navigate({ to: "/organization/projects" }); navigate({
to: "/organizations/$orgId/projects",
params: { orgId: userOrg }
});
} else { } else {
// user is not part of any non-auth enforced orgs // user is not part of any non-auth enforced orgs
localStorage.removeItem("orgData.id"); localStorage.removeItem("orgData.id");

View File

@@ -6,7 +6,7 @@ import { z } from "zod";
import { createNotification } from "@app/components/notifications"; import { createNotification } from "@app/components/notifications";
import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2";
import { useProject } from "@app/context"; import { useOrganization, useProject } from "@app/context";
import { import {
useCreatePkiCollection, useCreatePkiCollection,
useGetPkiCollectionById, useGetPkiCollectionById,
@@ -28,6 +28,7 @@ type Props = {
export const PkiCollectionModal = ({ popUp, handlePopUpToggle }: Props) => { export const PkiCollectionModal = ({ popUp, handlePopUpToggle }: Props) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const projectId = currentProject?.id || ""; const projectId = currentProject?.id || "";
@@ -81,8 +82,9 @@ export const PkiCollectionModal = ({ popUp, handlePopUpToggle }: Props) => {
}); });
navigate({ navigate({
to: "/projects/cert-management/$projectId/pki-collections/$collectionId", to: "/organizations/$orgId/projects/cert-management/$projectId/pki-collections/$collectionId",
params: { params: {
orgId: currentOrg.id,
projectId, projectId,
collectionId collectionId
} }

View File

@@ -19,7 +19,12 @@ import {
THead, THead,
Tr Tr
} from "@app/components/v2"; } from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import {
ProjectPermissionActions,
ProjectPermissionSub,
useOrganization,
useProject
} from "@app/context";
import { useListWorkspacePkiCollections } from "@app/hooks/api"; import { useListWorkspacePkiCollections } from "@app/hooks/api";
import { UsePopUpState } from "@app/hooks/usePopUp"; import { UsePopUpState } from "@app/hooks/usePopUp";
@@ -31,6 +36,7 @@ type Props = {
}; };
export const PkiCollectionTable = ({ handlePopUpOpen }: Props) => { export const PkiCollectionTable = ({ handlePopUpOpen }: Props) => {
const { currentOrg } = useOrganization();
const navigate = useNavigate(); const navigate = useNavigate();
const { currentProject } = useProject(); const { currentProject } = useProject();
const projectId = currentProject?.id || ""; const projectId = currentProject?.id || "";
@@ -60,8 +66,9 @@ export const PkiCollectionTable = ({ handlePopUpOpen }: Props) => {
key={`pki-collection-${pkiCollection.id}`} key={`pki-collection-${pkiCollection.id}`}
onClick={() => onClick={() =>
navigate({ navigate({
to: "/projects/cert-management/$projectId/pki-collections/$collectionId", to: "/organizations/$orgId/projects/cert-management/$projectId/pki-collections/$collectionId",
params: { params: {
orgId: currentOrg.id,
projectId, projectId,
collectionId: pkiCollection.id collectionId: pkiCollection.id
} }

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AlertingPage } from "./AlertingPage"; import { AlertingPage } from "./AlertingPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/alerting" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/alerting"
)({ )({
component: AlertingPage, component: AlertingPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -17,7 +17,12 @@ import {
Tooltip Tooltip
} from "@app/components/v2"; } from "@app/components/v2";
import { ROUTE_PATHS } from "@app/const/routes"; import { ROUTE_PATHS } from "@app/const/routes";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import {
ProjectPermissionActions,
ProjectPermissionSub,
useOrganization,
useProject
} from "@app/context";
import { CaType, useDeleteCa, useGetCa } from "@app/hooks/api"; import { CaType, useDeleteCa, useGetCa } from "@app/hooks/api";
import { TInternalCertificateAuthority } from "@app/hooks/api/ca/types"; import { TInternalCertificateAuthority } from "@app/hooks/api/ca/types";
import { ProjectType } from "@app/hooks/api/projects/types"; import { ProjectType } from "@app/hooks/api/projects/types";
@@ -34,6 +39,7 @@ import {
const Page = () => { const Page = () => {
const { currentProject } = useProject(); const { currentProject } = useProject();
const { currentOrg } = useOrganization();
const navigate = useNavigate(); const navigate = useNavigate();
const params = useParams({ const params = useParams({
from: ROUTE_PATHS.CertManager.CertAuthDetailsByIDPage.id from: ROUTE_PATHS.CertManager.CertAuthDetailsByIDPage.id
@@ -72,8 +78,9 @@ const Page = () => {
handlePopUpClose("deleteCa"); handlePopUpClose("deleteCa");
navigate({ navigate({
to: "/projects/cert-management/$projectId/certificate-authorities", to: "/organizations/$orgId/projects/cert-management/$projectId/certificate-authorities",
params: { params: {
orgId: currentOrg.id,
projectId projectId
} }
}); });
@@ -84,8 +91,9 @@ const Page = () => {
{data && ( {data && (
<div className="mx-auto mb-6 w-full max-w-8xl"> <div className="mx-auto mb-6 w-full max-w-8xl">
<Link <Link
to="/projects/cert-management/$projectId/certificate-authorities" to="/organizations/$orgId/projects/cert-management/$projectId/certificate-authorities"
params={{ params={{
orgId: currentOrg.id,
projectId projectId
}} }}
className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400" className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400"

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CertAuthDetailsByIDPage } from "./CertAuthDetailsByIDPage"; import { CertAuthDetailsByIDPage } from "./CertAuthDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/ca/$caName" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/ca/$caName"
)({ )({
component: CertAuthDetailsByIDPage, component: CertAuthDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -13,8 +13,9 @@ export const Route = createFileRoute(
{ {
label: "Certificate Authorities", label: "Certificate Authorities",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/certificate-authorities", to: "/organizations/$orgId/projects/cert-management/$projectId/certificate-authorities",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
} }
}) })

View File

@@ -22,7 +22,12 @@ import {
Tr Tr
} from "@app/components/v2"; } from "@app/components/v2";
import { Badge } from "@app/components/v3"; import { Badge } from "@app/components/v3";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import {
ProjectPermissionActions,
ProjectPermissionSub,
useOrganization,
useProject
} from "@app/context";
import { CaStatus, CaType, useListCasByTypeAndProjectId } from "@app/hooks/api"; import { CaStatus, CaType, useListCasByTypeAndProjectId } from "@app/hooks/api";
import { import {
caStatusToNameMap, caStatusToNameMap,
@@ -46,6 +51,7 @@ type Props = {
export const CaTable = ({ handlePopUpOpen }: Props) => { export const CaTable = ({ handlePopUpOpen }: Props) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const { data, isPending } = useListCasByTypeAndProjectId(CaType.INTERNAL, currentProject.id); const { data, isPending } = useListCasByTypeAndProjectId(CaType.INTERNAL, currentProject.id);
const cas = data as TInternalCertificateAuthority[]; const cas = data as TInternalCertificateAuthority[];
@@ -75,8 +81,9 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
key={`ca-${ca.id}`} key={`ca-${ca.id}`}
onClick={() => onClick={() =>
navigate({ navigate({
to: "/projects/cert-management/$projectId/ca/$caName", to: "/organizations/$orgId/projects/cert-management/$projectId/ca/$caName",
params: { params: {
orgId: currentOrg.id,
projectId: currentProject.id, projectId: currentProject.id,
caName: ca.name caName: ca.name
} }

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { CertificateAuthoritiesPage } from "./CertificateAuthoritiesPage"; import { CertificateAuthoritiesPage } from "./CertificateAuthoritiesPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/certificate-authorities" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/certificate-authorities"
)({ )({
component: CertificateAuthoritiesPage, component: CertificateAuthoritiesPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -15,7 +15,7 @@ const IntegrationsListPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/integrations/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/integrations/"
)({ )({
component: IntegrationsListPage, component: IntegrationsListPage,
validateSearch: zodValidator(IntegrationsListPageQuerySchema), validateSearch: zodValidator(IntegrationsListPageQuerySchema),

View File

@@ -18,7 +18,12 @@ import {
Tooltip Tooltip
} from "@app/components/v2"; } from "@app/components/v2";
import { ROUTE_PATHS } from "@app/const/routes"; import { ROUTE_PATHS } from "@app/const/routes";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context"; import {
ProjectPermissionActions,
ProjectPermissionSub,
useOrganization,
useProject
} from "@app/context";
import { useDeletePkiCollection, useGetPkiCollectionById } from "@app/hooks/api"; import { useDeletePkiCollection, useGetPkiCollectionById } from "@app/hooks/api";
import { PkiItemType } from "@app/hooks/api/pkiCollections/constants"; import { PkiItemType } from "@app/hooks/api/pkiCollections/constants";
import { ProjectType } from "@app/hooks/api/projects/types"; import { ProjectType } from "@app/hooks/api/projects/types";
@@ -34,6 +39,7 @@ export const PkiCollectionPage = () => {
}); });
const collectionId = params.collectionId as string; const collectionId = params.collectionId as string;
const { currentProject } = useProject(); const { currentProject } = useProject();
const { currentOrg } = useOrganization();
const projectId = currentProject?.id || ""; const projectId = currentProject?.id || "";
const { data } = useGetPkiCollectionById(collectionId); const { data } = useGetPkiCollectionById(collectionId);
@@ -58,8 +64,9 @@ export const PkiCollectionPage = () => {
}); });
handlePopUpClose("deletePkiCollection"); handlePopUpClose("deletePkiCollection");
navigate({ navigate({
to: "/projects/cert-management/$projectId/policies", to: "/organizations/$orgId/projects/cert-management/$projectId/policies",
params: { params: {
orgId: currentOrg.id,
projectId: params.projectId projectId: params.projectId
} }
}); });
@@ -70,8 +77,9 @@ export const PkiCollectionPage = () => {
{data && ( {data && (
<div className="mx-auto mb-6 w-full max-w-8xl"> <div className="mx-auto mb-6 w-full max-w-8xl">
<Link <Link
to="/projects/cert-management/$projectId/policies" to="/organizations/$orgId/projects/cert-management/$projectId/policies"
params={{ params={{
orgId: currentOrg.id,
projectId: params.projectId projectId: params.projectId
}} }}
className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400" className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400"

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { PkiCollectionDetailsByIDPage } from "./PkiCollectionDetailsByIDPage"; import { PkiCollectionDetailsByIDPage } from "./PkiCollectionDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/pki-collections/$collectionId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/pki-collections/$collectionId"
)({ )({
component: PkiCollectionDetailsByIDPage, component: PkiCollectionDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -13,8 +13,9 @@ export const Route = createFileRoute(
{ {
label: "Certificate Collections", label: "Certificate Collections",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/policies", to: "/organizations/$orgId/projects/cert-management/$projectId/policies",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
} }
}) })

View File

@@ -21,6 +21,7 @@ import { ROUTE_PATHS } from "@app/const/routes";
import { import {
ProjectPermissionPkiSubscriberActions, ProjectPermissionPkiSubscriberActions,
ProjectPermissionSub, ProjectPermissionSub,
useOrganization,
useProject useProject
} from "@app/context"; } from "@app/context";
import { useDeletePkiSubscriber, useGetPkiSubscriber } from "@app/hooks/api"; import { useDeletePkiSubscriber, useGetPkiSubscriber } from "@app/hooks/api";
@@ -32,6 +33,7 @@ import { PkiSubscriberCertificatesSection, PkiSubscriberDetailsSection } from ".
const Page = () => { const Page = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const projectId = currentProject.id; const projectId = currentProject.id;
const subscriberName = useParams({ const subscriberName = useParams({
@@ -62,8 +64,9 @@ const Page = () => {
handlePopUpClose("deletePkiSubscriber"); handlePopUpClose("deletePkiSubscriber");
navigate({ navigate({
to: "/projects/cert-management/$projectId/subscribers", to: "/organizations/$orgId/projects/cert-management/$projectId/subscribers",
params: { params: {
orgId: currentOrg.id,
projectId projectId
} }
}); });
@@ -74,8 +77,9 @@ const Page = () => {
{data && ( {data && (
<div className="mx-auto mb-6 w-full max-w-8xl"> <div className="mx-auto mb-6 w-full max-w-8xl">
<Link <Link
to="/projects/cert-management/$projectId/subscribers" to="/organizations/$orgId/projects/cert-management/$projectId/subscribers"
params={{ params={{
orgId: currentOrg.id,
projectId projectId
}} }}
className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400" className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400"

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { PkiSubscriberDetailsByIDPage } from "./PkiSubscriberDetailsByIDPage"; import { PkiSubscriberDetailsByIDPage } from "./PkiSubscriberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/subscribers/$subscriberName" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/subscribers/$subscriberName"
)({ )({
component: PkiSubscriberDetailsByIDPage, component: PkiSubscriberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -13,8 +13,9 @@ export const Route = createFileRoute(
{ {
label: "Subscribers", label: "Subscribers",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/subscribers", to: "/organizations/$orgId/projects/cert-management/$projectId/subscribers",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
} }
}) })

View File

@@ -30,6 +30,7 @@ import { Badge } from "@app/components/v3";
import { import {
ProjectPermissionPkiSubscriberActions, ProjectPermissionPkiSubscriberActions,
ProjectPermissionSub, ProjectPermissionSub,
useOrganization,
useProject useProject
} from "@app/context"; } from "@app/context";
import { useListWorkspacePkiSubscribers } from "@app/hooks/api"; import { useListWorkspacePkiSubscribers } from "@app/hooks/api";
@@ -49,6 +50,7 @@ type Props = {
export const PkiSubscribersTable = ({ handlePopUpOpen }: Props) => { export const PkiSubscribersTable = ({ handlePopUpOpen }: Props) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
const { data, isPending } = useListWorkspacePkiSubscribers(currentProject?.id || ""); const { data, isPending } = useListWorkspacePkiSubscribers(currentProject?.id || "");
return ( return (
@@ -75,8 +77,9 @@ export const PkiSubscribersTable = ({ handlePopUpOpen }: Props) => {
key={`pki-subscriber-${subscriber.id}`} key={`pki-subscriber-${subscriber.id}`}
onClick={() => onClick={() =>
navigate({ navigate({
to: "/projects/cert-management/$projectId/subscribers/$subscriberName", to: "/organizations/$orgId/projects/cert-management/$projectId/subscribers/$subscriberName",
params: { params: {
orgId: currentOrg.id,
projectId: currentProject.id, projectId: currentProject.id,
subscriberName: subscriber.name subscriberName: subscriber.name
} }

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { PkiSubscribersPage } from "./PkiSubscribersPage"; import { PkiSubscribersPage } from "./PkiSubscribersPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/subscribers/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/subscribers/"
)({ )({
component: PkiSubscribersPage, component: PkiSubscribersPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -5,7 +5,7 @@ import { IntegrationsListPageTabs } from "@app/types/integrations";
import { PkiSyncDetailsByIDPage } from "./index"; import { PkiSyncDetailsByIDPage } from "./index";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/integrations/$syncId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/integrations/$syncId"
)({ )({
component: PkiSyncDetailsByIDPage, component: PkiSyncDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,7 +15,7 @@ export const Route = createFileRoute(
{ {
label: "Integrations", label: "Integrations",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/integrations", to: "/organizations/$orgId/projects/cert-management/$projectId/integrations",
params, params,
search: { search: {
selectedTab: IntegrationsListPageTabs.PkiSyncs selectedTab: IntegrationsListPageTabs.PkiSyncs

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { PkiTemplateListPage } from "./PkiTemplateListPage"; import { PkiTemplateListPage } from "./PkiTemplateListPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/certificate-templates/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/certificate-templates/"
)({ )({
component: PkiTemplateListPage, component: PkiTemplateListPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { PoliciesPage } from "./PoliciesPage"; import { PoliciesPage } from "./PoliciesPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/policies" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/policies"
)({ )({
component: PoliciesPage, component: PoliciesPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/settings" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -8,7 +8,7 @@ import { PkiManagerLayout } from "@app/layouts/PkiManagerLayout";
import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect"; import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout"
)({ )({
component: PkiManagerLayout, component: PkiManagerLayout,
beforeLoad: async ({ params, context }) => { beforeLoad: async ({ params, context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { KmipPage } from "./KmipPage"; import { KmipPage } from "./KmipPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/kmip" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/kmip"
)({ )({
component: KmipPage, component: KmipPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { OverviewPage } from "./OverviewPage"; import { OverviewPage } from "./OverviewPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/overview" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/overview"
)({ )({
component: OverviewPage, component: OverviewPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/settings" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -8,7 +8,7 @@ import { KmsLayout } from "@app/layouts/KmsLayout";
import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect"; import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout"
)({ )({
component: KmsLayout, component: KmsLayout,
beforeLoad: async ({ params, context }) => { beforeLoad: async ({ params, context }) => {

View File

@@ -6,8 +6,15 @@ import { fetchOrgSubscription, subscriptionQueryKeys } from "@app/hooks/api/subs
// Route context to fill in organization's data like details, subscription etc // Route context to fill in organization's data like details, subscription etc
export const Route = createFileRoute("/_authenticate/_inject-org-details")({ export const Route = createFileRoute("/_authenticate/_inject-org-details")({
beforeLoad: async ({ context }) => { beforeLoad: async ({ context, params }) => {
const organizationId = context.organizationId!; let organizationId: string;
if ((params as { orgId?: string })?.orgId) {
organizationId = (params as { orgId: string }).orgId;
} else {
organizationId = context.organizationId!;
}
await context.queryClient.ensureQueryData({ await context.queryClient.ensureQueryData({
queryKey: organizationKeys.getOrgById(organizationId), queryKey: organizationKeys.getOrgById(organizationId),
queryFn: () => fetchOrganizationById(organizationId) queryFn: () => fetchOrganizationById(organizationId)

View File

@@ -118,7 +118,8 @@ export const Route = createFileRoute("/_restrict-login-signup")({
throw redirect({ to: "/login/select-organization" }); throw redirect({ to: "/login/select-organization" });
} }
throw redirect({ throw redirect({
to: "/organization/projects" to: "/organizations/$orgId/projects",
params: { orgId: data.organizationId }
}); });
}, },
component: AuthConsentWrapper component: AuthConsentWrapper

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/access-management"
)({ )({
component: AccessManagementPage, component: AccessManagementPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -29,7 +29,7 @@ import {
Tr Tr
} from "@app/components/v2"; } from "@app/components/v2";
import { Badge } from "@app/components/v3"; import { Badge } from "@app/components/v3";
import { OrgPermissionSubjects, ProjectPermissionSub } from "@app/context"; import { OrgPermissionSubjects, ProjectPermissionSub, useOrganization } from "@app/context";
import { OrgPermissionAppConnectionActions } from "@app/context/OrgPermissionContext/types"; import { OrgPermissionAppConnectionActions } from "@app/context/OrgPermissionContext/types";
import { ProjectPermissionAppConnectionActions } from "@app/context/ProjectPermissionContext/types"; import { ProjectPermissionAppConnectionActions } from "@app/context/ProjectPermissionContext/types";
import { APP_CONNECTION_MAP, getAppConnectionMethodDetails } from "@app/helpers/appConnections"; import { APP_CONNECTION_MAP, getAppConnectionMethodDetails } from "@app/helpers/appConnections";
@@ -52,6 +52,7 @@ export const AppConnectionRow = ({
onEditDetails, onEditDetails,
isProjectView isProjectView
}: Props) => { }: Props) => {
const { currentOrg } = useOrganization();
const { id, name, method, app, description, isPlatformManagedCredentials, project } = const { id, name, method, app, description, isPlatformManagedCredentials, project } =
appConnection; appConnection;
@@ -127,6 +128,7 @@ export const AppConnectionRow = ({
// @ts-expect-error app-connections aren't in kms/ssh // @ts-expect-error app-connections aren't in kms/ssh
to={`${getProjectBaseURL(project.type)}/app-connections`} to={`${getProjectBaseURL(project.type)}/app-connections`}
params={{ params={{
orgId: currentOrg?.id || "",
projectId: project.id projectId: project.id
}} }}
className="underline" className="underline"

View File

@@ -4,7 +4,7 @@ import { z } from "zod";
import { AppConnectionsPage } from "./AppConnectionsPage"; import { AppConnectionsPage } from "./AppConnectionsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/app-connections/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/app-connections/"
)({ )({
component: AppConnectionsPage, component: AppConnectionsPage,
validateSearch: z.object({ validateSearch: z.object({

View File

@@ -11,7 +11,7 @@ const GitHubOAuthCallbackPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/app-connections/$appConnection/oauth/callback"
)({ )({
component: OAuthCallbackPage, component: OAuthCallbackPage,
validateSearch: zodValidator(GitHubOAuthCallbackPageQueryParamsSchema), validateSearch: zodValidator(GitHubOAuthCallbackPageQueryParamsSchema),

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
context: () => ({ context: () => ({

View File

@@ -3,13 +3,14 @@ import { createFileRoute, redirect } from "@tanstack/react-router";
import { BillingPage } from "./BillingPage"; import { BillingPage } from "./BillingPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/billing" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/billing"
)({ )({
component: BillingPage, component: BillingPage,
beforeLoad: ({ search }) => { beforeLoad: ({ search, params }) => {
if (search.subOrganization) { if (search.subOrganization) {
throw redirect({ throw redirect({
to: "/organization/projects", to: "/organizations/$orgId/projects",
params: { orgId: params.orgId },
search search
}); });
} }

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
context: () => ({ context: () => ({

View File

@@ -6,6 +6,7 @@ import { format } from "date-fns";
import { createNotification } from "@app/components/notifications"; import { createNotification } from "@app/components/notifications";
import { IconButton, Td, Tooltip, Tr } from "@app/components/v2"; import { IconButton, Td, Tooltip, Tr } from "@app/components/v2";
import { useOrganization } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project"; import { getProjectBaseURL } from "@app/helpers/project";
import { formatProjectRoleName } from "@app/helpers/roles"; import { formatProjectRoleName } from "@app/helpers/roles";
import { useGetUserProjects } from "@app/hooks/api"; import { useGetUserProjects } from "@app/hooks/api";
@@ -33,6 +34,7 @@ export const IdentityProjectRow = ({
}: Props) => { }: Props) => {
const { data: workspaces } = useGetUserProjects(); const { data: workspaces } = useGetUserProjects();
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const isAccessible = useMemo(() => { const isAccessible = useMemo(() => {
const workspaceIds = new Map(); const workspaceIds = new Map();
@@ -53,6 +55,7 @@ export const IdentityProjectRow = ({
navigate({ navigate({
to: `${getProjectBaseURL(project.type)}/access-management` as const, to: `${getProjectBaseURL(project.type)}/access-management` as const,
params: { params: {
orgId: currentOrg?.id || "",
projectId: project.id projectId: project.id
}, },
search: { search: {

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
context: () => ({ context: () => ({

View File

@@ -10,7 +10,7 @@ const NetworkingPageQueryParams = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/networking" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/networking"
)({ )({
component: NetworkingPage, component: NetworkingPage,
validateSearch: zodValidator(NetworkingPageQueryParams), validateSearch: zodValidator(NetworkingPageQueryParams),

View File

@@ -2,6 +2,7 @@
import { useState } from "react"; import { useState } from "react";
import { Helmet } from "react-helmet"; import { Helmet } from "react-helmet";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { Outlet, useMatches } from "@tanstack/react-router";
import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal";
import { NewProjectModal } from "@app/components/projects"; import { NewProjectModal } from "@app/components/projects";
@@ -27,6 +28,17 @@ import { ProjectListView } from "./components/ProjectListToggle";
export const ProjectsPage = () => { export const ProjectsPage = () => {
const { t } = useTranslation(); const { t } = useTranslation();
const matches = useMatches();
const hasChildRoute = matches.some(
(match) =>
match.pathname.includes("/secret-management/") ||
match.pathname.includes("/cert-management/") ||
match.pathname.includes("/kms/") ||
match.pathname.includes("/pam/") ||
match.pathname.includes("/ssh/") ||
match.pathname.includes("/secret-scanning/")
);
const [projectListView, setProjectListView] = useState<ProjectListView>(() => { const [projectListView, setProjectListView] = useState<ProjectListView>(() => {
const storedView = localStorage.getItem("projectListView"); const storedView = localStorage.getItem("projectListView");
@@ -57,6 +69,10 @@ export const ProjectsPage = () => {
? subscription.workspacesUsed < subscription.workspaceLimit ? subscription.workspacesUsed < subscription.workspaceLimit
: true; : true;
if (hasChildRoute) {
return <Outlet />;
}
return ( return (
<div className="mx-auto flex max-w-8xl flex-col justify-start bg-bunker-800"> <div className="mx-auto flex max-w-8xl flex-col justify-start bg-bunker-800">
<Helmet> <Helmet>

View File

@@ -30,7 +30,7 @@ import {
Tooltip Tooltip
} from "@app/components/v2"; } from "@app/components/v2";
import { Badge } from "@app/components/v3"; import { Badge } from "@app/components/v3";
import { OrgPermissionActions, OrgPermissionSubjects } from "@app/context"; import { OrgPermissionActions, OrgPermissionSubjects, useOrganization } from "@app/context";
import { OrgPermissionAdminConsoleAction } from "@app/context/OrgPermissionContext/types"; import { OrgPermissionAdminConsoleAction } from "@app/context/OrgPermissionContext/types";
import { getProjectHomePage, getProjectLottieIcon, getProjectTitle } from "@app/helpers/project"; import { getProjectHomePage, getProjectLottieIcon, getProjectTitle } from "@app/helpers/project";
import { import {
@@ -62,6 +62,7 @@ export const AllProjectView = ({
onProjectListViewChange onProjectListViewChange
}: Props) => { }: Props) => {
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const [searchFilter, setSearchFilter] = useState(""); const [searchFilter, setSearchFilter] = useState("");
const [debouncedSearch] = useDebounce(searchFilter); const [debouncedSearch] = useDebounce(searchFilter);
const [projectTypeFilter, setProjectTypeFilter] = useState<ProjectType>(); const [projectTypeFilter, setProjectTypeFilter] = useState<ProjectType>();
@@ -263,6 +264,7 @@ export const AllProjectView = ({
navigate({ navigate({
to: getProjectHomePage(workspace.type, workspace.environments), to: getProjectHomePage(workspace.type, workspace.environments),
params: { params: {
orgId: currentOrg?.id || "",
projectId: workspace.id projectId: workspace.id
} }
}); });
@@ -273,6 +275,7 @@ export const AllProjectView = ({
navigate({ navigate({
to: getProjectHomePage(workspace.type, workspace.environments), to: getProjectHomePage(workspace.type, workspace.environments),
params: { params: {
orgId: currentOrg?.id || "",
projectId: workspace.id projectId: workspace.id
} }
}); });

View File

@@ -180,6 +180,7 @@ export const MyProjectView = ({
navigate({ navigate({
to: getProjectHomePage(workspace.type, workspace.environments), to: getProjectHomePage(workspace.type, workspace.environments),
params: { params: {
orgId: currentOrg?.id || "",
projectId: workspace.id projectId: workspace.id
} }
}); });
@@ -231,6 +232,7 @@ export const MyProjectView = ({
navigate({ navigate({
to: getProjectHomePage(workspace.type, workspace.environments), to: getProjectHomePage(workspace.type, workspace.environments),
params: { params: {
orgId: currentOrg?.id || "",
projectId: workspace.id projectId: workspace.id
} }
}); });

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { ProjectsPage } from "./ProjectsPage"; import { ProjectsPage } from "./ProjectsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/projects" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects"
)({ )({
component: ProjectsPage, component: ProjectsPage,
context: () => ({ context: () => ({

View File

@@ -3,14 +3,17 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { RoleByIDPage } from "./RoleByIDPage"; import { RoleByIDPage } from "./RoleByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/roles/$roleId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/roles/$roleId"
)({ )({
component: RoleByIDPage, component: RoleByIDPage,
context: () => ({ context: ({ params }) => ({
breadcrumbs: [ breadcrumbs: [
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ to: "/organization/access-management" }) link: linkOptions({
to: "/organizations/$orgId/access-management",
params: { orgId: params.orgId }
})
}, },
{ {
label: "Roles" label: "Roles"

View File

@@ -9,7 +9,7 @@ const SecretSharingQueryParams = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/secret-sharing/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/secret-sharing/"
)({ )({
component: SecretSharingPage, component: SecretSharingPage,

View File

@@ -20,7 +20,7 @@ const SettingsOAuthCallbackPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/settings/oauth/callback" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/settings/oauth/callback"
)({ )({
component: OAuthCallbackPage, component: OAuthCallbackPage,
validateSearch: zodValidator(SettingsOAuthCallbackPageQueryParamsSchema) validateSearch: zodValidator(SettingsOAuthCallbackPageQueryParamsSchema)

View File

@@ -9,7 +9,7 @@ const SettingsPageQueryParams = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/settings/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/settings/"
)({ )({
component: SettingsPage, component: SettingsPage,
validateSearch: zodValidator(SettingsPageQueryParams), validateSearch: zodValidator(SettingsPageQueryParams),

View File

@@ -5,6 +5,7 @@ import { useNavigate } from "@tanstack/react-router";
import { createNotification } from "@app/components/notifications"; import { createNotification } from "@app/components/notifications";
import { IconButton, Td, Tooltip, Tr } from "@app/components/v2"; import { IconButton, Td, Tooltip, Tr } from "@app/components/v2";
import { useOrganization } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project"; import { getProjectBaseURL } from "@app/helpers/project";
import { formatProjectRoleName } from "@app/helpers/roles"; import { formatProjectRoleName } from "@app/helpers/roles";
import { useGetUserProjects } from "@app/hooks/api"; import { useGetUserProjects } from "@app/hooks/api";
@@ -26,6 +27,7 @@ export const UserProjectRow = ({
}: Props) => { }: Props) => {
const { data: workspaces = [] } = useGetUserProjects(); const { data: workspaces = [] } = useGetUserProjects();
const navigate = useNavigate(); const navigate = useNavigate();
const { currentOrg } = useOrganization();
const isAccessible = useMemo(() => { const isAccessible = useMemo(() => {
const workspaceIds = new Map(); const workspaceIds = new Map();
@@ -46,6 +48,7 @@ export const UserProjectRow = ({
navigate({ navigate({
to: `${getProjectBaseURL(project.type)}/access-management` as const, to: `${getProjectBaseURL(project.type)}/access-management` as const,
params: { params: {
orgId: currentOrg?.id || "",
projectId: project.id projectId: project.id
}, },
search: { search: {

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { UserDetailsByIDPage } from "./UserDetailsByIDPage"; import { UserDetailsByIDPage } from "./UserDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/organization/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/members/$membershipId"
)({ )({
component: UserDetailsByIDPage, component: UserDetailsByIDPage,
context: () => ({ context: () => ({

View File

@@ -8,7 +8,7 @@ type Props = {
export const FolderBreadCrumbs = ({ path = "/" }: Props) => { export const FolderBreadCrumbs = ({ path = "/" }: Props) => {
const navigate = useNavigate({ const navigate = useNavigate({
from: "/projects/pam/$projectId/accounts" from: "/organizations/$orgId/projects/pam/$projectId/accounts"
}); });
const onFolderCrumbClick = (index: number) => { const onFolderCrumbClick = (index: number) => {

View File

@@ -12,7 +12,7 @@ const PamAccountsPageQueryParamsSchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/accounts" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/accounts"
)({ )({
validateSearch: zodValidator(PamAccountsPageQueryParamsSchema), validateSearch: zodValidator(PamAccountsPageQueryParamsSchema),
search: { search: {
@@ -26,7 +26,7 @@ export const Route = createFileRoute(
{ {
label: "Accounts", label: "Accounts",
link: linkOptions({ link: linkOptions({
to: "/projects/pam/$projectId/accounts", to: "/organizations/$orgId/projects/pam/$projectId/accounts",
params: () => params as never, params: () => params as never,
search: (prev) => ({ ...prev, accountPath: "/" }) search: (prev) => ({ ...prev, accountPath: "/" })
}) })
@@ -36,7 +36,7 @@ export const Route = createFileRoute(
return { return {
label: segment, label: segment,
link: linkOptions({ link: linkOptions({
to: "/projects/pam/$projectId/accounts", to: "/organizations/$orgId/projects/pam/$projectId/accounts",
params: () => params as never, params: () => params as never,
search: (prev) => ({ ...prev, accountPath: newPath }) search: (prev) => ({ ...prev, accountPath: newPath })
}) })

View File

@@ -5,7 +5,7 @@ import { z } from "zod";
import { PamResourcesPage } from "./PamResourcesPage"; import { PamResourcesPage } from "./PamResourcesPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/resources" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources"
)({ )({
validateSearch: zodValidator( validateSearch: zodValidator(
z.object({ z.object({

View File

@@ -6,7 +6,7 @@ import { Link, useParams } from "@tanstack/react-router";
import { ProjectPermissionCan } from "@app/components/permissions"; import { ProjectPermissionCan } from "@app/components/permissions";
import { PageHeader } from "@app/components/v2"; import { PageHeader } from "@app/components/v2";
import { ROUTE_PATHS } from "@app/const/routes"; import { ROUTE_PATHS } from "@app/const/routes";
import { ProjectPermissionSub, useProject } from "@app/context"; import { ProjectPermissionSub, useOrganization, useProject } from "@app/context";
import { ProjectPermissionPamSessionActions } from "@app/context/ProjectPermissionContext/types"; import { ProjectPermissionPamSessionActions } from "@app/context/ProjectPermissionContext/types";
import { useGetPamSessionById } from "@app/hooks/api/pam"; import { useGetPamSessionById } from "@app/hooks/api/pam";
import { ProjectType } from "@app/hooks/api/projects/types"; import { ProjectType } from "@app/hooks/api/projects/types";
@@ -20,14 +20,16 @@ const Page = () => {
select: (el) => el.sessionId select: (el) => el.sessionId
}); });
const { data: session } = useGetPamSessionById(sessionId); const { data: session } = useGetPamSessionById(sessionId);
const { currentOrg } = useOrganization();
const { currentProject } = useProject(); const { currentProject } = useProject();
return ( return (
<div className="mx-auto flex flex-col justify-between bg-bunker-800 text-white"> <div className="mx-auto flex flex-col justify-between bg-bunker-800 text-white">
{session && ( {session && (
<div className="mx-auto mb-6 flex w-full max-w-8xl flex-col"> <div className="mx-auto mb-6 flex w-full max-w-8xl flex-col">
<Link <Link
to="/projects/pam/$projectId/sessions" to="/organizations/$orgId/projects/pam/$projectId/sessions"
params={{ params={{
orgId: currentOrg.id,
projectId: currentProject.id projectId: currentProject.id
}} }}
className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400" className="mb-4 flex items-center gap-x-2 text-sm text-mineshaft-400"

View File

@@ -3,7 +3,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { PamSessionByIDPage } from "./PamSessionByIDPage"; import { PamSessionByIDPage } from "./PamSessionByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/sessions/$sessionId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions/$sessionId"
)({ )({
component: PamSessionByIDPage, component: PamSessionByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -13,7 +13,7 @@ export const Route = createFileRoute(
{ {
label: "Sessions", label: "Sessions",
link: linkOptions({ link: linkOptions({
to: "/projects/pam/$projectId/sessions", to: "/organizations/$orgId/projects/pam/$projectId/sessions",
params params
}) })
}, },

View File

@@ -5,7 +5,7 @@ import { z } from "zod";
import { PamSessionPage } from "./PamSessionsPage"; import { PamSessionPage } from "./PamSessionsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/sessions/" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions/"
)({ )({
validateSearch: zodValidator( validateSearch: zodValidator(
z.object({ z.object({

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage"; import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/settings" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings"
)({ )({
component: SettingsPage, component: SettingsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -8,7 +8,7 @@ import { PamLayout } from "@app/layouts/PamLayout";
import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect"; import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout"
)({ )({
component: PamLayout, component: PamLayout,
beforeLoad: async ({ params, context }) => { beforeLoad: async ({ params, context }) => {

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -12,7 +12,7 @@ const AccessControlPageQuerySchema = z.object({
}); });
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/access-management" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/access-management"
)({ )({
component: AccessControlPage, component: AccessControlPage,
validateSearch: zodValidator(AccessControlPageQuerySchema), validateSearch: zodValidator(AccessControlPageQuerySchema),

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AppConnectionsPage } from "./AppConnectionsPage"; import { AppConnectionsPage } from "./AppConnectionsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/app-connections" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/app-connections"
)({ )({
component: AppConnectionsPage, component: AppConnectionsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AppConnectionsPage } from "./AppConnectionsPage"; import { AppConnectionsPage } from "./AppConnectionsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/app-connections" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/app-connections"
)({ )({
component: AppConnectionsPage, component: AppConnectionsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AppConnectionsPage } from "./AppConnectionsPage"; import { AppConnectionsPage } from "./AppConnectionsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/app-connections" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/app-connections"
)({ )({
component: AppConnectionsPage, component: AppConnectionsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -3,7 +3,7 @@ import { createFileRoute } from "@tanstack/react-router";
import { AuditLogsPage } from "./AuditLogsPage"; import { AuditLogsPage } from "./AuditLogsPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/audit-logs" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/audit-logs"
)({ )({
component: AuditLogsPage, component: AuditLogsPage,
beforeLoad: ({ context }) => { beforeLoad: ({ context }) => {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/access-management", to: "/organizations/$orgId/projects/cert-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/kms/$projectId/access-management", to: "/organizations/$orgId/projects/kms/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/pam/$projectId/access-management", to: "/organizations/$orgId/projects/pam/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -7,7 +7,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
validateSearch: zodValidator( validateSearch: zodValidator(
@@ -22,8 +22,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/secret-management/$projectId/access-management", to: "/organizations/$orgId/projects/secret-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/secret-scanning/$projectId/access-management", to: "/organizations/$orgId/projects/secret-scanning/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage"; import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/groups/$groupId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/groups/$groupId"
)({ )({
component: GroupDetailsByIDPage, component: GroupDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/ssh/$projectId/access-management", to: "/organizations/$orgId/projects/ssh/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/access-management", to: "/organizations/$orgId/projects/cert-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/kms/$projectId/access-management", to: "/organizations/$orgId/projects/kms/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/pam/$projectId/access-management", to: "/organizations/$orgId/projects/pam/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/secret-management/$projectId/access-management", to: "/organizations/$orgId/projects/secret-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/secret-scanning/$projectId/access-management", to: "/organizations/$orgId/projects/secret-scanning/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage"; import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/identities/$identityId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/identities/$identityId"
)({ )({
component: IdentityDetailsByIDPage, component: IdentityDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/ssh/$projectId/access-management", to: "/organizations/$orgId/projects/ssh/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/access-management", to: "/organizations/$orgId/projects/cert-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/kms/$projectId/_kms-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/kms/$projectId/access-management", to: "/organizations/$orgId/projects/kms/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/pam/$projectId/_pam-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/pam/$projectId/access-management", to: "/organizations/$orgId/projects/pam/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-management/$projectId/_secret-manager-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/secret-management/$projectId/access-management", to: "/organizations/$orgId/projects/secret-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/secret-scanning/$projectId/_secret-scanning-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/secret-scanning/$projectId/access-management", to: "/organizations/$orgId/projects/secret-scanning/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage"; import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/ssh/$projectId/_ssh-layout/members/$membershipId" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/members/$membershipId"
)({ )({
component: MemberDetailsByIDPage, component: MemberDetailsByIDPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/ssh/$projectId/access-management", to: "/organizations/$orgId/projects/ssh/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

View File

@@ -5,7 +5,7 @@ import { ProjectAccessControlTabs } from "@app/types/project";
import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage"; import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage";
export const Route = createFileRoute( export const Route = createFileRoute(
"/_authenticate/_inject-org-details/_org-layout/projects/cert-management/$projectId/_cert-manager-layout/roles/$roleSlug" "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-management/$projectId/_cert-manager-layout/roles/$roleSlug"
)({ )({
component: RoleDetailsBySlugPage, component: RoleDetailsBySlugPage,
beforeLoad: ({ context, params }) => { beforeLoad: ({ context, params }) => {
@@ -15,8 +15,9 @@ export const Route = createFileRoute(
{ {
label: "Access Control", label: "Access Control",
link: linkOptions({ link: linkOptions({
to: "/projects/cert-management/$projectId/access-management", to: "/organizations/$orgId/projects/cert-management/$projectId/access-management",
params: { params: {
orgId: params.orgId,
projectId: params.projectId projectId: params.projectId
}, },
search: { search: {

Some files were not shown because too many files have changed in this diff Show More