diff --git a/web-frontend/src/App.tsx b/web-frontend/src/App.tsx
index ec97d0bb1..028f707f6 100644
--- a/web-frontend/src/App.tsx
+++ b/web-frontend/src/App.tsx
@@ -4,7 +4,7 @@ import Container from "@mui/material/Container";
import ErrorBoundary from "./components/error-boundary";
import { Outlet } from "react-router-dom";
import TiledAppBar from "./components/tiled-app-bar";
-import UserContext, {userObjectContext, userUpdateFunctionTemplate} from './context/user';
+import UserContext, {userObjectContext} from './context/user';
@@ -12,29 +12,30 @@ import UserContext, {userObjectContext, userUpdateFunctionTemplate} from './cont
function App() {
const [userContext, setUserContext] = React.useState(userObjectContext)
-
- // Create funtion to update the current context, prioritizing new over old changed properties
+ const [user, setUser] = React.useState({user: ""});
+ const value = { user, setUser };
+ // Create function to update the current context, prioritizing new over old changed properties
const updateContext = (contextUpdates = {}) =>
setUserContext(currentContext => ({ ...currentContext, ...contextUpdates }))
// useEffect prevents the entire context for rerendering when component rerenders
React.useEffect(() => {
- if (userContext?.updateUser === userUpdateFunctionTemplate) {
+
updateContext({
- updateStatus: (value: string) => updateContext({ status: value }),
+ updateStatus: (value: string) => updateContext({ user: value }),
})
- }
- }, [userContext?.updateUser])
+
+ }, [])
return (
-
+ {/* */}
-
+ {/* */}
);
}
diff --git a/web-frontend/src/client.ts b/web-frontend/src/client.ts
index a43a31cb9..9714be158 100644
--- a/web-frontend/src/client.ts
+++ b/web-frontend/src/client.ts
@@ -66,25 +66,37 @@ interface Props {
const AxiosInterceptor = ({children}: Props) => {
const navigate = useNavigate();
- const userContext = useContext(UserContext);
+ const {user, setUser} = useContext(UserContext);
useEffect(() => {
- const responseInterceptor = (response: AxiosResponse) => {
+ const responseInterceptor = async (response: AxiosResponse) => {
// if 401, delete local toke
// looku
- const refreshToken = response.data.access_token;
+ const refreshToken = response.data.refresh_token;
if (refreshToken){
localStorage.setItem(REFRESH_TOKEN_KEY, refreshToken)
localStorage.setItem(ACCESS_TOKEN_KEY, response.data.access_token);
+ // follow up request to /api/whoami to get user info
+ const whomiResponse = await axiosInstance.get("/auth/whoami");
+ //what provider was this? this is ugly
+ const provider = response.config.url!.split("/")[2];
+ //now find the identity for this provider
+ // I guess a types file for tiled would be could, we could avoid the any here
+ const identity = whomiResponse.data.identities.find((identity: any) => identity.provider === provider);
+ //update user context
+ setUser(identity.id);
}
- //uddate user
+
+
+
+
return response;
}
- const requestInterceptor = (requestConfig: AxiosRequestConfig) => {
+ const requestInterceptor = (requestConfig: AxiosRequestConfig) => {
// for all requests, lookup refresh token in local storage
// if found, add to the reqeust
const storedAccessToken = localStorage.getItem(ACCESS_TOKEN_KEY);
@@ -92,7 +104,7 @@ const AxiosInterceptor = ({children}: Props) => {
if (!requestConfig.headers){
requestConfig.headers = {};
}
- requestConfig.headers["Authorization"] = "Bearer: " + storedAccessToken;
+ requestConfig.headers["Authorization"] = "Bearer " + storedAccessToken;
}
return requestConfig;
}
diff --git a/web-frontend/src/components/tiled-app-bar.tsx b/web-frontend/src/components/tiled-app-bar.tsx
index 41ca16fc1..b6acdaede 100644
--- a/web-frontend/src/components/tiled-app-bar.tsx
+++ b/web-frontend/src/components/tiled-app-bar.tsx
@@ -8,6 +8,7 @@ import Typography from "@mui/material/Typography";
import UserContext from '../context/user';
const TiledAppBar = () => {
const user = React.useContext(UserContext);
+
return (
@@ -31,7 +32,7 @@ const TiledAppBar = () => {
- {user}
+ {user.user}
diff --git a/web-frontend/src/context/user.tsx b/web-frontend/src/context/user.tsx
index d2cf42cc6..fcc336ad8 100644
--- a/web-frontend/src/context/user.tsx
+++ b/web-frontend/src/context/user.tsx
@@ -1,11 +1,11 @@
import React from 'react';
-// required to compare function by reference when context changes
-export const userUpdateFunctionTemplate = () => {}
+// // required to compare function by reference when context changes
+// export const userUpdateFunctionTemplate = () => {}
export const userObjectContext = {
- name: "Ford Prefect",
- updateUser: userUpdateFunctionTemplate,
+ user: "Ford Prefect",
+ setUser: (user: string) => {console.log( user)}
}
diff --git a/web-frontend/src/routes/login.tsx b/web-frontend/src/routes/login.tsx
index bf0eb3343..3ac6ffbbd 100644
--- a/web-frontend/src/routes/login.tsx
+++ b/web-frontend/src/routes/login.tsx
@@ -1,4 +1,4 @@
-import Box from '@mui/material/Box';
+
import Auth from '../components/auth';
import { useParams } from "react-router-dom";