Feat: Deprecate API keys

This commit is contained in:
Daniel Hougaard
2024-03-13 17:46:48 +01:00
parent 8c028889a6
commit ab1b9fb164
3 changed files with 87 additions and 71 deletions
@@ -2,38 +2,36 @@ import { useTranslation } from "react-i18next";
import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { faPlus } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Button } from "@app/components/v2"; import { Button, Tooltip } from "@app/components/v2";
import { usePopUp } from "@app/hooks/usePopUp"; import { usePopUp } from "@app/hooks/usePopUp";
import { AddAPIKeyModal } from "./AddAPIKeyModal"; import { AddAPIKeyModal } from "./AddAPIKeyModal";
import { APIKeyTable } from "./APIKeyTable"; import { APIKeyTable } from "./APIKeyTable";
export const APIKeySection = () => { export const APIKeySection = () => {
const { t } = useTranslation(); const { t } = useTranslation();
const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["addAPIKey"] as const);
"addAPIKey"
] as const);
return ( return (
<div className="mb-6 p-4 bg-mineshaft-900 rounded-lg border border-mineshaft-600"> <div className="mb-6 rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="flex justify-between mb-8"> <div className="mb-8 flex justify-between">
<p className="text-xl font-semibold text-mineshaft-100"> <p className="text-xl font-semibold text-mineshaft-100">
{t("settings.personal.api-keys.title")} {t("settings.personal.api-keys.title")}
</p> </p>
<Button <Tooltip content="API Keys are deprecated and will be removed in the future.">
colorSchema="secondary" <Button
type="submit" isDisabled
leftIcon={<FontAwesomeIcon icon={faPlus} />} colorSchema="secondary"
onClick={() => handlePopUpOpen("addAPIKey")} type="submit"
> leftIcon={<FontAwesomeIcon icon={faPlus} />}
Add API Key onClick={() => handlePopUpOpen("addAPIKey")}
</Button> >
</div> Add API Key
<APIKeyTable /> </Button>
<AddAPIKeyModal </Tooltip>
popUp={popUp} </div>
handlePopUpToggle={handlePopUpToggle} <APIKeyTable />
/> <AddAPIKeyModal popUp={popUp} handlePopUpToggle={handlePopUpToggle} />
</div> </div>
); );
} };
@@ -1,11 +1,5 @@
import { APIKeySection } from "../APIKeySection"; import { APIKeySection } from "../APIKeySection";
// import { APIKeyV2Section } from "../APIKeyV2Section";
export const PersonalAPIKeyTab = () => { export const PersonalAPIKeyTab = () => {
return ( return <APIKeySection />;
<> };
{/* <APIKeyV2Section /> */}
<APIKeySection />
</>
);
}
@@ -1,44 +1,68 @@
import { Fragment } from "react" import { Fragment } from "react";
import { Tab } from "@headlessui/react" import Link from "next/link";
import { faWarning } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Tab } from "@headlessui/react";
import { PersonalAPIKeyTab } from "../PersonalAPIKeyTab"; import { PersonalAPIKeyTab } from "../PersonalAPIKeyTab";
import { PersonalAuthTab } from "../PersonalAuthTab"; import { PersonalAuthTab } from "../PersonalAuthTab";
import { PersonalGeneralTab } from "../PersonalGeneralTab"; import { PersonalGeneralTab } from "../PersonalGeneralTab";
const tabs = [ const tabs = [
{ name: "General", key: "tab-account-general" }, { name: "General", key: "tab-account-general" },
{ name: "Authentication", key: "tab-account-auth" }, { name: "Authentication", key: "tab-account-auth" },
{ name: "API Keys", key: "tab-account-api-keys" } { name: "API Keys", key: "tab-account-api-keys" }
]; ];
export const PersonalTabGroup = () => { export const PersonalTabGroup = () => {
return ( return (
<Tab.Group> <Tab.Group>
<Tab.List className="mb-4 border-b-2 border-mineshaft-800 w-full"> <Tab.List className="mb-4 w-full border-b-2 border-mineshaft-800">
{tabs.map((tab) => ( {tabs.map((tab) => (
<Tab as={Fragment} key={tab.key}> <Tab as={Fragment} key={tab.key}>
{({ selected }) => ( {({ selected }) => (
<button <button
type="button" type="button"
className={`w-30 py-2 mx-2 mr-4 font-medium text-sm outline-none ${selected ? "border-b border-white text-white" : "text-mineshaft-400"}`} className={`w-30 mx-2 mr-4 py-2 text-sm font-medium outline-none ${
> selected ? "border-b border-white text-white" : "text-mineshaft-400"
{tab.name} }`}
</button> >
)} {tab.name}
</Tab> </button>
))} )}
</Tab.List> </Tab>
<Tab.Panels> ))}
<Tab.Panel> </Tab.List>
<PersonalGeneralTab /> <Tab.Panels>
</Tab.Panel> <Tab.Panel>
<Tab.Panel> <PersonalGeneralTab />
<PersonalAuthTab /> </Tab.Panel>
</Tab.Panel> <Tab.Panel>
<Tab.Panel> <PersonalAuthTab />
<PersonalAPIKeyTab /> </Tab.Panel>
</Tab.Panel> <Tab.Panel>
</Tab.Panels> <div className="space-y-3">
</Tab.Group> <div className="mt-4 flex w-full flex-row items-center rounded-md border border-primary-600/70 bg-primary/[.07] p-4 text-base text-white">
); <FontAwesomeIcon icon={faWarning} className="pr-6 text-4xl text-white/80" />
} <div className="flex w-full flex-col text-sm">
<span className="mb-4 text-lg font-semibold">API Keys are deprecated</span>
<p>
API Keys are deprecated and will be removed in the future.
<br /> Please use Machine Identity authentication for your applications and
services.
</p>
<Link href="https://infisical.com/docs/documentation/platform/identities/overview">
<a target="_blank" className="font-semibold text-primary-400">
Learn more about Machine Identities
</a>
</Link>
</div>
</div>
<PersonalAPIKeyTab />
</div>
</Tab.Panel>
</Tab.Panels>
</Tab.Group>
);
};