From cc6f8a64b51cdf5bde52b8913f34a7e793e08824 Mon Sep 17 00:00:00 2001 From: Sabir Hassan Date: Wed, 27 Apr 2022 22:43:23 +0500 Subject: [PATCH] fix(web-header): show users display name instead of username --- web/package-lock.json | 11 +++++++++++ web/package.json | 1 + web/src/components/header.tsx | 2 +- web/src/context/appContext.tsx | 26 +++++++++++++++++++++++--- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 7b9516c..e10780b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -22,6 +22,7 @@ "@types/node": "^12.20.28", "@types/react": "^17.0.27", "axios": "^0.24.0", + "jwt-decode": "3.1.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router-dom": "^5.3.0" @@ -8161,6 +8162,11 @@ "node": ">=4.0" } }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -17382,6 +17388,11 @@ "object.assign": "^4.1.2" } }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", diff --git a/web/package.json b/web/package.json index 67ba5f3..f0f7b21 100644 --- a/web/package.json +++ b/web/package.json @@ -21,6 +21,7 @@ "@types/node": "^12.20.28", "@types/react": "^17.0.27", "axios": "^0.24.0", + "jwt-decode": "3.1.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router-dom": "^5.3.0" diff --git a/web/src/components/header.tsx b/web/src/components/header.tsx index f0654cc..a741b99 100644 --- a/web/src/components/header.tsx +++ b/web/src/components/header.tsx @@ -114,7 +114,7 @@ const Header = (props: any) => { }} > { interface AppContextProps { userName: string + displayName: string setUserName: Dispatch> | null tokens?: { accessToken: string; refreshToken: string } setTokens: ((accessToken: string, refreshToken: string) => void) | null @@ -81,6 +83,7 @@ interface AppContextProps { export const AppContext = createContext({ userName: '', + displayName: '', tokens: getTokens(), setUserName: null, setTokens: null, @@ -90,6 +93,7 @@ export const AppContext = createContext({ const AppContextProvider = (props: { children: ReactNode }) => { const { children } = props const [userName, setUserName] = useState('') + const [displayName, setDisplayName] = useState('') const [tokens, setTokens] = useState(getTokens()) useEffect(() => { @@ -97,11 +101,27 @@ const AppContextProvider = (props: { children: ReactNode }) => { }, []) useEffect(() => { - console.log(97) if (tokens === undefined) { - console.log(99) localStorage.removeItem('accessToken') localStorage.removeItem('refreshToken') + setUserName('') + setDisplayName('') + } else { + const decoded: any = jwt_decode(tokens.accessToken) + if (decoded.userId) { + axios + .get(`/SASjsApi/user/${decoded.userId}`) + .then((res: any) => { + if (res.data && res.data?.displayName) { + setDisplayName(res.data.displayName) + } else if (res.data && res.data?.username) { + setDisplayName(res.data.username) + } + }) + .catch((err) => { + console.log(err) + }) + } } }, [tokens]) @@ -109,7 +129,6 @@ const AppContextProvider = (props: { children: ReactNode }) => { (accessToken: string, refreshToken: string) => { localStorage.setItem('accessToken', accessToken) localStorage.setItem('refreshToken', refreshToken) - console.log(accessToken) setAxiosRequestHeader(accessToken) setTokens({ accessToken, refreshToken }) }, @@ -125,6 +144,7 @@ const AppContextProvider = (props: { children: ReactNode }) => {