Skip to content

Commit

Permalink
Implement automatic token refresh
Browse files Browse the repository at this point in the history
  • Loading branch information
Justin Campbell committed Nov 16, 2020
1 parent 5e77e49 commit 80804cf
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions src/components/AuthProvider/AuthProvider.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import React, { useState, createContext, useContext } from "react";
import React, { useState, createContext, useContext, useEffect } from "react";
import { useCookies } from "react-cookie";
import { refresh } from "../../auth/";



Expand All @@ -15,8 +17,29 @@ export const useTokenSetter = () => useContext(TokenSetterContext);


export default function AuthProvider({ children }) {
const [loggedIn, setLoggedIn] = useState(false);
const [token, setToken] = useState(null);
const [loggedIn, setLoggedIn] = useState( false );
const [token, setToken] = useState( null );

const [cookies] = useCookies();

useEffect( _ => {
async function tryRefresh(csrf_refresh_token){
console.log("CSRF Token", csrf_refresh_token)
if (csrf_refresh_token === undefined){
return false;
}

let new_access_token = await refresh(csrf_refresh_token);
if (!new_access_token){
console.error("Failed to refresh access token.")
return false;
}

setToken(new_access_token);
setLoggedIn(true);
}
tryRefresh(cookies.csrf_refresh_token);
}, []);

return (
<LoginContext.Provider value={loggedIn}>
Expand Down

0 comments on commit 80804cf

Please sign in to comment.