diff --git a/skyvern-frontend/src/api/AxiosClient.ts b/skyvern-frontend/src/api/AxiosClient.ts index 2df242722..ae54a783b 100644 --- a/skyvern-frontend/src/api/AxiosClient.ts +++ b/skyvern-frontend/src/api/AxiosClient.ts @@ -1,11 +1,11 @@ -import { apiBaseUrl, artifactApiBaseUrl, credential } from "@/util/env"; +import { apiBaseUrl, artifactApiBaseUrl, envCredential } from "@/util/env"; import axios from "axios"; const client = axios.create({ baseURL: apiBaseUrl, headers: { "Content-Type": "application/json", - "x-api-key": credential, + "x-api-key": envCredential, }, }); @@ -13,4 +13,20 @@ const artifactApiClient = axios.create({ baseURL: artifactApiBaseUrl, }); +export function setAuthorizationHeader(token: string) { + client.defaults.headers.common["Authorization"] = `Bearer ${token}`; +} + +export function removeAuthorizationHeader() { + delete client.defaults.headers.common["Authorization"]; +} + +export function setApiKeyHeader(apiKey: string) { + client.defaults.headers.common["X-API-Key"] = apiKey; +} + +export function removeApiKeyHeader() { + delete client.defaults.headers.common["X-API-Key"]; +} + export { client, artifactApiClient }; diff --git a/skyvern-frontend/src/api/types.ts b/skyvern-frontend/src/api/types.ts index 8f82fef37..fa96f1a96 100644 --- a/skyvern-frontend/src/api/types.ts +++ b/skyvern-frontend/src/api/types.ts @@ -75,3 +75,7 @@ export type TaskApiResponse = { failure_reason: string | null; errors: unknown[]; }; + +export type User = { + name: string; +}; diff --git a/skyvern-frontend/src/routes/root/Profile.tsx b/skyvern-frontend/src/routes/root/Profile.tsx new file mode 100644 index 000000000..a4e38d9ad --- /dev/null +++ b/skyvern-frontend/src/routes/root/Profile.tsx @@ -0,0 +1,31 @@ +import { Button } from "@/components/ui/button"; +import { ExitIcon, PersonIcon } from "@radix-ui/react-icons"; + +type Props = { + name: string; + onLogout?: () => void; +}; + +function Profile({ name, onLogout }: Props) { + return ( +
+
+ +

{name}

+
+
+ +
+
+ ); +} + +export { Profile }; diff --git a/skyvern-frontend/src/routes/root/RootLayout.tsx b/skyvern-frontend/src/routes/root/RootLayout.tsx index 68409967e..24fa3c210 100644 --- a/skyvern-frontend/src/routes/root/RootLayout.tsx +++ b/skyvern-frontend/src/routes/root/RootLayout.tsx @@ -4,8 +4,17 @@ import { SideNav } from "./SideNav"; import { DiscordLogoIcon, GitHubLogoIcon } from "@radix-ui/react-icons"; import { Logo } from "@/components/Logo"; import { ThemeToggle } from "@/components/ThemeSwitch"; +import { Profile } from "./Profile"; +import { useContext } from "react"; +import { UserContext } from "@/store/UserContext"; + +type Props = { + onLogout?: () => void; +}; + +function RootLayout({ onLogout }: Props) { + const user = useContext(UserContext); -function RootLayout() { return ( <>
@@ -20,6 +29,11 @@ function RootLayout() {
+ {user ? ( +
+ +
+ ) : null}
(null); + +export { UserContext }; diff --git a/skyvern-frontend/src/util/env.ts b/skyvern-frontend/src/util/env.ts index d91660b49..1eb9213b0 100644 --- a/skyvern-frontend/src/util/env.ts +++ b/skyvern-frontend/src/util/env.ts @@ -10,16 +10,13 @@ if (!environment) { console.error("environment environment variable was not set"); } -const credential = import.meta.env.VITE_API_CREDENTIAL as string; +const envCredential: string | null = + import.meta.env.VITE_API_CREDENTIAL ?? null; -if (!credential) { - console.error("credential environment variable was not set"); -} - -const artifactApiBaseUrl = import.meta.env.VITE_ARTIFACT_API_BASE_URL as string; +const artifactApiBaseUrl = import.meta.env.VITE_ARTIFACT_API_BASE_URL; if (!artifactApiBaseUrl) { console.error("artifactApiBaseUrl environment variable was not set"); } -export { apiBaseUrl, environment, credential, artifactApiBaseUrl }; +export { apiBaseUrl, environment, envCredential, artifactApiBaseUrl };