feat: fixed all ts url errors

This commit is contained in:
=
2025-06-27 16:09:30 +05:30
parent b0c1c9ce26
commit 48ac6b4aff
280 changed files with 2163 additions and 2460 deletions

View File

@@ -93,7 +93,7 @@ export default function NavHeader({
<FontAwesomeIcon icon={faAngleRight} className="ml-3 mr-3 text-sm text-gray-400" />
{pageName === "Secrets" ? (
<Link
to={`/${ProjectType.SecretManager}/$projectId/overview` as const}
to="/projects/$projectId/secret-manager/overview"
params={{ projectId: currentWorkspace.id }}
className="text-sm font-semibold text-primary/80 hover:text-primary"
>
@@ -129,7 +129,7 @@ export default function NavHeader({
<div className="flex items-center space-x-3">
<FontAwesomeIcon icon={faAngleRight} className="ml-3 mr-1.5 text-xs text-gray-400" />
<Link
to={`/${ProjectType.SecretManager}/$projectId/secrets/$envSlug` as const}
to={`/projects/$projectId/${ProjectType.SecretManager}/secrets/$envSlug` as const}
params={{ projectId: currentWorkspace.id, envSlug: routerEnvSlug }}
className="text-sm font-semibold text-primary/80 hover:text-primary"
>
@@ -191,7 +191,7 @@ export default function NavHeader({
</div>
) : (
<Link
to={`/${ProjectType.SecretManager}/$projectId/secrets/$envSlug` as const}
to={`/projects/$projectId/${ProjectType.SecretManager}/secrets/$envSlug` as const}
params={{
projectId: currentWorkspace.id,
envSlug: routerEnvSlug || ""

View File

@@ -70,7 +70,7 @@ export const SecretDashboardPathBreadcrumb = ({
</div>
) : (
<Link
to={`/${ProjectType.SecretManager}/$projectId/secrets/$envSlug` as const}
to={`/projects/$projectId/${ProjectType.SecretManager}/secrets/$envSlug` as const}
params={{
projectId,
envSlug: environmentSlug

View File

@@ -7,7 +7,6 @@ import z from "zod";
import { createNotification } from "@app/components/notifications";
import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2";
import { useCreateOrg, useSelectOrganization } from "@app/hooks/api";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { GenericResourceNameSchema } from "@app/lib/schemas";
const schema = z

View File

@@ -120,7 +120,7 @@ const NewProjectForm = ({ onOpenChange }: NewProjectFormProps) => {
createNotification({ text: "Project created", type: "success" });
reset();
onOpenChange(false);
navigate({ to: getProjectHomePage(project), params: { projectId: project.id } });
navigate({ to: getProjectHomePage(project.defaultType), params: { projectId: project.id } });
} catch (err) {
console.error(err);
createNotification({ text: "Failed to create project", type: "error" });

View File

@@ -1,4 +1,4 @@
import { ReactNode, ComponentType } from "react";
import { ComponentType, ReactNode } from "react";
type ShouldWrapProps<T extends Record<string, any>> = {
children: ReactNode;

View File

@@ -8,9 +8,9 @@ export * from "./Card";
export * from "./Checkbox";
export * from "./ConfirmActionModal";
export * from "./ContentLoader";
export * from "./Divider";
export * from "./DatePicker";
export * from "./DeleteActionModal";
export * from "./Divider";
export * from "./Drawer";
export * from "./Dropdown";
export * from "./Editor";

View File

@@ -1,6 +1,6 @@
import { apiRequest } from "@app/config/request";
import { createWorkspace } from "@app/hooks/api/workspace/queries";
import { ProjectType, Workspace } from "@app/hooks/api/workspace/types";
import { ProjectType } from "@app/hooks/api/workspace/types";
const secretsToBeAdded = [
{

View File

@@ -51,7 +51,7 @@ export type IdentityMembershipOrg = {
export type IdentityMembership = {
id: string;
identity: Identity;
project: Pick<Workspace, "id" | "name" | "type">;
project: Pick<Workspace, "id" | "name" | "defaultType">;
roles: Array<
{
id: string;

View File

@@ -85,9 +85,7 @@ export const AdminSidebar = () => {
const isActive = matchRoute({ to: tab.link, fuzzy: false });
return (
<Link key={tab.link} to={tab.link}>
<MenuItem isSelected={Boolean(isActive)} icon={tab.icon}>
{tab.label}
</MenuItem>
<MenuItem isSelected={Boolean(isActive)}>{tab.label}</MenuItem>
</Link>
);
})}
@@ -97,9 +95,7 @@ export const AdminSidebar = () => {
const isActive = matchRoute({ to: tab.link, fuzzy: false });
return (
<Link key={tab.link} to={tab.link}>
<MenuItem isSelected={Boolean(isActive)} icon={tab.icon}>
{tab.label}
</MenuItem>
<MenuItem isSelected={Boolean(isActive)}>{tab.label}</MenuItem>
</Link>
);
})}

View File

@@ -59,4 +59,3 @@ export const KmsLayout = () => {
</div>
);
};

View File

@@ -1 +1 @@
export { KmsLayout } from "./KmsLayout";
export { KmsLayout } from "./KmsLayout";

View File

@@ -1,33 +1,25 @@
import { useTranslation } from "react-i18next";
import { faMobile } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Outlet, useLocation, useParams, useSearch } from "@tanstack/react-router";
import { Outlet, useParams } from "@tanstack/react-router";
import { twMerge } from "tailwind-merge";
import { CreateOrgModal } from "@app/components/organization/CreateOrgModal";
import { Banner } from "@app/components/page-frames/Banner";
import { OrgPermissionSubjects, useOrgPermission, useServerConfig } from "@app/context";
import { OrgPermissionSecretShareAction } from "@app/context/OrgPermissionContext/types";
import { useServerConfig } from "@app/context";
import { usePopUp } from "@app/hooks";
import { InsecureConnectionBanner } from "./components/InsecureConnectionBanner";
import { OrgSidebar } from "./components/OrgSidebar";
import { Navbar } from "./components/NavBar";
import { twMerge } from "tailwind-merge";
import { OrgSidebar } from "./components/OrgSidebar";
export const OrganizationLayout = () => {
const { config } = useServerConfig();
const { permission } = useOrgPermission();
const projectId = useParams({
strict: false,
select: (el) => el?.projectId
});
const isInsideProject = Boolean(projectId);
console.log(isInsideProject);
const shouldShowProductsSidebar = permission.can(
OrgPermissionSecretShareAction.ManageSettings,
OrgPermissionSubjects.SecretShare
);
const { popUp, handlePopUpToggle } = usePopUp(["createOrg"] as const);

View File

@@ -1,61 +0,0 @@
import { Link } from "@tanstack/react-router";
import { Menu, MenuGroup, MenuItem } from "@app/components/v2";
export const DefaultSideBar = () => (
<Menu>
<MenuGroup title="Organization Control">
<Link to="/organization/access-management">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="groups">
Access Control
</MenuItem>
)}
</Link>
<Link to="/organization/app-connections">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="jigsaw-puzzle">
App Connections
</MenuItem>
)}
</Link>
<Link to="/organization/gateways">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="gateway" iconMode="reverse">
Gateways
</MenuItem>
)}
</Link>
<Link to="/organization/sso">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="check">
Single Sign-On (SSO)
</MenuItem>
)}
</Link>
</MenuGroup>
<MenuGroup title="Other">
<Link to="/organization/audit-logs">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="moving-block">
Audit Logs
</MenuItem>
)}
</Link>
<Link to="/organization/billing">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="spinning-coin">
Usage & Billing
</MenuItem>
)}
</Link>
<Link to="/organization/settings">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="toggle-settings">
Organization Settings
</MenuItem>
)}
</Link>
</MenuGroup>
</Menu>
);

View File

@@ -1,99 +0,0 @@
import { faArrowUpRightFromSquare } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, useMatchRoute } from "@tanstack/react-router";
import { Menu, MenuGroup, MenuItem } from "@app/components/v2";
import { ProjectType } from "@app/hooks/api/workspace/types";
type TProjectOverviewSideBarProps = {
type: ProjectType;
};
export const ProjectOverviewSideBar = ({ type }: TProjectOverviewSideBarProps) => {
const matchRoute = useMatchRoute();
const isOverviewActive = !!matchRoute({
to: "/organization/projects",
fuzzy: false
});
let label: string;
let icon: string;
let link: string;
switch (type) {
case ProjectType.CertificateManager:
label = "Cert Management";
icon = "note";
link = "https://infisical.com/docs/documentation/platform/pki/overview";
break;
case ProjectType.SecretManager:
label = "Secret Management";
icon = "sliding-carousel";
link = "https://infisical.com/docs/documentation/getting-started/introduction";
break;
case ProjectType.KMS:
label = "KMS";
icon = "unlock";
link = "https://infisical.com/docs/documentation/platform/kms/overview";
break;
case ProjectType.SSH:
label = "SSH";
icon = "verified";
link = "https://infisical.com/docs/documentation/platform/ssh/overview";
break;
case ProjectType.SecretScanning:
label = "Secret Scanning";
icon = "secret-scan";
link = "https://infisical.com/docs/documentation/platform/secret-scanning/overview";
break;
default:
throw new Error("Unknown project type");
}
return (
<>
<div className="p-2 pt-3">
<a
target="_blank"
rel="noopener noreferrer"
href={link}
className="flex w-full items-center rounded-md border border-mineshaft-600 p-2 pl-3 transition-all duration-150 hover:bg-mineshaft-700"
>
<div className="mr-2 flex h-6 w-6 items-center justify-center rounded-md bg-mineshaft-500 p-4">
<FontAwesomeIcon
icon={faArrowUpRightFromSquare}
className="h-3.5 w-3.5 text-mineshaft-300"
/>
</div>
<div className="-mt-1 flex flex-grow flex-col text-white">
<div className="max-w-36 truncate text-ellipsis text-sm font-medium capitalize">
Infisical Docs
</div>
<div className="text-xs leading-[10px] text-mineshaft-400">
{type === ProjectType.SecretManager ? "Get Started" : `${label} Overview`}
</div>
</div>
</a>
</div>
<Menu>
<MenuGroup title="Overview">
<Link to={`/organization/${type}/overview`}>
<MenuItem isSelected={isOverviewActive} icon={icon}>
{label}
</MenuItem>
</Link>
</MenuGroup>
<MenuGroup title="Other">
<Link to={`/organization/${type}/settings`}>
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="toggle-settings">
Settings
</MenuItem>
)}
</Link>
</MenuGroup>
</Menu>
</>
);
};

