user.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import { loginByEmail, logout, getInfo } from '@/api/login';
  2. import Cookies from 'js-cookie';
  3. const user = {
  4. state: {
  5. user: '',
  6. status: '',
  7. email: '',
  8. code: '',
  9. uid: undefined,
  10. auth_type: '',
  11. token: Cookies.get('Admin-Token'),
  12. name: '',
  13. avatar: '',
  14. introduction: '',
  15. roles: [],
  16. setting: {
  17. articlePlatform: []
  18. }
  19. },
  20. mutations: {
  21. SET_AUTH_TYPE: (state, type) => {
  22. state.auth_type = type;
  23. },
  24. SET_CODE: (state, code) => {
  25. state.code = code;
  26. },
  27. SET_TOKEN: (state, token) => {
  28. state.token = token;
  29. },
  30. SET_UID: (state, uid) => {
  31. state.uid = uid;
  32. },
  33. SET_EMAIL: (state, email) => {
  34. state.email = email;
  35. },
  36. SET_INTRODUCTION: (state, introduction) => {
  37. state.introduction = introduction;
  38. },
  39. SET_SETTING: (state, setting) => {
  40. state.setting = setting;
  41. },
  42. SET_STATUS: (state, status) => {
  43. state.status = status;
  44. },
  45. SET_NAME: (state, name) => {
  46. state.name = name;
  47. },
  48. SET_AVATAR: (state, avatar) => {
  49. state.avatar = avatar;
  50. },
  51. SET_ROLES: (state, roles) => {
  52. state.roles = roles;
  53. },
  54. LOGIN_SUCCESS: () => {
  55. console.log('login success')
  56. },
  57. LOGOUT_USER: state => {
  58. state.user = '';
  59. }
  60. },
  61. actions: {
  62. // 邮箱登录
  63. LoginByEmail({ commit }, userInfo) {
  64. const email = userInfo.email.trim();
  65. return new Promise((resolve, reject) => {
  66. loginByEmail(email, userInfo.password).then(response => {
  67. const data = response.data;
  68. Cookies.set('Admin-Token', response.data.token);
  69. commit('SET_TOKEN', data.token);
  70. commit('SET_EMAIL', email);
  71. resolve();
  72. }).catch(error => {
  73. reject(error);
  74. });
  75. });
  76. },
  77. // 获取用户信息
  78. GetInfo({ commit, state }) {
  79. return new Promise((resolve, reject) => {
  80. getInfo(state.token).then(response => {
  81. const data = response.data;
  82. commit('SET_ROLES', data.role);
  83. commit('SET_NAME', data.name);
  84. commit('SET_AVATAR', data.avatar);
  85. commit('SET_UID', data.uid);
  86. commit('SET_INTRODUCTION', data.introduction);
  87. resolve(response);
  88. }).catch(error => {
  89. reject(error);
  90. });
  91. });
  92. },
  93. // 第三方验证登录
  94. LoginByThirdparty({ commit, state }, code) {
  95. return new Promise((resolve, reject) => {
  96. commit('SET_CODE', code);
  97. loginByThirdparty(state.status, state.email, state.code, state.auth_type).then(response => {
  98. commit('SET_TOKEN', response.data.token);
  99. Cookies.set('Admin-Token', response.data.token);
  100. resolve();
  101. }).catch(error => {
  102. reject(error);
  103. });
  104. });
  105. },
  106. // 登出
  107. LogOut({ commit, state }) {
  108. return new Promise((resolve, reject) => {
  109. logout(state.token).then(() => {
  110. commit('SET_TOKEN', '');
  111. commit('SET_ROLES', []);
  112. Cookies.remove('Admin-Token');
  113. resolve();
  114. }).catch(error => {
  115. reject(error);
  116. });
  117. });
  118. },
  119. // 前端 登出
  120. FedLogOut({ commit }) {
  121. return new Promise(resolve => {
  122. commit('SET_TOKEN', '');
  123. Cookies.remove('Admin-Token');
  124. resolve();
  125. });
  126. },
  127. // 动态修改权限
  128. ChangeRole({ commit }, role) {
  129. return new Promise(resolve => {
  130. commit('SET_ROLES', [role]);
  131. commit('SET_TOKEN', role);
  132. Cookies.set('Admin-Token', role);
  133. resolve();
  134. })
  135. }
  136. }
  137. };
  138. export default user;