src/utils/storage.js
/*!
* Codefolio
* Copyright(c) 2016 MSMFSD
* MIT Licensed
*/
const hours = 48
const storageData = {
token: 'token',
username: 'username',
lastLoggedIn: 'lastLoggedIn',
storageTokenExpires: 'storageTokenExpires'
}
/**
* Ensure support for browser storage
* @return boolean
*/
export function localStorageSupported () {
const cf = 'cf'
try {
localStorage.setItem(cf, cf)
localStorage.removeItem(cf)
return true
} catch (e) {
clearStorage()
return false
}
}
/**
* Set auth to browser storage
* @param {string} token
* @param {string} lastLoggedIn
* @param {string} username
*/
export function setStorage (token, lastLoggedIn, username) {
localStorage.setItem(storageData.token, token)
localStorage.setItem(storageData.lastLoggedIn, lastLoggedIn)
localStorage.setItem(storageData.username, username)
localStorage.setItem(storageData.storageTokenExpires, new Date().getTime())
}
/**
* Get auth from browser storage
* @return {object} storage object or false
*/
export function getStorage () {
let now = new Date().getTime()
let storageToken = localStorage.getItem(storageData.token)
let storageLastLoggedIn = localStorage.getItem(storageData.lastLoggedIn)
let storageUser = localStorage.getItem(storageData.username)
let storageTokenExpires = localStorage.getItem(storageData.storageTokenExpires)
// token exists and not expired?
if(storageToken !== null && ((now - storageTokenExpires) < hours * 60 * 60 * 1000)) {
localStorage.setItem(storageData.storageTokenExpires, now)
return { token: storageToken, lastLoggedIn: storageLastLoggedIn, username: storageUser }
} else {
return false
}
}
/**
* Clear browser storage
*/
export function clearStorage () {
localStorage.removeItem(storageData.token)
localStorage.removeItem(storageData.lastLoggedIn)
localStorage.removeItem(storageData.username)
localStorage.removeItem(storageData.storageTokenExpires)
}