diff --git a/admin-ui/app/routes/Pages/ByeBye.js b/admin-ui/app/routes/Pages/ByeBye.js
index b290dd9db..990db124a 100644
--- a/admin-ui/app/routes/Pages/ByeBye.js
+++ b/admin-ui/app/routes/Pages/ByeBye.js
@@ -1,33 +1,36 @@
-import React, { useEffect } from 'react'
-import { useDispatch, useSelector } from 'react-redux'
-import { uuidv4 } from 'Utils/Util'
-import { EmptyLayout, Label } from 'Components'
-import { logoutUser } from 'Redux/features/logoutSlice'
-import { useTranslation } from 'react-i18next'
+import React, { useEffect } from "react";
+import { useDispatch, useSelector } from "react-redux";
+import { uuidv4 } from "Utils/Util";
+import { EmptyLayout, Label } from "Components";
+import { logoutUser } from "Redux/features/logoutSlice";
+import { useTranslation } from "react-i18next";
+import { setAuthState } from "../../redux/features/authSlice";
function ByeBye() {
- const config = useSelector((state) => state.authReducer.config)
- const dispatch = useDispatch()
- const { t } = useTranslation()
+ const config = useSelector((state) => state.authReducer.config);
+
+ const dispatch = useDispatch();
+ const { t } = useTranslation();
+
useEffect(() => {
- if (config) {
- const state = uuidv4()
- const sessionEndpoint = `${config.endSessionEndpoint}?state=${state}&post_logout_redirect_uri=${config.postLogoutRedirectUri}`
- window.location.href = sessionEndpoint
+ dispatch(setAuthState(false));
+ if (config && Object.keys(config).length > 0) {
+ const state = uuidv4();
+ const sessionEndpoint = `${config.endSessionEndpoint}?state=${state}&post_logout_redirect_uri=${config.postLogoutRedirectUri}`;
+ dispatch(logoutUser());
+ window.location.href = sessionEndpoint;
}
-
- dispatch(logoutUser())
- }, [])
+ }, []);
return (
-
- )
+ );
}
-export default ByeBye
+export default ByeBye;
diff --git a/admin-ui/app/routes/Pages/ProtectRoutes.js b/admin-ui/app/routes/Pages/ProtectRoutes.js
new file mode 100644
index 000000000..658072e77
--- /dev/null
+++ b/admin-ui/app/routes/Pages/ProtectRoutes.js
@@ -0,0 +1,24 @@
+import React from "react";
+import PropTypes from "prop-types";
+import { Navigate } from "react-router-dom";
+import { useSelector } from "react-redux";
+
+const ProtectedRoute = ({ children }) => {
+ const isAuthenticated = useSelector(
+ (state) => state.authReducer.isAuthenticated
+ );
+
+ if (!isAuthenticated) {
+ // Redirect to login if the user is not authenticated
+ return ;
+ }
+
+ // Render the protected content
+ return children;
+};
+
+ProtectedRoute.propTypes = {
+ children: PropTypes.node.isRequired, // Enforce that children must be a React node
+};
+
+export default ProtectedRoute;
diff --git a/admin-ui/app/routes/index.js b/admin-ui/app/routes/index.js
index 6c1aef6a3..9001d7733 100755
--- a/admin-ui/app/routes/index.js
+++ b/admin-ui/app/routes/index.js
@@ -1,56 +1,82 @@
-import React, { useState, useEffect, lazy, Suspense } from 'react'
-import { Route, Routes, Navigate } from 'react-router-dom'
-import { useSelector } from 'react-redux'
+import React, { useState, useEffect, lazy, Suspense } from "react";
+import { Route, Routes, Navigate } from "react-router-dom";
+import { useSelector } from "react-redux";
-import NavbarOnly from './Layouts/NavbarOnly'
-import SidebarDefault from './Layouts/SidebarDefault'
-import SidebarA from './Layouts/SidebarA'
-import SidebarWithNavbar from './Layouts/SidebarWithNavbar'
+import NavbarOnly from "./Layouts/NavbarOnly";
+import SidebarDefault from "./Layouts/SidebarDefault";
+import SidebarA from "./Layouts/SidebarA";
+import SidebarWithNavbar from "./Layouts/SidebarWithNavbar";
// ----------- Layout Imports ---------------
-import { processRoutes } from 'Plugins/PluginMenuResolver'
-import { hasPermission } from 'Utils/PermChecker'
-import GluuSuspenseLoader from 'Routes/Apps/Gluu/GluuSuspenseLoader'
+import { processRoutes } from "Plugins/PluginMenuResolver";
+import { hasPermission } from "Utils/PermChecker";
+import GluuSuspenseLoader from "Routes/Apps/Gluu/GluuSuspenseLoader";
-import { uuidv4 } from 'Utils/Util'
+import { uuidv4 } from "Utils/Util";
+import ProtectedRoute from "./Pages/ProtectRoutes";
-const DashboardPage = lazy(() => import('./Dashboards/DashboardPage'))
-const HealthPage = lazy(() => import('./Health/HealthPage'))
-const LicenseDetailsPage = lazy(() => import('./License/LicenseDetailsPage'))
-const ProfilePage = lazy(() => import('./Apps/Profile/ProfilePage'))
-const Gluu404Error = lazy(() => import('./Apps/Gluu/Gluu404Error'))
-const ByeBye = lazy(() => import('./Pages/ByeBye'))
-const GluuNavBar = lazy(() => import('./Apps/Gluu/GluuNavBar'))
-const DefaultSidebar = lazy(() => import('./../layout/components/DefaultSidebar'))
+const DashboardPage = lazy(() => import("./Dashboards/DashboardPage"));
+const HealthPage = lazy(() => import("./Health/HealthPage"));
+const LicenseDetailsPage = lazy(() => import("./License/LicenseDetailsPage"));
+const ProfilePage = lazy(() => import("./Apps/Profile/ProfilePage"));
+const Gluu404Error = lazy(() => import("./Apps/Gluu/Gluu404Error"));
+const ByeBye = lazy(() => import("./Pages/ByeBye"));
+const GluuNavBar = lazy(() => import("./Apps/Gluu/GluuNavBar"));
+const DefaultSidebar = lazy(() =>
+ import("./../layout/components/DefaultSidebar")
+);
//------ Route Definitions --------
// eslint-disable-next-line no-unused-vars
export const RoutedContent = () => {
const scopes = useSelector((state) =>
- state.token ? state.token.scopes : state.authReducer.permissions,
- )
- const [pluginMenus, setPluginMenus] = useState([])
+ state.token ? state.token.scopes : state.authReducer.permissions
+ );
+ const [pluginMenus, setPluginMenus] = useState([]);
useEffect(() => {
- setPluginMenus(processRoutes())
- }, [])
+ setPluginMenus(processRoutes());
+ }, []);
const { userinfo } = useSelector((state) => state.authReducer);
- const config = useSelector((state) => state.authReducer.config)
+ const config = useSelector((state) => state.authReducer.config);
useEffect(() => {
if (!userinfo.jansAdminUIRole || userinfo.jansAdminUIRole.length === 0) {
- const state = uuidv4()
- const sessionEndpoint = `${config.endSessionEndpoint}?state=${state}&post_logout_redirect_uri=${config.postLogoutRedirectUri}`
- window.location.href = sessionEndpoint
+ const state = uuidv4();
+ const sessionEndpoint = `${config.endSessionEndpoint}?state=${state}&post_logout_redirect_uri=${config.postLogoutRedirectUri}`;
+ window.location.href = sessionEndpoint;
}
}, [userinfo]);
return (
- }>} />
+
+ }>
+
+
+
+ }
+ />
} />
- }>} />
- }>} />
+ }>
+
+
+ }
+ />
+ }>
+
+
+ }
+ />
{/* Layouts */}
} />
} />
@@ -65,18 +91,42 @@ export const RoutedContent = () => {
(item, key) =>
hasPermission(scopes, item.permission) && (
} />
- ),
+ )
)}
{/* Pages Routes */}
- }>} path="/profile" />
- }>} path="/logout" />
- }>} path="/error-404" />
+ }>
+
+
+ }
+ path="/profile"
+ />
+
+
+ }>
+
+
+
+ }
+ />
+ }>
+
+
+ }
+ path="/error-404"
+ />
{/* 404 */}
} />
- )
-}
+ );
+};
//------ Custom Layout Parts --------
export const RoutedNavbars = () => (
@@ -84,14 +134,27 @@ export const RoutedNavbars = () => (
}>
+ }>
+
+
}
/>
-)
+);
export const RoutedSidebars = () => (
- }>} />
+ }>
+
+
+ }
+ />
-)
+);
diff --git a/admin-ui/app/utils/AppAuthProvider.js b/admin-ui/app/utils/AppAuthProvider.js
index d4f94db00..ebd49e2fc 100755
--- a/admin-ui/app/utils/AppAuthProvider.js
+++ b/admin-ui/app/utils/AppAuthProvider.js
@@ -44,6 +44,7 @@ export default function AppAuthProvider(props) {
token,
issuer,
} = useSelector((state) => state.authReducer)
+
const {
islicenseCheckResultLoaded,
isLicenseActivationResultLoaded,
@@ -65,6 +66,7 @@ export default function AppAuthProvider(props) {
dispatch(checkLicensePresent())
}
}, [isConfigValid])
+
const [error, setError] = useState(null)
const [code, setCode] = useState(null)
@@ -115,6 +117,7 @@ export default function AppAuthProvider(props) {
}, [isLicenseValid])
useEffect(() => {
+ console.log("Heloooo")
const tokenHandler = new BaseTokenRequestHandler(new FetchRequestor())
const authorizationHandler = new RedirectRequestHandler(
new LocalStorageBackend(),