@@ -10,7 +10,10 @@ import Search360 from './pages/DataView360/Search/Search';
1010import View360 from './pages/DataView360/View/View' ;
1111import About from './pages/About' ;
1212import Login from './components/Login/Login' ;
13+ import RefreshDlg from './components/RefreshDlg' ;
1314import Check from './pages/Check/Check' ;
15+ import Refresh from './components/Refresh' ;
16+
1417import useToken from './components/Login/useToken' ;
1518var jwt = require ( 'jsonwebtoken' ) ;
1619
@@ -68,26 +71,32 @@ function useAuthState() {
6871
6972
7073function AuthenticatedApp ( ) {
71-
74+
7275 const { access_token, setToken } = useToken ( ) ;
7376
74-
7577 var decoded = jwt . decode ( access_token , { complete : true } ) ;
7678
7779 const userRole = decoded ?. payload . role ;
7880 var expTime = decoded ?. payload . exp - Date . now ( ) / 1000 ;
79-
8081 const jwtExpired = expTime <= 0
8182
83+ const popRefreshAlert = expTime > 0 && expTime < 30 ; // Time in secs to pop up refresh dialog
84+
8285 const hdr = userRole === 'admin' ? < AdminHeader /> : < Header /> // If we're going to display a header, which one?
8386
8487 const history = useHistory ( ) ;
8588
8689 return (
8790 < >
8891 < Router >
92+
93+ { ! jwtExpired && hdr ? hdr : '' /* Above-chosen header, or if logged out, no header */ }
94+
95+ { popRefreshAlert && < RefreshDlg shouldOpen = { true } setToken = { setToken } /> } { /* Pop up the refresh dialog */ }
96+
97+ { jwtExpired && < RefreshDlg shouldOpen = { false } setToken = { setToken } /> } { /* Too late, expired: close the dialog */ }
98+
8999
90- { ! jwtExpired && hdr ? hdr : '' /* Above-chosen header, or if logged out, no header */ }
91100
92101 { /* If not logged in, show login screen */
93102 ( ! access_token | jwtExpired ) ? < Login setToken = { setToken } /> : < Switch >
@@ -113,13 +122,18 @@ function AuthenticatedApp() {
113122 < Search360 />
114123 </ Route >
115124
116- < Route path = "/360view/view" >
117- < View360 />
118- </ Route >
125+ < Route path = "/360view/view" >
126+ < View360 />
127+ </ Route >
128+
129+ < Route path = "/check" >
130+ < Check access_token = { access_token } />
131+ </ Route >
119132
120- < Route path = "/check " >
121- < Check />
133+ < Route path = "/ref " >
134+ < Refresh />
122135 </ Route >
136+
123137 </ Switch >
124138 }
125139
0 commit comments