diff --git a/cmd/server/web/src/App.tsx b/cmd/server/web/src/App.tsx index 3944b8f..150decc 100644 --- a/cmd/server/web/src/App.tsx +++ b/cmd/server/web/src/App.tsx @@ -31,11 +31,11 @@ function App() { }/> }/> } /> - }> + }> }/> }/> - }> + }> }/> Logout}/> diff --git a/cmd/server/web/src/components/require-auth.tsx b/cmd/server/web/src/components/require-auth.tsx index 279e1d8..cf43612 100644 --- a/cmd/server/web/src/components/require-auth.tsx +++ b/cmd/server/web/src/components/require-auth.tsx @@ -10,6 +10,9 @@ const RequireAuth = ({ allowedRoles }: RequireAuthProps): ReactElement | null => const { auth } = useAuth(); const location = useLocation(); + console.log("RequireAuth: auth", auth); + console.log("RequireAuth: allowedRoles", allowedRoles); + // If the user is not authenticated, redirect to login if (!auth?.user) { return ; diff --git a/cmd/server/web/src/context/auth-provider.tsx b/cmd/server/web/src/context/auth-provider.tsx index 8a7c6cf..baf625e 100644 --- a/cmd/server/web/src/context/auth-provider.tsx +++ b/cmd/server/web/src/context/auth-provider.tsx @@ -1,8 +1,8 @@ -import { createContext, PropsWithChildren, useState, ReactNode } from "react"; +import {createContext, Dispatch, PropsWithChildren, SetStateAction, useMemo, useState} from "react"; interface AuthContextProps { auth?: Auth; - setAuth?: React.Dispatch>; + setAuth?: Dispatch>; } const AuthContext = createContext({}); @@ -24,11 +24,13 @@ type Auth = { refresh_token_expires_at: string; } -export const AuthProvider = ({ children }: PropsWithChildren<{}>): ReactNode => { +export const AuthProvider = ({ children }: PropsWithChildren<{}>) => { const [auth, setAuth] = useState(); + const value = useMemo(() => ({ auth, setAuth }), [auth, setAuth]); + return ( - + {children} ); diff --git a/cmd/server/web/src/hooks/auth.tsx b/cmd/server/web/src/hooks/auth.tsx deleted file mode 100644 index d9f515b..0000000 --- a/cmd/server/web/src/hooks/auth.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import {useState} from "react"; - - -const Login = () => { - const [isLoading, setIsLoading] = useState(true); - const refresh = useRefreshToken(); - const { auth } = useAuth(); - -} diff --git a/cmd/server/web/src/hooks/use-refresh-token.ts b/cmd/server/web/src/hooks/use-refresh-token.ts index 41ba569..531644d 100644 --- a/cmd/server/web/src/hooks/use-refresh-token.ts +++ b/cmd/server/web/src/hooks/use-refresh-token.ts @@ -4,19 +4,19 @@ import useAuth from "@/hooks/use-auth.ts"; const useRefreshToken = () => { const { setAuth } = useAuth(); - const refresh = async () => { + return async () => { const response = await axios.post('/api/v1/refresh_token', { withCredentials: true }); - setAuth((prev: any) => { - console.log(JSON.stringify(prev)); - console.log(response.data.accessToken); - return { ...prev, accessToken: response.data.accessToken } - }); + if (setAuth) { + setAuth((prev: any) => { + console.log(JSON.stringify(prev)); + console.log(response.data.accessToken); + return {...prev, accessToken: response.data.accessToken} + }); + } return response.data.accessToken; - } - - return refresh; + }; } export default useRefreshToken; diff --git a/cmd/server/web/src/pages/login/components/user-login-form.tsx b/cmd/server/web/src/pages/login/components/user-login-form.tsx index c641402..2054fe0 100644 --- a/cmd/server/web/src/pages/login/components/user-login-form.tsx +++ b/cmd/server/web/src/pages/login/components/user-login-form.tsx @@ -51,7 +51,9 @@ export function UserLoginForm({className, ...props}: UserLoginFormProps) { if (response.ok) { response.json().then((data) => { - setAuth(data) + if (setAuth) { + setAuth(data) + } }); navigate(from, { replace: true }); }