diff --git a/pages/api/auth/[...nextauth].ts b/pages/api/auth/[...nextauth].ts index 8f1f781e6d860c63b9cc392e1adab9b9590ec8aa..9a3931a131919127858477f0ab5109cb54c23098 100644 --- a/pages/api/auth/[...nextauth].ts +++ b/pages/api/auth/[...nextauth].ts @@ -28,7 +28,7 @@ async function refreshAccessToken (token: any) { if (!response.ok) { throw refreshedTokens } - console.log('### refreshToken', refreshedTokens, '### ### ###') + console.log('### refreshToken', new Date().toISOString(), refreshedTokens, '### ### ###') return { ...token, diff --git a/src/components/fdos/create.tsx b/src/components/fdos/create.tsx index 83d93b79b0e3f48efa5497385d201443c5b58686..5762661ab98fd9d26f00a7fb60f0654b96f1df21 100644 --- a/src/components/fdos/create.tsx +++ b/src/components/fdos/create.tsx @@ -27,6 +27,7 @@ import { Controller } from 'react-hook-form' import { IRepository, IProfile } from '../../interfaces' import { RepositoriesList } from '../repositories' +import { useAccessToken } from '../../utils' const stepTitles = ['Profile & Repository', 'Metadata', 'Data'] @@ -140,11 +141,9 @@ const StepData: React.FC<any> = ({ register, errors }) => { } export const FdoCreate: React.FC<IResourceComponentsProps> = () => { - const identity = useGetIdentity<any>() - console.log('identity', identity) - const accessToken = identity.data?.data?.accessToken - + const accessToken = useAccessToken() console.log('accessToken: ', accessToken) + const formRet = useStepsForm<any, HttpError, any>({ defaultValues: { repository: '', profile: '' }, refineCoreProps: { meta: { headers: { Authentication: `Bearer ${accessToken}` } } } }) const { saveButtonProps, diff --git a/src/utils.tsx b/src/utils.tsx new file mode 100644 index 0000000000000000000000000000000000000000..4f469344a73e580c1683bd3c0724e44c5f32bd80 --- /dev/null +++ b/src/utils.tsx @@ -0,0 +1,35 @@ +import { useLogout, useGetIdentity, useNotification } from '@refinedev/core' + +const doLogout = (logout: Function, notify: Function) => { + logout() + notify?.({ + type: 'error', + message: 'Logout', + description: 'You have been logged out.' + }) +} + +export const useAccessToken: any = () => { + const identity = useGetIdentity<any>() + const { mutate: logout } = useLogout() + const { open } = useNotification() + + console.log('useAccessToken', identity) + const data = identity?.data?.data + + if (data?.access_token == null) { + return null + } + + if (data?.error) { + doLogout(logout, open) + return null + } + + if (data?.accessTokenExpires) { + doLogout(logout, open) + return null + } + + return data?.accessToken +}