user.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import Vue from 'vue'
  2. export default {
  3. namespaced: true,
  4. state: {
  5. role: 'shop',
  6. info: {},
  7. menus: [],
  8. },
  9. getters: {},
  10. mutations: {
  11. UPDATE_USER (state, { role, data }) {
  12. const { token, token_ttl: ttl, menu, ...info } = data
  13. window.localStorage.setItem('token', token)
  14. const timestamp = ttl > 1e+9 ? ttl : new Date().getTime() + ttl * 60 * 1000
  15. window.localStorage.setItem('token_ttl', timestamp)
  16. state.role = role
  17. state.info = info
  18. const defaultMenus = [
  19. {
  20. name: 'product',
  21. title: '商品管理',
  22. },
  23. {
  24. name: 'category',
  25. title: '分类管理',
  26. },
  27. {
  28. name: 'attribute',
  29. title: '属性管理',
  30. },
  31. {
  32. name: 'comment',
  33. title: '评论管理',
  34. },
  35. {
  36. name: 'trash',
  37. title: '回收站',
  38. },
  39. ]
  40. state.menus = window.parent !== window ? menu : defaultMenus
  41. },
  42. },
  43. actions: {
  44. async login ({ commit }, payload) {
  45. try {
  46. commit('UPDATE_USER', await Vue.http.post('/admin/login', payload))
  47. return Promise.resolve()
  48. } catch (e) {
  49. return Promise.reject(e)
  50. }
  51. },
  52. async refresh ({ commit }) {
  53. try {
  54. commit('UPDATE_USER', await Vue.http.post('/admin/refresh'))
  55. } catch {
  56. window.localStorage.removeItem('token')
  57. window.localStorage.removeItem('token_ttl')
  58. }
  59. },
  60. },
  61. }