diff --git a/src/services/ui/src/components/UsaBanner/index.tsx b/src/services/ui/src/components/UsaBanner/index.tsx index da0572429c..98b072bf0b 100644 --- a/src/services/ui/src/components/UsaBanner/index.tsx +++ b/src/services/ui/src/components/UsaBanner/index.tsx @@ -5,6 +5,7 @@ import { GovernmentBuildingIcon } from "../GovernmentBuildingIcon"; import UsFlag from "@/assets/us_flag_small.png"; import { useMediaQuery } from "@/hooks"; import { useUserContext } from "../Context/userContext"; +import { useLoaderData } from "react-router-dom"; export const UsaBanner = () => { const [isOpen, setIsOpen] = useState(false); @@ -21,6 +22,7 @@ export const UsaBanner = () => { return false; } }, []); + const { error } = useLoaderData() as { error: string }; return ( <>
@@ -72,22 +74,8 @@ export const UsaBanner = () => {
)} - {hasRole && ( -
-

- You do not have access to view the entire application.{" "} - - Please visit IDM - {" "} - to request the appropriate user role(s). -

-
- )} + {hasRole && } + {error?.length > 0 && } {isOpen && (
@@ -139,3 +127,22 @@ export const MiniLock = () => { ); }; + +const NoRole = () => { + return ( +
+

+ You do not have access to view the entire application.{" "} + + Please visit IDM + {" "} + to request the appropriate user role(s). +

+
+ ); +}; diff --git a/src/services/ui/src/pages/welcome/index.tsx b/src/services/ui/src/pages/welcome/index.tsx index 426cc38b95..87e4b25a40 100644 --- a/src/services/ui/src/pages/welcome/index.tsx +++ b/src/services/ui/src/pages/welcome/index.tsx @@ -3,12 +3,22 @@ import OneMacLogo from "@/assets/onemac_logo.svg"; import * as Heroicons from "@heroicons/react/24/outline"; import { QueryClient } from "@tanstack/react-query"; import { getUser } from "@/api/useGetUser"; -import { Link } from "react-router-dom"; +import { Link, redirect, useLoaderData } from "react-router-dom"; import { Button } from "@/components/Inputs"; import { ROUTES, FAQ_TARGET } from "@/routes"; export const loader = (queryClient: QueryClient) => { return async () => { + const queryString = window.location.search; + // Parse the query string to get URL parameters + const queryParams = new URLSearchParams(queryString); + // Access specific parameters + const errorDescription = queryParams.get("error_description"); + const error = queryParams.get("error"); + if (errorDescription || error) { + console.error("Authentication Error:", { errorDescription, error }); + return { error }; + } if (!queryClient.getQueryData(["user"])) { return await queryClient.fetchQuery({ queryKey: ["user"],