Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import axios from 'axios'
- import jwtDecode from 'jwt-decode'
- export const moduleLoginStore = {
- state: {
- jwt: localStorage.getItem('t'),
- endpoints: {
- obtainJWT: 'http://localhost/api/v1/token/auth/',
- refreshJWT: 'http://localhost/api/v1/token/refresh/'
- }
- },
- mutations: {
- updateToken (state, newToken) {
- localStorage.setItem('token', newToken)
- state.jwt = newToken
- },
- removeToken (state) {
- localStorage.removeItem('token')
- state.jwt = null
- }
- },
- actions: {
- obtainToken ({state, commit}, {username, password}) {
- const payload = {
- username: username,
- password: password
- }
- axios.post(state.endpoints.obtainJWT, payload).then((response) => {
- commit('updateToken', response.data.token)
- }).catch((error) => {
- console.log(error)
- })
- },
- refreshToken ({state, commit}) {
- const payload = {
- token: state.jwt
- }
- axios.post(state.endpoints.refreshJWT, payload)
- .then((response) => {
- commit('updateToken', response.data.token)
- })
- .catch((error) => {
- console.log(error)
- })
- },
- inspectToken ({state, actions}) {
- const token = state.jwt
- if (token) {
- const decoded = jwtDecode(token)
- const exp = decoded.exp
- if (exp - (Date.now() / 1000) < 1800 && (Date.now() / 1000) - decoded.orig_iat < 628200) {
- actions.refreshToken()
- } else if (exp - (Date.now() / 1000) < 1800) {
- } else {
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment