import Vue from 'vue' export default { namespaced: true, state: { role: 'shop', info: {}, menus: [], }, getters: {}, mutations: { UPDATE_USER (state, { role, data }) { const { token, token_ttl: ttl, menu, ...info } = data window.localStorage.setItem('token', token) const timestamp = ttl > 1e+9 ? ttl : new Date().getTime() + ttl * 60 * 1000 window.localStorage.setItem('token_ttl', timestamp) state.role = role state.info = info const defaultMenus = [ { name: 'product', title: '商品管理', }, { name: 'category', title: '分类管理', }, { name: 'attribute', title: '属性管理', }, { name: 'comment', title: '评论管理', }, { name: 'trash', title: '回收站', }, ] state.menus = window.parent !== window ? menu : defaultMenus }, }, actions: { async login ({ commit }, payload) { try { commit('UPDATE_USER', await Vue.http.post('/admin/login', payload)) return Promise.resolve() } catch (e) { return Promise.reject(e) } }, async refresh ({ commit }) { try { commit('UPDATE_USER', await Vue.http.post('/admin/refresh')) } catch { window.localStorage.removeItem('token') window.localStorage.removeItem('token_ttl') } }, }, }