mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-02-24 23:55:46 -05:00
feature: ✨ check token expire before render login button
This commit is contained in:
parent
3a3f4ed960
commit
1351f582b0
1 changed files with 23 additions and 1 deletions
|
@ -67,13 +67,35 @@ export default class Header extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get isTokenExpire () {
|
||||||
|
let token = storage.getItem('token');
|
||||||
|
if (!_.isString(token)) return true;
|
||||||
|
let payload = token.split('.')[1];
|
||||||
|
if (!payload) return true;
|
||||||
|
try {
|
||||||
|
payload = JSON.parse(atob(payload));
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Invalid token:', err, token); // eslint-disable-line
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!payload.exp || !_.isNumber(payload.exp)) return true;
|
||||||
|
let jsTimestamp = (payload.exp * 1000) - 30000; // Report as expire before (real expire time - 30s)
|
||||||
|
|
||||||
|
let expired = Date.now() >= jsTimestamp;
|
||||||
|
if (expired) {
|
||||||
|
storage.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
return expired;
|
||||||
|
}
|
||||||
|
|
||||||
handleLogout () {
|
handleLogout () {
|
||||||
storage.clear();
|
storage.clear();
|
||||||
location.reload();
|
location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
renderUserActionButton () {
|
renderUserActionButton () {
|
||||||
if (storage.getItem('username')) { // TODO: Check jwt token expire
|
if (!this.isTokenExpire) { // TODO: Check jwt token expire
|
||||||
return (
|
return (
|
||||||
<div className={classes.welcome}>
|
<div className={classes.welcome}>
|
||||||
Hi, {storage.getItem('username')}
|
Hi, {storage.getItem('username')}
|
||||||
|
|
Loading…
Add table
Reference in a new issue