0
Fork 0
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:
Meeeeow 2017-07-10 00:06:45 +08:00 committed by Juan Picado @jotadeveloper
parent 3a3f4ed960
commit 1351f582b0
No known key found for this signature in database
GPG key ID: 18AC54485952D158

View file

@ -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')}