1
0
mirror of https://github.com/sasjs/server.git synced 2025-12-10 19:34:34 +00:00

Compare commits

...

1 Commits

Author SHA1 Message Date
cc6f8a64b5 fix(web-header): show users display name instead of username 2022-04-27 22:43:23 +05:00
4 changed files with 36 additions and 4 deletions

11
web/package-lock.json generated
View File

@@ -22,6 +22,7 @@
"@types/node": "^12.20.28", "@types/node": "^12.20.28",
"@types/react": "^17.0.27", "@types/react": "^17.0.27",
"axios": "^0.24.0", "axios": "^0.24.0",
"jwt-decode": "3.1.2",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-router-dom": "^5.3.0" "react-router-dom": "^5.3.0"
@@ -8161,6 +8162,11 @@
"node": ">=4.0" "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": { "node_modules/kind-of": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -17382,6 +17388,11 @@
"object.assign": "^4.1.2" "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": { "kind-of": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",

View File

@@ -21,6 +21,7 @@
"@types/node": "^12.20.28", "@types/node": "^12.20.28",
"@types/react": "^17.0.27", "@types/react": "^17.0.27",
"axios": "^0.24.0", "axios": "^0.24.0",
"jwt-decode": "3.1.2",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-router-dom": "^5.3.0" "react-router-dom": "^5.3.0"

View File

@@ -114,7 +114,7 @@ const Header = (props: any) => {
}} }}
> >
<UserName <UserName
userName={appContext.userName} userName={appContext.displayName}
onClickHandler={handleMenu} onClickHandler={handleMenu}
/> />
<Menu <Menu

View File

@@ -9,6 +9,7 @@ import React, {
} from 'react' } from 'react'
import axios from 'axios' import axios from 'axios'
import jwt_decode from 'jwt-decode'
const NODE_ENV = process.env.NODE_ENV const NODE_ENV = process.env.NODE_ENV
const PORT_API = process.env.PORT_API const PORT_API = process.env.PORT_API
@@ -73,6 +74,7 @@ const getTokens = () => {
interface AppContextProps { interface AppContextProps {
userName: string userName: string
displayName: string
setUserName: Dispatch<SetStateAction<string>> | null setUserName: Dispatch<SetStateAction<string>> | null
tokens?: { accessToken: string; refreshToken: string } tokens?: { accessToken: string; refreshToken: string }
setTokens: ((accessToken: string, refreshToken: string) => void) | null setTokens: ((accessToken: string, refreshToken: string) => void) | null
@@ -81,6 +83,7 @@ interface AppContextProps {
export const AppContext = createContext<AppContextProps>({ export const AppContext = createContext<AppContextProps>({
userName: '', userName: '',
displayName: '',
tokens: getTokens(), tokens: getTokens(),
setUserName: null, setUserName: null,
setTokens: null, setTokens: null,
@@ -90,6 +93,7 @@ export const AppContext = createContext<AppContextProps>({
const AppContextProvider = (props: { children: ReactNode }) => { const AppContextProvider = (props: { children: ReactNode }) => {
const { children } = props const { children } = props
const [userName, setUserName] = useState('') const [userName, setUserName] = useState('')
const [displayName, setDisplayName] = useState('')
const [tokens, setTokens] = useState(getTokens()) const [tokens, setTokens] = useState(getTokens())
useEffect(() => { useEffect(() => {
@@ -97,11 +101,27 @@ const AppContextProvider = (props: { children: ReactNode }) => {
}, []) }, [])
useEffect(() => { useEffect(() => {
console.log(97)
if (tokens === undefined) { if (tokens === undefined) {
console.log(99)
localStorage.removeItem('accessToken') localStorage.removeItem('accessToken')
localStorage.removeItem('refreshToken') 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]) }, [tokens])
@@ -109,7 +129,6 @@ const AppContextProvider = (props: { children: ReactNode }) => {
(accessToken: string, refreshToken: string) => { (accessToken: string, refreshToken: string) => {
localStorage.setItem('accessToken', accessToken) localStorage.setItem('accessToken', accessToken)
localStorage.setItem('refreshToken', refreshToken) localStorage.setItem('refreshToken', refreshToken)
console.log(accessToken)
setAxiosRequestHeader(accessToken) setAxiosRequestHeader(accessToken)
setTokens({ accessToken, refreshToken }) setTokens({ accessToken, refreshToken })
}, },
@@ -125,6 +144,7 @@ const AppContextProvider = (props: { children: ReactNode }) => {
<AppContext.Provider <AppContext.Provider
value={{ value={{
userName, userName,
displayName,
setUserName, setUserName,
tokens, tokens,
setTokens: saveTokens, setTokens: saveTokens,