View File

@@ -1,34 +0,0 @@
import { Link, useMatchRoute } from "@tanstack/react-router";
import { Menu, MenuGroup, MenuItem } from "@app/components/v2";
export const SecretSharingSideBar = () => {
const matchRoute = useMatchRoute();
const isOverviewActive = !!matchRoute({
to: "/organization/secret-sharing",
fuzzy: false
});
return (
<Menu>
<MenuGroup title="Overview">
<Link to="/organization/secret-sharing">
{() => (
<MenuItem isSelected={isOverviewActive} icon="lock-closed">
Secret Sharing
</MenuItem>
)}
</Link>
</MenuGroup>
<MenuGroup title="Other">
<Link to="/organization/secret-sharing/settings">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="toggle-settings">
Settings
</MenuItem>
)}
</Link>
</MenuGroup>
</Menu>
);
};

View File

@@ -1,3 +0,0 @@
export * from "./DefaultSideBar";
export * from "./ProjectOverviewSideBar";
export * from "./SecretSharingSideBar";

View File

@@ -1,5 +1,6 @@
import { useState } from "react";
import { faGithub, faSlack } from "@fortawesome/free-brands-svg-icons";
import { faCircleQuestion } from "@fortawesome/free-regular-svg-icons";
import {
faArrowUpRightFromSquare,
faBook,
@@ -13,7 +14,6 @@ import {
faUser,
faUsers
} from "@fortawesome/free-solid-svg-icons";
import { faCircleQuestion } from "@fortawesome/free-regular-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { useQueryClient } from "@tanstack/react-query";
import { Link, useNavigate, useRouter, useRouterState } from "@tanstack/react-router";
@@ -29,6 +29,8 @@ import {
DropdownMenuTrigger,
IconButton,
Lottie,
Modal,
ModalContent,
TBreadcrumbFormat
} from "@app/components/v2";
import { envConfig } from "@app/config/env";
@@ -42,6 +44,8 @@ import { SubscriptionPlan } from "@app/hooks/api/types";
import { AuthMethod } from "@app/hooks/api/users/types";
import { navigateUserToOrg } from "@app/pages/auth/LoginPage/Login.utils";
import { ServerAdminsPanel } from "../ServerAdminsPanel/ServerAdminsPanel";
const getPlan = (subscription: SubscriptionPlan) => {
if (subscription.groups) return "Enterprise";
if (subscription.pitRecovery) return "Pro";
@@ -82,6 +86,7 @@ export const Navbar = () => {
const { currentOrg } = useOrganization();
const [openSupport, setOpenSupport] = useState(false);
const [openUser, setOpenUser] = useState(false);
const [showAdminsModal, setShowAdminsModal] = useState(false);
const { data: orgs } = useGetOrganizations();
const navigate = useNavigate();
@@ -366,6 +371,13 @@ export const Navbar = () => {
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Modal isOpen={showAdminsModal} onOpenChange={setShowAdminsModal}>
<ModalContent title="Server Administrators" subTitle="View all server administrators">
<div className="mb-2">
<ServerAdminsPanel />
</div>
</ModalContent>
</Modal>
</div>
);
};

View File

@@ -284,7 +284,7 @@ export const OrgSidebar = () => {
</div>
<div className="space-y-1">
{currentOrg.secretsProductEnabled && (
<Link to="/organization/secret-manager/overview">
<Link to="/organization/projects">
{({ isActive }) => (
<MenuIconButton
isSelected={

View File

@@ -1,34 +1,32 @@
import { useState } from "react";
import {
faBook,
faCheckCircle,
faCog,
faCubes,
faDoorClosed,
faInfinity,
faMoneyBill,
faPlug,
faShare,
faUserCog,
faUsers
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link } from "@tanstack/react-router";
import { AnimatePresence, motion } from "framer-motion";
import { CreateOrgModal } from "@app/components/organization/CreateOrgModal";
import { Menu, MenuGroup, MenuItem, Modal, ModalContent, Tooltip } from "@app/components/v2";
import { Menu, MenuGroup, MenuItem, Tooltip } from "@app/components/v2";
import { useOrganization, useSubscription, useUser } from "@app/context";
import { usePopUp } from "@app/hooks";
import { useGetOrgTrialUrl } from "@app/hooks/api";
import { ServerAdminsPanel } from "../ServerAdminsPanel/ServerAdminsPanel";
import { AnimatePresence, motion } from "framer-motion";
type Props = {
isHidden?: boolean;
};
export const OrgSidebar = ({ isHidden }: Props) => {
const { subscription } = useSubscription();
const [showAdminsModal, setShowAdminsModal] = useState(false);
const { user } = useUser();
const { mutateAsync } = useGetOrgTrialUrl();
@@ -55,8 +53,11 @@ export const OrgSidebar = ({ isHidden }: Props) => {
<MenuGroup title="Overview">
<Link to="/organization/projects">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="notification-bell">
Projects
<MenuItem isSelected={isActive}>
<div className="mx-1">
<FontAwesomeIcon icon={faCubes} className="mr-4" />
Projects
</div>
</MenuItem>
)}
</Link>
@@ -136,8 +137,11 @@ export const OrgSidebar = ({ isHidden }: Props) => {
<MenuGroup title="Others">
<Link to="/organization/secret-sharing">
{({ isActive }) => (
<MenuItem isSelected={isActive} icon="lock-closed">
Share Secret
<MenuItem isSelected={isActive}>
<div className="mx-1">
<FontAwesomeIcon icon={faShare} className="mr-4" />
Share Secret
</div>
</MenuItem>
)}
</Link>
@@ -208,13 +212,7 @@ export const OrgSidebar = ({ isHidden }: Props) => {
</motion.aside>
)}
</AnimatePresence>
<Modal isOpen={showAdminsModal} onOpenChange={setShowAdminsModal}>
<ModalContent title="Server Administrators" subTitle="View all server administrators">
<div className="mb-2">
<ServerAdminsPanel />
</div>
</ModalContent>
</Modal>
<CreateOrgModal
isOpen={popUp?.createOrg?.isOpen}
onClose={() => handlePopUpToggle("createOrg", false)}

View File

@@ -99,4 +99,3 @@ export const PkiManagerLayout = () => {
</>
);
};

View File

@@ -1 +1 @@
export { PkiManagerLayout } from "./PkiManagerLayout";
export { PkiManagerLayout } from "./PkiManagerLayout";

View File

@@ -51,4 +51,3 @@ export const ProjectGeneralLayout = () => {
</div>
);
};

View File

@@ -1,2 +1 @@
export { ProjectGeneralLayout } from "./ProjectGeneralLayout";

View File

@@ -225,7 +225,7 @@ export const ProjectLayout = () => {
{isSSH && (
<>
<Link
to={`/${ProjectType.SSH}/$projectId/overview` as const}
to={`/projects/$projectId/${ProjectType.SSH}/overview` as const}
params={{
projectId: currentWorkspace.id
}}
@@ -237,7 +237,7 @@ export const ProjectLayout = () => {
)}
</Link>
{/* <Link
to={`/${ProjectType.SSH}/$projectId/certificates` as const}
to={`/projects/$projectId/${ProjectType.SSH}/certificates` as const}
params={{
projectId: currentWorkspace.id
}}
@@ -255,7 +255,7 @@ export const ProjectLayout = () => {
{(isAllowed) =>
isAllowed && (
<Link
to={`/${ProjectType.SSH}/$projectId/cas` as const}
to={`/projects/$projectId/${ProjectType.SSH}/cas` as const}
params={{
projectId: currentWorkspace.id
}}

View File

@@ -4,6 +4,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, Outlet, useLocation } from "@tanstack/react-router";
import { motion } from "framer-motion";
import { ShouldWrap } from "@app/components/utilities/ShouldWrapComponent";
import {
Divider,
DropdownMenu,
@@ -16,12 +17,11 @@ import {
Tooltip
} from "@app/components/v2";
import { useProjectPermission, useWorkspace } from "@app/context";
import { getCurrentProductFromUrl } from "@app/helpers/project";
import { useLocalStorageState } from "@app/hooks";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { AssumePrivilegeModeBanner } from "./components/AssumePrivilegeModeBanner";
import { useLocalStorageState } from "@app/hooks";
import { ShouldWrap } from "@app/components/utilities/ShouldWrapComponent";
import { getCurrentProductFromUrl } from "@app/helpers/project";
import { ProjectType } from "@app/hooks/api/workspace/types";
enum SidebarStyle {
Expanded = "expanded",

View File

@@ -6,6 +6,7 @@ import { useProjectPermission, useWorkspace } from "@app/context";
import { useRemoveAssumeProjectPrivilege } from "@app/hooks/api";
import { ActorType } from "@app/hooks/api/auditLogs/enums";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
export const AssumePrivilegeModeBanner = () => {
const { currentWorkspace } = useWorkspace();
@@ -36,20 +37,11 @@ export const AssumePrivilegeModeBanner = () => {
},
{
onSuccess: () => {
let page: string;
const url = getProjectHomePage(
getCurrentProductFromUrl(window.location.href) || ProjectType.SecretManager
);
switch (currentWorkspace.type) {
case ProjectType.SecretScanning:
page = "data-sources";
break;
case ProjectType.CertificateManager:
page = "subscribers";
break;
default:
page = "overview";
}
window.location.href = `/${currentWorkspace.type}/${currentWorkspace.id}/${page}`;
window.location.href = url.replace("$projectId", currentWorkspace.id);
}
}
);

View File

@@ -4,17 +4,17 @@ import {
faCheck,
faCube,
faPlus,
faStar as faSolidStar,
faSort
faSort,
faStar as faSolidStar
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Link, linkOptions } from "@tanstack/react-router";
import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal";
import { createNotification } from "@app/components/notifications";
import { OrgPermissionCan } from "@app/components/permissions";
import { NewProjectModal } from "@app/components/projects";
import {
Button,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
@@ -28,13 +28,12 @@ import {
useSubscription,
useWorkspace
} from "@app/context";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
import { usePopUp } from "@app/hooks";
import { useGetUserWorkspaces } from "@app/hooks/api";
import { useUpdateUserProjectFavorites } from "@app/hooks/api/users/mutation";
import { useGetUserProjectFavorites } from "@app/hooks/api/users/queries";
import { ProjectType, Workspace } from "@app/hooks/api/workspace/types";
import { Link, linkOptions } from "@tanstack/react-router";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
// TODO(pta): add search to project select
export const ProjectSelect = () => {

View File

@@ -105,7 +105,7 @@ export const SecretManagerLayout = () => {
)}
</Link>
<Link
to={`/${currentWorkspace.type}/$projectId/settings` as const}
to="/projects/$projectId/secret-manager/settings"
params={{
projectId: currentWorkspace.id
}}

View File

@@ -59,4 +59,3 @@ export const SecretScanningLayout = () => {
</div>
);
};

View File

@@ -1 +1 @@
export { SecretScanningLayout } from "./SecretScanningLayout";
export { SecretScanningLayout } from "./SecretScanningLayout";

View File

@@ -1,9 +1,9 @@
import { Link, Outlet } from "@tanstack/react-router";
import { motion } from "framer-motion";
import { ProjectPermissionCan } from "@app/components/permissions";
import { Menu, MenuItem } from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
import { ProjectPermissionCan } from "@app/components/permissions";
export const SshLayout = () => {
const { currentWorkspace } = useWorkspace();
@@ -97,4 +97,3 @@ export const SshLayout = () => {
</div>
);
};

View File

@@ -1 +1 @@
export { SshLayout } from "./SshLayout";
export { SshLayout } from "./SshLayout";

View File

@@ -12,7 +12,6 @@ import {
useGetPkiCollectionById,
useUpdatePkiCollection
} from "@app/hooks/api";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { UsePopUpState } from "@app/hooks/usePopUp";
const schema = z.object({
@@ -83,7 +82,7 @@ export const PkiCollectionModal = ({ popUp, handlePopUpToggle }: Props) => {
});
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/pki-collections/$collectionId` as const,
to: "/projects/$projectId/cert-manager/pki-collections/$collectionId",
params: {
projectId,
collectionId

View File

@@ -61,7 +61,7 @@ export const PkiCollectionTable = ({ handlePopUpOpen }: Props) => {
key={`pki-collection-${pkiCollection.id}`}
onClick={() =>
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/pki-collections/$collectionId` as const,
to: `/projects/$projectId/${ProjectType.CertificateManager}/pki-collections/$collectionId` as const,
params: {
projectId,
collectionId: pkiCollection.id

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { AlertingPage } from './AlertingPage'
import { AlertingPage } from "./AlertingPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/alerting',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/alerting"
)({
component: AlertingPage,
beforeLoad: ({ context }) => {
@@ -11,9 +11,9 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Alerting',
},
],
}
},
})
label: "Alerting"
}
]
};
}
});

View File

@@ -71,7 +71,7 @@ const Page = () => {
handlePopUpClose("deleteCa");
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/certificate-authorities` as const,
to: `/projects/$projectId/${ProjectType.CertificateManager}/certificate-authorities` as const,
params: {
projectId
}

View File

@@ -1,9 +1,9 @@
import { createFileRoute, linkOptions } from '@tanstack/react-router'
import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { CertAuthDetailsByIDPage } from './CertAuthDetailsByIDPage'
import { CertAuthDetailsByIDPage } from "./CertAuthDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/ca/$caName',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/ca/$caName"
)({
component: CertAuthDetailsByIDPage,
beforeLoad: ({ context, params }) => {
@@ -11,15 +11,15 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Certificate Authorities',
label: "Certificate Authorities",
link: linkOptions({
to: '/cert-manager/$projectId/certificate-authorities',
to: "/projects/$projectId/cert-manager/certificate-authorities",
params: {
projectId: params.projectId,
},
}),
},
],
}
},
})
projectId: params.projectId
}
})
}
]
};
}
});

View File

@@ -79,7 +79,7 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
key={`ca-${ca.id}`}
onClick={() =>
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/ca/$caName` as const,
to: `/projects/$projectId/${ProjectType.CertificateManager}/ca/$caName` as const,
params: {
projectId: currentWorkspace.id,
caName: ca.name

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { CertificateAuthoritiesPage } from './CertificateAuthoritiesPage'
import { CertificateAuthoritiesPage } from "./CertificateAuthoritiesPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/certificate-authorities',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/certificate-authorities"
)({
component: CertificateAuthoritiesPage,
beforeLoad: ({ context }) => {
@@ -11,9 +11,9 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Certificate Authorities',
},
],
}
},
})
label: "Certificate Authorities"
}
]
};
}
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { CertificatesPage } from './CertificatesPage'
import { CertificatesPage } from "./CertificatesPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/certificates',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/certificates"
)({
component: CertificatesPage,
})
component: CertificatesPage
});

View File

@@ -57,7 +57,7 @@ export const PkiCollectionPage = () => {
});
handlePopUpClose("deletePkiCollection");
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/certificates` as const,
to: `/projects/$projectId/${ProjectType.CertificateManager}/certificates` as const,
params: {
projectId
}

View File

@@ -1,9 +1,9 @@
import { createFileRoute, linkOptions } from '@tanstack/react-router'
import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { PkiCollectionDetailsByIDPage } from './PkiCollectionDetailsByIDPage'
import { PkiCollectionDetailsByIDPage } from "./PkiCollectionDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/pki-collections/$collectionId',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/pki-collections/$collectionId"
)({
component: PkiCollectionDetailsByIDPage,
beforeLoad: ({ context, params }) => {
@@ -11,15 +11,15 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Certificate Collections',
label: "Certificate Collections",
link: linkOptions({
to: '/cert-manager/$projectId/certificates',
to: "/projects/$projectId/cert-manager/certificates",
params: {
projectId: params.projectId,
},
}),
},
],
}
},
})
projectId: params.projectId
}
})
}
]
};
}
});

View File

@@ -61,7 +61,7 @@ const Page = () => {
handlePopUpClose("deletePkiSubscriber");
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/subscribers` as const,
to: `/projects/$projectId/${ProjectType.CertificateManager}/subscribers` as const,
params: {
projectId
}

View File

@@ -1,9 +1,9 @@
import { createFileRoute, linkOptions } from '@tanstack/react-router'
import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { PkiSubscriberDetailsByIDPage } from './PkiSubscriberDetailsByIDPage'
import { PkiSubscriberDetailsByIDPage } from "./PkiSubscriberDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/subscribers/$subscriberName',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/subscribers/$subscriberName"
)({
component: PkiSubscriberDetailsByIDPage,
beforeLoad: ({ context, params }) => {
@@ -11,15 +11,15 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Subscribers',
label: "Subscribers",
link: linkOptions({
to: '/cert-manager/$projectId/subscribers',
to: "/projects/$projectId/cert-manager/subscribers",
params: {
projectId: params.projectId,
},
}),
},
],
}
},
})
projectId: params.projectId
}
})
}
]
};
}
});

View File

@@ -76,7 +76,7 @@ export const PkiSubscribersTable = ({ handlePopUpOpen }: Props) => {
key={`pki-subscriber-${subscriber.id}`}
onClick={() =>
navigate({
to: `/${ProjectType.CertificateManager}/$projectId/subscribers/$subscriberName` as const,
to: `/projects/$projectId/${ProjectType.CertificateManager}/subscribers/$subscriberName` as const,
params: {
projectId: currentWorkspace.id,
subscriberName: subscriber.name

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { PkiSubscribersPage } from './PkiSubscribersPage'
import { PkiSubscribersPage } from "./PkiSubscribersPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/subscribers/',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/subscribers/"
)({
component: PkiSubscribersPage,
})
component: PkiSubscribersPage
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { PkiTemplateListPage } from './PkiTemplateListPage'
import { PkiTemplateListPage } from "./PkiTemplateListPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/certificate-templates/',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/certificate-templates/"
)({
component: PkiTemplateListPage,
})
component: PkiTemplateListPage
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from './SettingsPage'
import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/settings',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/cert-manager/_cert-manager-layout/settings"
)({
component: SettingsPage,
beforeLoad: ({ context }) => {
@@ -11,9 +11,9 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Settings',
},
],
}
},
})
label: "Settings"
}
]
};
}
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { KmipPage } from './KmipPage'
import { KmipPage } from "./KmipPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/kms/_kms-layout/kmip',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/kms/_kms-layout/kmip"
)({
component: KmipPage,
})
component: KmipPage
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { OverviewPage } from './OverviewPage'
import { OverviewPage } from "./OverviewPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/kms/_kms-layout/overview',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/kms/_kms-layout/overview"
)({
component: OverviewPage,
})
component: OverviewPage
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from './SettingsPage'
import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/kms/_kms-layout/settings',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/kms/_kms-layout/settings"
)({
component: SettingsPage,
beforeLoad: ({ context }) => {
@@ -11,9 +11,9 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Settings',
},
],
}
},
})
label: "Settings"
}
]
};
}
});

View File

@@ -12,7 +12,6 @@ import { SessionStorageKeys } from "@app/const";
import { useServerConfig } from "@app/context";
import { authKeys, fetchAuthToken } from "@app/hooks/api/auth/queries";
import { setAuthToken } from "@app/hooks/api/reactQuery";
import { ProjectType } from "@app/hooks/api/workspace/types";
const QueryParamsSchema = z.object({
callback_port: z.coerce.number().optional().catch(undefined),

View File

@@ -33,6 +33,7 @@ import { withPermission } from "@app/hoc";
import { useDebounce } from "@app/hooks";
import { useOrgAdminAccessProject, useOrgAdminGetProjects } from "@app/hooks/api";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { getProjectHomePage } from "@app/helpers/project";
export const OrgAdminProjects = withPermission(
() => {
@@ -58,26 +59,8 @@ export const OrgAdminProjects = withPermission(
await orgAdminAccessProject.mutateAsync({
projectId
});
if (type === ProjectType.CertificateManager) {
await navigate({
to: "/cert-manager/$projectId/subscribers" as const,
params: {
projectId
}
});
return;
}
if (type === ProjectType.SecretScanning) {
await navigate({
to: "/secret-scanning/$projectId/data-sources" as const,
params: {
projectId
}
});
return;
}
await navigate({
to: `/${type}/$projectId/overview` as const,
to: getProjectHomePage(type),
params: {
projectId
}
@@ -122,7 +105,7 @@ export const OrgAdminProjects = withPermission(
<TBody>
{isProjectsLoading && <TableSkeleton columns={4} innerKey="projects" />}
{!isProjectsLoading &&
projects?.map(({ name, slug, createdAt, type, id }) => (
projects?.map(({ name, slug, createdAt, id, defaultType }) => (
<Tr key={`project-${id}`} className="group w-full">
<Td>{name}</Td>
<Td>{slug}</Td>
@@ -143,7 +126,7 @@ export const OrgAdminProjects = withPermission(
onClick={(e) => {
e.stopPropagation();
e.preventDefault();
handleAccessProject(type, id);
handleAccessProject(defaultType, id);
}}
icon={<FontAwesomeIcon icon={faSignIn} />}
disabled={

View File

@@ -418,10 +418,10 @@ export const LogsFilter = ({
onChange(e);
}}
placeholder="All projects"
options={workspacesInOrg.map(({ name, id, type }) => ({
options={workspacesInOrg.map(({ name, id, defaultType }) => ({
name,
id,
type
type: defaultType
}))}
getOptionValue={(option) => option.id}
getOptionLabel={(option) => option.name}

View File

@@ -2,10 +2,10 @@ import { Helmet } from "react-helmet";
import { useTranslation } from "react-i18next";
import { OrgPermissionCan } from "@app/components/permissions";
import { PageHeader } from "@app/components/v2";
import { OrgPermissionBillingActions, OrgPermissionSubjects } from "@app/context";
import { BillingTabGroup } from "./components";
import { PageHeader } from "@app/components/v2";
export const BillingPage = () => {
const { t } = useTranslation();

View File

@@ -5,7 +5,7 @@ import { useNavigate } from "@tanstack/react-router";
import { format } from "date-fns";
import { createNotification } from "@app/components/notifications";
import { IconButton, Tag, Td, Tooltip, Tr } from "@app/components/v2";
import { IconButton, Td, Tooltip, Tr } from "@app/components/v2";
import { formatProjectRoleName } from "@app/helpers/roles";
import { useGetUserWorkspaces } from "@app/hooks/api";
import { IdentityMembership } from "@app/hooks/api/identities/types";
@@ -50,7 +50,7 @@ export const IdentityProjectRow = ({
onClick={() => {
if (isAccessible) {
navigate({
to: `/${project?.type}/$projectId/access-management` as const,
to: "/projects/$projectId/access-management",
params: {
projectId: project.id
},
@@ -68,9 +68,6 @@ export const IdentityProjectRow = ({
}}
>
<Td className="max-w-0 truncate">{project.name}</Td>
<Td>
<Tag size="xs">{project.type}</Tag>
</Td>
<Td>{`${formatProjectRoleName(roles[0].role, roles[0].customRoleName)}${
roles.length > 1 ? ` (+${roles.length - 1})` : ""
}`}</Td>

View File

@@ -222,7 +222,7 @@ export const AllProjectView = ({
onKeyDown={(evt) => {
if (evt.key === "Enter" && workspace.isMember) {
navigate({
to: getProjectHomePage(workspace),
to: getProjectHomePage(workspace.defaultType),
params: {
projectId: workspace.id
}
@@ -232,7 +232,7 @@ export const AllProjectView = ({
onClick={() => {
if (workspace.isMember) {
navigate({
to: getProjectHomePage(workspace),
to: getProjectHomePage(workspace.defaultType),
params: {
projectId: workspace.id
}

View File

@@ -215,7 +215,7 @@ export const MyProjectView = ({
<div
onClick={() => {
navigate({
to: getProjectHomePage(workspace),
to: getProjectHomePage(workspace.defaultType),
params: {
projectId: workspace.id
}

View File

@@ -10,7 +10,7 @@ export const Route = createFileRoute(
breadcrumbs: [
{
label: "Secret Management",
link: linkOptions({ to: "/organization/secret-manager/overview" })
link: linkOptions({ to: "/organization/projects" })
},
{
label: "Settings"

View File

@@ -43,7 +43,7 @@ export const UserProjectRow = ({
onClick={() => {
if (isAccessible) {
navigate({
to: `/${project.type}/$projectId/access-management` as const,
to: "/projects/$projectId/access-management",
params: {
projectId: project.id
},

View File

@@ -4,7 +4,6 @@ import { useNavigate, useSearch } from "@tanstack/react-router";
import { PageHeader, Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
import { useWorkspace } from "@app/context";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { ProjectAccessControlTabs } from "@app/types/project";
import {
@@ -25,7 +24,7 @@ const Page = () => {
const updateSelectedTab = (tab: string) => {
navigate({
to: `/${currentWorkspace.type}/$projectId/access-management` as const,
to: "/projects/$projectId/access-management",
search: (prev) => ({ ...prev, selectedTab: tab }),
params: {
projectId: currentWorkspace.id
@@ -49,9 +48,7 @@ const Page = () => {
<p>Machine Identities</p>
</div>
</Tab>
{currentWorkspace?.type === ProjectType.SecretManager && (
<Tab value={ProjectAccessControlTabs.ServiceTokens}>Service Tokens</Tab>
)}
<Tab value={ProjectAccessControlTabs.ServiceTokens}>Service Tokens</Tab>
<Tab value={ProjectAccessControlTabs.Roles}>Project Roles</Tab>
</TabList>
<TabPanel value={ProjectAccessControlTabs.Member}>
@@ -63,11 +60,9 @@ const Page = () => {
<TabPanel value={ProjectAccessControlTabs.Identities}>
<IdentityTab />
</TabPanel>
{currentWorkspace?.type === ProjectType.SecretManager && (
<TabPanel value={ProjectAccessControlTabs.ServiceTokens}>
<ServiceTokenTab />
</TabPanel>
)}
<TabPanel value={ProjectAccessControlTabs.ServiceTokens}>
<ServiceTokenTab />
</TabPanel>
<TabPanel value={ProjectAccessControlTabs.Roles}>
<ProjectRoleListTab />
</TabPanel>

View File

@@ -158,7 +158,7 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
onKeyDown={(evt) => {
if (evt.key === "Enter") {
navigate({
to: `/${currentWorkspace.type}/$projectId/groups/$groupId` as const,
to: "/projects/$projectId/groups/$groupId",
params: {
projectId: currentWorkspace.id,
groupId: id
@@ -168,7 +168,7 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
}}
onClick={() =>
navigate({
to: `/${currentWorkspace.type}/$projectId/groups/$groupId` as const,
to: "/projects/$projectId/groups/$groupId",
params: {
projectId: currentWorkspace.id,
groupId: id

View File

@@ -260,7 +260,7 @@ export const IdentityTab = withProjectPermission(
onKeyDown={(evt) => {
if (evt.key === "Enter") {
navigate({
to: `/${currentWorkspace?.type}/$projectId/identities/$identityId` as const,
to: "/projects/$projectId/identities/$identityId",
params: {
projectId: currentWorkspace.id,
identityId: id
@@ -270,7 +270,7 @@ export const IdentityTab = withProjectPermission(
}}
onClick={() =>
navigate({
to: `/${currentWorkspace?.type}/$projectId/identities/$identityId` as const,
to: "/projects/$projectId/identities/$identityId",
params: {
projectId: currentWorkspace.id,
identityId: id

View File

@@ -21,7 +21,7 @@ export const MemberRoleForm = ({ projectMember, onOpenUpgradeModal }: Props) =>
>
<AlertDescription>
<Link
to={`/${currentWorkspace.type}/$projectId/members/$membershipId` as const}
to="/projects/$projectId/members/$membershipId"
params={{
projectId: currentWorkspace.id,
membershipId: projectMember.id

View File

@@ -311,7 +311,7 @@ export const MembersTable = ({ handlePopUpOpen }: Props) => {
onKeyDown={(evt) => {
if (evt.key === "Enter") {
navigate({
to: `/${currentWorkspace.type}/$projectId/members/$membershipId` as const,
to: "/projects/$projectId/members/$membershipId",
params: {
projectId: workspaceId,
membershipId
@@ -321,7 +321,7 @@ export const MembersTable = ({ handlePopUpOpen }: Props) => {
}}
onClick={() =>
navigate({
to: `/${currentWorkspace.type}/$projectId/members/$membershipId` as const,
to: "/projects/$projectId/members/$membershipId",
params: {
projectId: workspaceId,
membershipId

View File

@@ -249,7 +249,7 @@ export const ProjectRoleList = () => {
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() =>
navigate({
to: `/${currentWorkspace?.type}/$projectId/roles/$roleSlug` as const,
to: "/projects/$projectId/roles/$roleSlug",
params: {
projectId: currentWorkspace.id,
roleSlug: slug
@@ -291,7 +291,7 @@ export const ProjectRoleList = () => {
onClick={(e) => {
e.stopPropagation();
navigate({
to: `/${currentWorkspace?.type}/$projectId/roles/$roleSlug` as const,
to: "/projects/$projectId/roles/$roleSlug",
params: {
projectId: currentWorkspace.id,
roleSlug: slug

View File

@@ -46,7 +46,13 @@ export const GroupDetailsSection = ({ groupMembership }: Props) => {
});
navigate({
to: `/${currentWorkspace.type}/${currentWorkspace.id}/access-management?selectedTab=groups`
to: "/projects/$projectId/access-management",
params: {
projectId: currentWorkspace.id
},
search: {
selectedTab: "groups"
}
});
handlePopUpClose("deleteGroup");

View File

@@ -24,6 +24,7 @@ import {
Tr
} from "@app/components/v2";
import { useWorkspace } from "@app/context";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
import {
getUserTablePreference,
PreferenceKey,
@@ -136,20 +137,10 @@ export const GroupMembersTable = ({ groupMembership }: Props) => {
text: "User privilege assumption has started"
});
let overviewPage: string;
switch (currentWorkspace.type) {
case ProjectType.SecretScanning:
overviewPage = "data-sources";
break;
case ProjectType.CertificateManager:
overviewPage = "subscribers";
break;
default:
overviewPage = "overview";
}
window.location.href = `/${currentWorkspace.type}/${currentWorkspace.id}/${overviewPage}`;
const url = getProjectHomePage(
getCurrentProductFromUrl(window.location.href) || ProjectType.SecretManager
);
window.location.href = url.replace("$projectId", currentWorkspace.id);
}
}
);

View File

@@ -1,14 +1,14 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { GroupDetailsByIDPage } from './GroupDetailsByIDPage'
import { GroupDetailsByIDPage } from "./GroupDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/groups/$groupId',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/groups/$groupId"
)({
component: GroupDetailsByIDPage,
beforeLoad: ({ context }) => {
return {
breadcrumbs: [],
}
},
})
breadcrumbs: []
};
}
});

View File

@@ -20,6 +20,7 @@ import {
ProjectPermissionSub,
useWorkspace
} from "@app/context";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
import { usePopUp } from "@app/hooks";
import {
useAssumeProjectPrivileges,
@@ -27,6 +28,7 @@ import {
useGetWorkspaceIdentityMembershipDetails
} from "@app/hooks/api";
import { ActorType } from "@app/hooks/api/auditLogs/enums";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { IdentityProjectAdditionalPrivilegeSection } from "./components/IdentityProjectAdditionalPrivilegeSection";
import { IdentityRoleDetailsSection } from "./components/IdentityRoleDetailsSection";
@@ -66,7 +68,10 @@ const Page = () => {
type: "success",
text: "Identity privilege assumption has started"
});
window.location.href = `/${currentWorkspace.type}/${currentWorkspace.id}/overview`;
const url = getProjectHomePage(
getCurrentProductFromUrl(window.location.href) || ProjectType.SecretManager
);
window.location.href = url.replace("$projectId", currentWorkspace.id);
}
}
);
@@ -84,7 +89,7 @@ const Page = () => {
});
handlePopUpClose("deleteIdentity");
navigate({
to: `/${currentWorkspace.type}/$projectId/access-management` as const,
to: "/projects/$projectId/access-management",
params: {
projectId: workspaceId
},

View File

@@ -1,14 +1,14 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { IdentityDetailsByIDPage } from './IdentityDetailsByIDPage'
import { IdentityDetailsByIDPage } from "./IdentityDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/identities/$identityId',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/identities/$identityId"
)({
component: IdentityDetailsByIDPage,
beforeLoad: ({ context }) => {
return {
breadcrumbs: [],
}
},
})
breadcrumbs: []
};
}
});

View File

@@ -21,6 +21,7 @@ import {
useOrganization,
useWorkspace
} from "@app/context";
import { getCurrentProductFromUrl, getProjectHomePage } from "@app/helpers/project";
import { usePopUp } from "@app/hooks";
import {
useAssumeProjectPrivileges,
@@ -72,20 +73,10 @@ export const Page = () => {
text: "User privilege assumption has started"
});
let page: string;
switch (currentWorkspace.type) {
case ProjectType.SecretScanning:
page = "data-sources";
break;
case ProjectType.CertificateManager:
page = "subscribers";
break;
default:
page = "overview";
}
window.location.href = `/${currentWorkspace.type}/${currentWorkspace.id}/${page}`;
const url = getProjectHomePage(
getCurrentProductFromUrl(window.location.href) || ProjectType.SecretManager
);
window.location.href = url.replace("$projectId", currentWorkspace.id);
}
}
);
@@ -105,7 +96,7 @@ export const Page = () => {
type: "success"
});
navigate({
to: `/${currentWorkspace.type}/$projectId/access-management` as const,
to: "/projects/$projectId/access-management",
params: {
projectId: currentWorkspace.id
}

View File

@@ -1,14 +1,14 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { MemberDetailsByIDPage } from './MemberDetailsByIDPage'
import { MemberDetailsByIDPage } from "./MemberDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/members/$membershipId',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/members/$membershipId"
)({
component: MemberDetailsByIDPage,
beforeLoad: ({ context }) => {
return {
breadcrumbs: [],
}
},
})
breadcrumbs: []
};
}
});

View File

@@ -60,7 +60,7 @@ const Page = () => {
});
handlePopUpClose("deleteRole");
navigate({
to: `/${currentWorkspace?.type}/$projectId/access-management` as const,
to: "/projects/$projectId/access-management",
params: {
projectId
},

View File

@@ -80,7 +80,7 @@ const Content = ({ role, onClose }: ContentProps) => {
});
navigate({
to: `/${currentWorkspace.type}/$projectId/roles/$roleSlug` as const,
to: "/projects/$projectId/roles/$roleSlug",
params: {
roleSlug: newRole.slug,
projectId: currentWorkspace.id

View File

@@ -100,7 +100,7 @@ export const RoleModal = ({ popUp, handlePopUpToggle }: Props) => {
});
navigate({
to: `/${currentWorkspace.type}/$projectId/roles/$roleSlug` as const,
to: "/projects/$projectId/roles/$roleSlug",
params: {
roleSlug: newRole.slug,
projectId

View File

@@ -1,14 +1,14 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { RoleDetailsBySlugPage } from './RoleDetailsBySlugPage'
import { RoleDetailsBySlugPage } from "./RoleDetailsBySlugPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/roles/$roleSlug',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/roles/$roleSlug"
)({
component: RoleDetailsBySlugPage,
beforeLoad: ({ context }) => {
beforeLoad: ({}) => {
return {
breadcrumbs: [],
}
},
})
breadcrumbs: []
};
}
});

View File

@@ -1,14 +1,15 @@
import { createFileRoute } from '@tanstack/react-router'
import { SettingsPage } from './SettingsPage'
import { createFileRoute } from "@tanstack/react-router";
import { SettingsPage } from "./SettingsPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/settings',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout/settings"
)({
component: SettingsPage,
beforeLoad: ({ context, params }) => {
return {
breadcrumbs: [
...context.breadcrumbs,
...context.breadcrumbs
// {
// label: "Access Control",
// link: linkOptions({
@@ -18,7 +19,7 @@ export const Route = createFileRoute(
// }
// })
// }
],
}
},
})
]
};
}
});

View File

@@ -1,8 +1,9 @@
import { ProjectGeneralLayout } from '@app/layouts/ProjectGeneralLayout'
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { ProjectGeneralLayout } from "@app/layouts/ProjectGeneralLayout";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/_project-general-layout"
)({
component: ProjectGeneralLayout,
})
component: ProjectGeneralLayout
});

View File

@@ -1,10 +1,10 @@
import { createFileRoute } from "@tanstack/react-router";
import { BreadcrumbTypes } from "@app/components/v2";
import { workspaceKeys } from "@app/hooks/api";
import { fetchUserProjectPermissions, roleQueryKeys } from "@app/hooks/api/roles/queries";
import { fetchWorkspaceById } from "@app/hooks/api/workspace/queries";
import { ProjectLayout } from "@app/layouts/ProjectLayout";
import { BreadcrumbTypes } from "@app/components/v2";
import { ProjectSelect } from "@app/layouts/ProjectLayout/components/ProjectSelect";
export const Route = createFileRoute(

View File

@@ -31,7 +31,7 @@ export const ErrorPage = ({ error }: ErrorComponentProps) => {
</a>{" "}
if the issue persists.
</p>
<Link to="/organization/secret-manager/overview">
<Link to="/organization/projects">
<Button className="mt-4" size="xs">
<FontAwesomeIcon icon={faHome} className="mr-2" />
Back To Home

View File

@@ -16,7 +16,7 @@ export const NotFoundPage = () => {
</a>{" "}
and we`ll fix it!{" "}
</p>
<Link to="/organization/secret-manager/overview">
<Link to="/organization/projects">
<div className="diration-200 mt-8 cursor-default rounded-md bg-mineshaft-500 px-4 py-2 font-semibold hover:bg-primary hover:text-black">
Go to Dashboard
</div>

View File

@@ -7,7 +7,6 @@ import {
ProjectPermissionCommitsActions,
ProjectPermissionSub
} from "@app/context/ProjectPermissionContext/types";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { CommitDetailsTab } from "./components/CommitDetailsTab";
@@ -35,7 +34,7 @@ export const CommitDetailsPage = () => {
const handleGoBackToHistory = () => {
navigate({
to: `/${ProjectType.SecretManager}/$projectId/commits/$environment/$folderId` as const,
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId",
params: {
projectId: currentWorkspace.id,
folderId,
@@ -50,7 +49,7 @@ export const CommitDetailsPage = () => {
const handleGoToRollbackPreview = () => {
navigate({
to: `/${ProjectType.SecretManager}/$projectId/commits/$environment/$folderId/$commitId/restore` as const,
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId/$commitId/restore",
params: {
projectId: currentWorkspace.id,
folderId,

View File

@@ -24,7 +24,6 @@ import {
} from "@app/context/ProjectPermissionContext/types";
import { usePopUp } from "@app/hooks";
import { useCommitRollback, useGetRollbackPreview } from "@app/hooks/api/folderCommits/queries";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { SecretVersionDiffView } from "../SecretVersionDiffView";
@@ -103,7 +102,7 @@ export const RollbackPreviewTab = (): JSX.Element => {
const goBackToHistory = () => {
navigate({
to: `/${ProjectType.SecretManager}/$projectId/commits/$environment/$folderId` as const,
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId",
params: {
projectId: currentWorkspace.id,
folderId,

View File

@@ -1,30 +1,26 @@
import {
createFileRoute,
linkOptions,
stripSearchParams,
} from '@tanstack/react-router'
import { zodValidator } from '@tanstack/zod-adapter'
import { z } from 'zod'
import { createFileRoute, linkOptions, stripSearchParams } from "@tanstack/react-router";
import { zodValidator } from "@tanstack/zod-adapter";
import { z } from "zod";
import { SecretDashboardPathBreadcrumb } from '@app/components/navigation/SecretDashboardPathBreadcrumb'
import { BreadcrumbTypes } from '@app/components/v2'
import { SecretDashboardPathBreadcrumb } from "@app/components/navigation/SecretDashboardPathBreadcrumb";
import { BreadcrumbTypes } from "@app/components/v2";
import { RollbackPreviewTab } from './RollbackPreviewTab'
import { RollbackPreviewTab } from "./RollbackPreviewTab";
const RollbackPreviewTabQueryParamsSchema = z.object({
secretPath: z.string().catch('/'),
})
secretPath: z.string().catch("/")
});
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/commits/$environment/$folderId/$commitId/restore',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/commits/$environment/$folderId/$commitId/restore"
)({
component: RollbackPreviewTab,
validateSearch: zodValidator(RollbackPreviewTabQueryParamsSchema),
search: {
middlewares: [stripSearchParams({ secretPath: '/' })],
middlewares: [stripSearchParams({ secretPath: "/" })]
},
beforeLoad: ({ context, params, search }) => {
const secretPathSegments = search.secretPath.split('/').filter(Boolean)
const secretPathSegments = search.secretPath.split("/").filter(Boolean);
return {
breadcrumbs: [
@@ -32,20 +28,18 @@ export const Route = createFileRoute(
{
type: BreadcrumbTypes.Dropdown,
label:
context.project.environments.find(
(el) => el.slug === params.environment,
)?.name || '',
dropdownTitle: 'Environments',
context.project.environments.find((el) => el.slug === params.environment)?.name || "",
dropdownTitle: "Environments",
links: context.project.environments.map((el) => ({
label: el.name,
link: linkOptions({
to: '/secret-manager/$projectId/secrets/$envSlug',
to: "/projects/$projectId/secret-manager/secrets/$envSlug",
params: {
projectId: params.projectId,
envSlug: el.slug,
},
}),
})),
envSlug: el.slug
}
})
}))
},
...secretPathSegments.map((_, index) => ({
type: BreadcrumbTypes.Component,
@@ -57,41 +51,41 @@ export const Route = createFileRoute(
projectId={params.projectId}
disableCopy
/>
),
)
})),
{
label: 'Commits',
label: "Commits",
link: linkOptions({
to: '/secret-manager/$projectId/commits/$environment/$folderId',
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId",
params: {
projectId: params.projectId,
environment: params.environment,
folderId: params.folderId,
folderId: params.folderId
},
search: {
secretPath: search.secretPath,
},
}),
secretPath: search.secretPath
}
})
},
{
label: params.commitId,
link: linkOptions({
to: '/secret-manager/$projectId/commits/$environment/$folderId/$commitId',
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId/$commitId",
params: {
projectId: params.projectId,
environment: params.environment,
folderId: params.folderId,
commitId: params.commitId,
commitId: params.commitId
},
search: {
secretPath: search.secretPath,
},
}),
secretPath: search.secretPath
}
})
},
{
label: 'Restore',
},
],
}
},
})
label: "Restore"
}
]
};
}
});

View File

@@ -1,30 +1,26 @@
import {
createFileRoute,
linkOptions,
stripSearchParams,
} from '@tanstack/react-router'
import { zodValidator } from '@tanstack/zod-adapter'
import { z } from 'zod'
import { createFileRoute, linkOptions, stripSearchParams } from "@tanstack/react-router";
import { zodValidator } from "@tanstack/zod-adapter";
import { z } from "zod";
import { SecretDashboardPathBreadcrumb } from '@app/components/navigation/SecretDashboardPathBreadcrumb'
import { BreadcrumbTypes } from '@app/components/v2'
import { SecretDashboardPathBreadcrumb } from "@app/components/navigation/SecretDashboardPathBreadcrumb";
import { BreadcrumbTypes } from "@app/components/v2";
import { CommitDetailsPage } from './CommitDetailsPage'
import { CommitDetailsPage } from "./CommitDetailsPage";
const CommitDetailsPageQueryParamsSchema = z.object({
secretPath: z.string().catch('/'),
})
secretPath: z.string().catch("/")
});
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/commits/$environment/$folderId/$commitId/',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/commits/$environment/$folderId/$commitId/"
)({
component: CommitDetailsPage,
validateSearch: zodValidator(CommitDetailsPageQueryParamsSchema),
search: {
middlewares: [stripSearchParams({ secretPath: '/' })],
middlewares: [stripSearchParams({ secretPath: "/" })]
},
beforeLoad: ({ context, params, search }) => {
const secretPathSegments = search.secretPath.split('/').filter(Boolean)
const secretPathSegments = search.secretPath.split("/").filter(Boolean);
return {
breadcrumbs: [
@@ -32,20 +28,18 @@ export const Route = createFileRoute(
{
type: BreadcrumbTypes.Dropdown,
label:
context.project.environments.find(
(el) => el.slug === params.environment,
)?.name || '',
dropdownTitle: 'Environments',
context.project.environments.find((el) => el.slug === params.environment)?.name || "",
dropdownTitle: "Environments",
links: context.project.environments.map((el) => ({
label: el.name,
link: linkOptions({
to: '/secret-manager/$projectId/secrets/$envSlug',
to: "/projects/$projectId/secret-manager/secrets/$envSlug",
params: {
projectId: params.projectId,
envSlug: el.slug,
},
}),
})),
envSlug: el.slug
}
})
}))
},
...secretPathSegments.map((_, index) => ({
type: BreadcrumbTypes.Component,
@@ -57,26 +51,26 @@ export const Route = createFileRoute(
projectId={params.projectId}
disableCopy
/>
),
)
})),
{
label: 'Commits',
label: "Commits",
link: linkOptions({
to: '/secret-manager/$projectId/commits/$environment/$folderId',
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId",
params: {
projectId: params.projectId,
environment: params.environment,
folderId: params.folderId,
folderId: params.folderId
},
search: {
secretPath: search.secretPath,
},
}),
secretPath: search.secretPath
}
})
},
{
label: params.commitId,
},
],
}
},
})
label: params.commitId
}
]
};
}
});

View File

@@ -9,7 +9,6 @@ import {
ProjectPermissionCommitsActions,
ProjectPermissionSub
} from "@app/context/ProjectPermissionContext/types";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { CommitHistoryTab } from "./components/CommitHistoryTab";
@@ -32,7 +31,7 @@ export const CommitsPage = () => {
const handleSelectCommit = (commitId: string) => {
navigate({
to: `/${ProjectType.SecretManager}/$projectId/commits/$environment/$folderId/$commitId` as const,
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId/$commitId",
params: {
projectId: currentWorkspace.id,
folderId,

View File

@@ -1,31 +1,27 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import {
createFileRoute,
linkOptions,
stripSearchParams,
} from '@tanstack/react-router'
import { zodValidator } from '@tanstack/zod-adapter'
import { z } from 'zod'
import { createFileRoute, linkOptions, stripSearchParams } from "@tanstack/react-router";
import { zodValidator } from "@tanstack/zod-adapter";
import { z } from "zod";
import { SecretDashboardPathBreadcrumb } from '@app/components/navigation/SecretDashboardPathBreadcrumb'
import { BreadcrumbTypes } from '@app/components/v2'
import { SecretDashboardPathBreadcrumb } from "@app/components/navigation/SecretDashboardPathBreadcrumb";
import { BreadcrumbTypes } from "@app/components/v2";
import { CommitsPage } from './CommitsPage'
import { CommitsPage } from "./CommitsPage";
const CommitsPageQueryParamsSchema = z.object({
secretPath: z.string().catch('/'),
})
secretPath: z.string().catch("/")
});
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/commits/$environment/$folderId/',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/commits/$environment/$folderId/"
)({
component: CommitsPage,
validateSearch: zodValidator(CommitsPageQueryParamsSchema),
search: {
middlewares: [stripSearchParams({ secretPath: '/' })],
middlewares: [stripSearchParams({ secretPath: "/" })]
},
beforeLoad: ({ context, params, search }) => {
const secretPathSegments = search.secretPath.split('/').filter(Boolean)
const secretPathSegments = search.secretPath.split("/").filter(Boolean);
return {
breadcrumbs: [
@@ -33,20 +29,18 @@ export const Route = createFileRoute(
{
type: BreadcrumbTypes.Dropdown,
label:
context.project.environments.find(
(el) => el.slug === params.environment,
)?.name || '',
dropdownTitle: 'Environments',
context.project.environments.find((el) => el.slug === params.environment)?.name || "",
dropdownTitle: "Environments",
links: context.project.environments.map((el) => ({
label: el.name,
link: linkOptions({
to: '/secret-manager/$projectId/secrets/$envSlug',
to: "/projects/$projectId/secret-manager/secrets/$envSlug",
params: {
projectId: params.projectId,
envSlug: el.slug,
},
}),
})),
envSlug: el.slug
}
})
}))
},
...secretPathSegments.map((_, index) => ({
type: BreadcrumbTypes.Component,
@@ -58,20 +52,20 @@ export const Route = createFileRoute(
projectId={params.projectId}
disableCopy
/>
),
)
})),
{
label: 'Commits',
label: "Commits",
link: linkOptions({
to: '/secret-manager/$projectId/commits/$environment/$folderId',
to: "/projects/$projectId/secret-manager/commits/$environment/$folderId",
params: {
projectId: params.projectId,
environment: params.environment,
folderId: params.folderId,
},
}),
},
],
}
},
})
folderId: params.folderId
}
})
}
]
};
}
});

View File

@@ -1,9 +1,9 @@
import { createFileRoute } from '@tanstack/react-router'
import { createFileRoute } from "@tanstack/react-router";
import { IPAllowListPage } from './IPAllowlistPage'
import { IPAllowListPage } from "./IPAllowlistPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/allowlist',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/allowlist"
)({
component: () => IPAllowListPage,
})
component: () => IPAllowListPage
});

View File

@@ -1,11 +1,11 @@
import { createFileRoute, linkOptions } from '@tanstack/react-router'
import { createFileRoute, linkOptions } from "@tanstack/react-router";
import { IntegrationsListPageTabs } from '@app/types/integrations'
import { IntegrationsListPageTabs } from "@app/types/integrations";
import { IntegrationDetailsByIDPage } from './IntegrationsDetailsByIDPage'
import { IntegrationDetailsByIDPage } from "./IntegrationsDetailsByIDPage";
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/integrations/$integrationId',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/integrations/$integrationId"
)({
component: IntegrationDetailsByIDPage,
beforeLoad: ({ context, params }) => {
@@ -13,19 +13,19 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Integrations',
label: "Integrations",
link: linkOptions({
to: '/secret-manager/$projectId/integrations',
to: "/projects/$projectId/secret-manager/integrations",
params,
search: {
selectedTab: IntegrationsListPageTabs.NativeIntegrations,
},
}),
selectedTab: IntegrationsListPageTabs.NativeIntegrations
}
})
},
{
label: 'Details',
},
],
}
},
})
label: "Details"
}
]
};
}
});

View File

@@ -69,7 +69,7 @@ export const redirectForProviderAuth = (
switch (integrationOption.slug) {
case "gcp-secret-manager":
navigate({
to: "/secret-manager/$projectId/integrations/gcp-secret-manager/authorize",
to: "/projects/$projectId/secret-manager/integrations/gcp-secret-manager/authorize",
params: {
projectId
}
@@ -81,7 +81,7 @@ export const redirectForProviderAuth = (
return;
}
navigate({
to: "/secret-manager/$projectId/integrations/azure-key-vault/authorize",
to: "/projects/$projectId/secret-manager/integrations/azure-key-vault/authorize",
params: {
projectId
},
@@ -103,7 +103,7 @@ export const redirectForProviderAuth = (
}
case "aws-parameter-store":
navigate({
to: "/secret-manager/$projectId/integrations/aws-parameter-store/authorize",
to: "/projects/$projectId/secret-manager/integrations/aws-parameter-store/authorize",
params: {
projectId
}
@@ -111,7 +111,7 @@ export const redirectForProviderAuth = (
break;
case "aws-secret-manager":
navigate({
to: "/secret-manager/$projectId/integrations/aws-secret-manager/authorize",
to: "/projects/$projectId/secret-manager/integrations/aws-secret-manager/authorize",
params: {
projectId
}
@@ -147,7 +147,7 @@ export const redirectForProviderAuth = (
}
case "github":
navigate({
to: "/secret-manager/$projectId/integrations/github/auth-mode-selection",
to: "/projects/$projectId/secret-manager/integrations/github/auth-mode-selection",
params: {
projectId
}
@@ -155,7 +155,7 @@ export const redirectForProviderAuth = (
break;
case "gitlab":
navigate({
to: "/secret-manager/$projectId/integrations/gitlab/authorize",
to: "/projects/$projectId/secret-manager/integrations/gitlab/authorize",
params: {
projectId
}
@@ -163,7 +163,7 @@ export const redirectForProviderAuth = (
break;
case "render":
navigate({
to: "/secret-manager/$projectId/integrations/render/authorize",
to: "/projects/$projectId/secret-manager/integrations/render/authorize",
params: {
projectId
}
@@ -171,7 +171,7 @@ export const redirectForProviderAuth = (
break;
case "flyio":
navigate({
to: "/secret-manager/$projectId/integrations/flyio/authorize",
to: "/projects/$projectId/secret-manager/integrations/flyio/authorize",
params: {
projectId
}
@@ -179,7 +179,7 @@ export const redirectForProviderAuth = (
break;
case "circleci":
navigate({
to: "/secret-manager/$projectId/integrations/circleci/authorize",
to: "/projects/$projectId/secret-manager/integrations/circleci/authorize",
params: {
projectId
}
@@ -187,7 +187,7 @@ export const redirectForProviderAuth = (
break;
case "databricks":
navigate({
to: "/secret-manager/$projectId/integrations/databricks/authorize",
to: "/projects/$projectId/secret-manager/integrations/databricks/authorize",
params: {
projectId
}
@@ -195,7 +195,7 @@ export const redirectForProviderAuth = (
break;
case "laravel-forge":
navigate({
to: "/secret-manager/$projectId/integrations/laravel-forge/authorize",
to: "/projects/$projectId/secret-manager/integrations/laravel-forge/authorize",
params: {
projectId
}
@@ -203,7 +203,7 @@ export const redirectForProviderAuth = (
break;
case "travisci":
navigate({
to: "/secret-manager/$projectId/integrations/travisci/authorize",
to: "/projects/$projectId/secret-manager/integrations/travisci/authorize",
params: {
projectId
}
@@ -211,7 +211,7 @@ export const redirectForProviderAuth = (
break;
case "supabase":
navigate({
to: "/secret-manager/$projectId/integrations/supabase/authorize",
to: "/projects/$projectId/secret-manager/integrations/supabase/authorize",
params: {
projectId
}
@@ -219,7 +219,7 @@ export const redirectForProviderAuth = (
break;
case "checkly":
navigate({
to: "/secret-manager/$projectId/integrations/checkly/authorize",
to: "/projects/$projectId/secret-manager/integrations/checkly/authorize",
params: {
projectId
}
@@ -227,7 +227,7 @@ export const redirectForProviderAuth = (
break;
case "qovery":
navigate({
to: "/secret-manager/$projectId/integrations/qovery/authorize",
to: "/projects/$projectId/secret-manager/integrations/qovery/authorize",
params: {
projectId
}
@@ -235,7 +235,7 @@ export const redirectForProviderAuth = (
break;
case "railway":
navigate({
to: "/secret-manager/$projectId/integrations/railway/authorize",
to: "/projects/$projectId/secret-manager/integrations/railway/authorize",
params: {
projectId
}
@@ -243,7 +243,7 @@ export const redirectForProviderAuth = (
break;
case "terraform-cloud":
navigate({
to: "/secret-manager/$projectId/integrations/terraform-cloud/authorize",
to: "/projects/$projectId/secret-manager/integrations/terraform-cloud/authorize",
params: {
projectId
}
@@ -251,7 +251,7 @@ export const redirectForProviderAuth = (
break;
case "hashicorp-vault":
navigate({
to: "/secret-manager/$projectId/integrations/hashicorp-vault/authorize",
to: "/projects/$projectId/secret-manager/integrations/hashicorp-vault/authorize",
params: {
projectId
}
@@ -259,7 +259,7 @@ export const redirectForProviderAuth = (
break;
case "cloudflare-pages":
navigate({
to: "/secret-manager/$projectId/integrations/cloudflare-pages/authorize",
to: "/projects/$projectId/secret-manager/integrations/cloudflare-pages/authorize",
params: {
projectId
}
@@ -267,7 +267,7 @@ export const redirectForProviderAuth = (
break;
case "cloudflare-workers":
navigate({
to: "/secret-manager/$projectId/integrations/cloudflare-workers/authorize",
to: "/projects/$projectId/secret-manager/integrations/cloudflare-workers/authorize",
params: {
projectId
}
@@ -284,7 +284,7 @@ export const redirectForProviderAuth = (
}
case "codefresh":
navigate({
to: "/secret-manager/$projectId/integrations/codefresh/authorize",
to: "/projects/$projectId/secret-manager/integrations/codefresh/authorize",
params: {
projectId
}
@@ -292,7 +292,7 @@ export const redirectForProviderAuth = (
break;
case "digital-ocean-app-platform":
navigate({
to: "/secret-manager/$projectId/integrations/digital-ocean-app-platform/authorize",
to: "/projects/$projectId/secret-manager/integrations/digital-ocean-app-platform/authorize",
params: {
projectId
}
@@ -300,7 +300,7 @@ export const redirectForProviderAuth = (
break;
case "cloud-66":
navigate({
to: "/secret-manager/$projectId/integrations/cloud-66/authorize",
to: "/projects/$projectId/secret-manager/integrations/cloud-66/authorize",
params: {
projectId
}
@@ -308,7 +308,7 @@ export const redirectForProviderAuth = (
break;
case "northflank":
navigate({
to: "/secret-manager/$projectId/integrations/northflank/authorize",
to: "/projects/$projectId/secret-manager/integrations/northflank/authorize",
params: {
projectId
}
@@ -316,7 +316,7 @@ export const redirectForProviderAuth = (
break;
case "windmill":
navigate({
to: "/secret-manager/$projectId/integrations/windmill/authorize",
to: "/projects/$projectId/secret-manager/integrations/windmill/authorize",
params: {
projectId
}
@@ -324,7 +324,7 @@ export const redirectForProviderAuth = (
break;
case "teamcity":
navigate({
to: "/secret-manager/$projectId/integrations/teamcity/authorize",
to: "/projects/$projectId/secret-manager/integrations/teamcity/authorize",
params: {
projectId
}
@@ -332,7 +332,7 @@ export const redirectForProviderAuth = (
break;
case "hasura-cloud":
navigate({
to: "/secret-manager/$projectId/integrations/hasura-cloud/authorize",
to: "/projects/$projectId/secret-manager/integrations/hasura-cloud/authorize",
params: {
projectId
}
@@ -340,7 +340,7 @@ export const redirectForProviderAuth = (
break;
case "rundeck":
navigate({
to: "/secret-manager/$projectId/integrations/rundeck/authorize",
to: "/projects/$projectId/secret-manager/integrations/rundeck/authorize",
params: {
projectId
}
@@ -348,7 +348,7 @@ export const redirectForProviderAuth = (
break;
case "azure-devops":
navigate({
to: "/secret-manager/$projectId/integrations/azure-devops/authorize",
to: "/projects/$projectId/secret-manager/integrations/azure-devops/authorize",
params: {
projectId
}
@@ -356,7 +356,7 @@ export const redirectForProviderAuth = (
break;
case "octopus-deploy":
navigate({
to: "/secret-manager/$projectId/integrations/octopus-deploy/authorize",
to: "/projects/$projectId/secret-manager/integrations/octopus-deploy/authorize",
params: {
projectId
}

View File

@@ -59,7 +59,7 @@ export const IntegrationRow = ({
<Tr
onClick={() =>
navigate({
to: "/secret-manager/$projectId/integrations/$integrationId",
to: "/projects/$projectId/secret-manager/integrations/$integrationId",
params: {
integrationId: integration.id,
projectId: currentWorkspace.id

View File

@@ -36,7 +36,7 @@ export const Route = createFileRoute(
});
} catch {
throw redirect({
to: "/secret-manager/$projectId/integrations",
to: "/projects/$projectId/secret-manager/integrations",
params: {
projectId
},
@@ -46,7 +46,7 @@ export const Route = createFileRoute(
if (secretSyncs.length) {
throw redirect({
to: "/secret-manager/$projectId/integrations",
to: "/projects/$projectId/secret-manager/integrations",
params: {
projectId
},
@@ -62,7 +62,7 @@ export const Route = createFileRoute(
});
} catch {
throw redirect({
to: "/secret-manager/$projectId/integrations",
to: "/projects/$projectId/secret-manager/integrations",
params: {
projectId
},
@@ -72,7 +72,7 @@ export const Route = createFileRoute(
if (integrations.length) {
throw redirect({
to: "/secret-manager/$projectId/integrations",
to: "/projects/$projectId/secret-manager/integrations",
params: {
projectId
},
@@ -81,7 +81,7 @@ export const Route = createFileRoute(
}
throw redirect({
to: "/secret-manager/$projectId/integrations",
to: "/projects/$projectId/secret-manager/integrations",
params: {
projectId
},

View File

@@ -88,7 +88,7 @@ import { useUpdateFolderBatch } from "@app/hooks/api/secretFolders/queries";
import { TUpdateFolderBatchDTO } from "@app/hooks/api/secretFolders/types";
import { TSecretRotationV2 } from "@app/hooks/api/secretRotationsV2";
import { SecretType, SecretV3RawSanitized, TSecretFolder } from "@app/hooks/api/types";
import { ProjectType, ProjectVersion } from "@app/hooks/api/workspace/types";
import { ProjectVersion } from "@app/hooks/api/workspace/types";
import {
useDynamicSecretOverview,
useFolderOverview,
@@ -655,7 +655,7 @@ export const OverviewPage = () => {
const envIndex = visibleEnvs.findIndex((el) => slug === el.slug);
if (envIndex !== -1) {
navigate({
to: `/${ProjectType.SecretManager}/$projectId/secrets/$envSlug` as const,
to: "/projects/$projectId/secret-manager/secrets/$envSlug",
params: {
projectId: workspaceId,
envSlug: slug
@@ -1371,7 +1371,7 @@ export const OverviewPage = () => {
iconSize="3x"
>
<Link
to={`/${ProjectType.SecretManager}/$projectId/settings` as const}
to="/projects/$projectId/secret-manager/settings"
params={{
projectId: workspaceId
}}

View File

@@ -9,7 +9,7 @@ type Props = {
export const FolderBreadCrumbs = ({ secretPath = "/", onResetSearch }: Props) => {
const navigate = useNavigate({
from: "/secret-manager/$projectId/overview"
from: "/projects/$projectId/secret-manager/overview"
});
const onFolderCrumbClick = (index: number) => {

View File

@@ -17,7 +17,7 @@ export const QuickSearchDynamicSecretItem = ({
onClose
}: Props) => {
const navigate = useNavigate({
from: "/secret-manager/$projectId/overview"
from: "/projects/$projectId/secret-manager/overview"
});
const [groupDynamicSecret] = dynamicSecretGroup;

View File

@@ -13,7 +13,7 @@ type Props = {
export const QuickSearchFolderItem = ({ folderGroup, onClose }: Props) => {
const navigate = useNavigate({
from: "/secret-manager/$projectId/overview"
from: "/projects/$projectId/secret-manager/overview"
});
const [groupFolder] = folderGroup;

View File

@@ -46,7 +46,7 @@ export const QuickSearchSecretItem = ({
isSingleEnv,
search
}: Props) => {
const navigate = useNavigate({ from: "/secret-manager/$projectId/overview" });
const navigate = useNavigate({ from: "/projects/$projectId/secret-manager/overview" });
const envSlugMap = new Map(environments.map((env) => [env.slug, env]));
const [isUrlCopied, , setIsUrlCopied] = useTimedReset<boolean>({
initialState: false

View File

@@ -13,7 +13,7 @@ type Props = {
export const QuickSearchSecretRotationItem = ({ secretRotationGroup, onClose }: Props) => {
const navigate = useNavigate({
from: "/secret-manager/$projectId/overview"
from: "/projects/$projectId/secret-manager/overview"
});
const [groupSecretRotation] = secretRotationGroup;

View File

@@ -1,15 +1,15 @@
import { createFileRoute } from '@tanstack/react-router'
import { zodValidator } from '@tanstack/zod-adapter'
import { z } from 'zod'
import { createFileRoute } from "@tanstack/react-router";
import { zodValidator } from "@tanstack/zod-adapter";
import { z } from "zod";
import { SecretApprovalsPage } from './SecretApprovalsPage'
import { SecretApprovalsPage } from "./SecretApprovalsPage";
const SecretApprovalPageQueryParams = z.object({
requestId: z.string().catch(''),
})
requestId: z.string().catch("")
});
export const Route = createFileRoute(
'/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/approval',
"/_authenticate/_inject-org-details/_org-layout/projects/$projectId/_project-layout/secret-manager/_secret-manager-layout/approval"
)({
component: SecretApprovalsPage,
validateSearch: zodValidator(SecretApprovalPageQueryParams),
@@ -18,9 +18,9 @@ export const Route = createFileRoute(
breadcrumbs: [
...context.breadcrumbs,
{
label: 'Approvals',
},
],
}
},
})
label: "Approvals"
}
]
};
}
});

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