diff --git a/frontend/src/components/KeycloakProvider.jsx b/frontend/src/components/KeycloakProvider.jsx index 9f587b725..f1de4faeb 100644 --- a/frontend/src/components/KeycloakProvider.jsx +++ b/frontend/src/components/KeycloakProvider.jsx @@ -1,7 +1,7 @@ -import React from 'react' +import React, { useEffect } from 'react' import { ReactKeycloakProvider } from '@react-keycloak/web' import Loading from '@/components/Loading' -import { keycloakInitOptions } from '@/utils/keycloak' +import { keycloakInitOptions, refreshToken } from '@/utils/keycloak' import { apiRoutes } from '@/constants/routes' import axios from 'axios' import { CONFIG } from '@/constants/config' @@ -20,6 +20,14 @@ export const KeycloakProvider = ({ authClient, children }) => { ) } + useEffect(() => { + window.addEventListener('click', refreshToken) + + return () => { + window.removeEventListener('click', refreshToken) + } + }, []) + const handleOnEvent = async (event) => { if (event === 'onAuthSuccess') { const hasBeenTracked = diff --git a/frontend/src/utils/keycloak.js b/frontend/src/utils/keycloak.js index 176aa8903..f4f9d586c 100644 --- a/frontend/src/utils/keycloak.js +++ b/frontend/src/utils/keycloak.js @@ -33,3 +33,17 @@ export const logout = () => { window.location = url } + +export const refreshToken = () => { + keycloak + .updateToken(60) // Minimum validity in seconds + .then((refreshed) => { + if (refreshed) { + console.log('Token refreshed') + } + }) + .catch(() => { + console.error('Failed to refresh token') + logout() + }) +} diff --git a/frontend/src/views/Admin/AdminMenu/components/AuditLog.jsx b/frontend/src/views/Admin/AdminMenu/components/AuditLog.jsx index 6c668e6a5..d98312a06 100644 --- a/frontend/src/views/Admin/AdminMenu/components/AuditLog.jsx +++ b/frontend/src/views/Admin/AdminMenu/components/AuditLog.jsx @@ -20,7 +20,7 @@ export const AuditLog = () => { } const getRowId = useCallback((params) => { - return params.data.auditLogId + return params.data.auditLogId.toString() }, []) const apiEndpoint = apiRoutes.getAuditLogs