user.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. import { loginByUsername, logout, getUserInfo, getPermissions, getOAuthTokeByCode } from "@/api/login";
  2. import { getToken, setToken, removeToken, setUserName, removeUserName } from "@/utils/auth";
  3. import userInfo from "./mockUser";
  4. const { getSetting, getSettingBool } = window.systemParamsUtils;
  5. const user = {
  6. state: {
  7. user: "",
  8. status: "",
  9. code: "",
  10. token: getToken(),
  11. name: "",
  12. avatar: "",
  13. introduction: "",
  14. roles: [],
  15. permissions: [],
  16. info: {},
  17. setting: {
  18. articlePlatform: []
  19. }
  20. },
  21. mutations: {
  22. SET_INFO: (state, info) => {
  23. state.info = info;
  24. },
  25. SET_CODE: (state, code) => {
  26. state.code = code;
  27. },
  28. SET_TOKEN: (state, token) => {
  29. state.token = token;
  30. },
  31. SET_INTRODUCTION: (state, introduction) => {
  32. state.introduction = introduction;
  33. },
  34. SET_SETTING: (state, setting) => {
  35. state.setting = setting;
  36. },
  37. SET_STATUS: (state, status) => {
  38. state.status = status;
  39. },
  40. SET_NAME: (state, name) => {
  41. state.name = name;
  42. },
  43. SET_AVATAR: (state, avatar) => {
  44. state.avatar = avatar;
  45. },
  46. SET_ROLES: (state, roles) => {
  47. state.roles = roles;
  48. },
  49. SET_PERMISSIONS: (state, permissions) => {
  50. state.permissions = permissions;
  51. }
  52. },
  53. actions: {
  54. // 用户名登录
  55. LoginByUsername({ commit }, userInfo) {
  56. const username = userInfo.username.trim();
  57. return new Promise((resolve, reject) => {
  58. loginByUsername(username, userInfo.password)
  59. .then(({ data }) => {
  60. setUserName(data.name);
  61. resolve();
  62. })
  63. .catch(error => {
  64. reject(error);
  65. });
  66. });
  67. },
  68. // 获取用户信息
  69. GetUserInfo({ commit, state }) {
  70. return new Promise((resolve, reject) => {
  71. let params = {};
  72. if (getSettingBool("IS_OAUTH2")) {
  73. params["access_token"] = getToken();
  74. params["appCode"] = getSetting("APP_CODE");
  75. }
  76. getUserInfo(params)
  77. .then(({ res }) => {
  78. // const data = process.env.NEED_LOGIN ? res : userInfo;
  79. const data = res;
  80. //TODO 用户信息缓存,等用户信息出来后做
  81. if (data.name === undefined) {
  82. reject(data);
  83. } else {
  84. resolve(data);
  85. }
  86. commit("SET_INFO", data);
  87. commit("SET_NAME", data.name);
  88. commit("SET_PERMISSIONS", data.securityRights || []);
  89. commit("SET_AVATAR", data.avatar);
  90. setUserName(data.name);
  91. })
  92. .catch(error => {
  93. reject(error);
  94. });
  95. });
  96. },
  97. //oauth2登录方式获取token
  98. GetOAuthToken({ commit, state }, param) {
  99. return new Promise((resolve, reject) => {
  100. let params = {
  101. grant_type: "authorization_code",
  102. code: param.code,
  103. redirect_uri: location.href.split("?")[0],
  104. client_id: getSetting("CLIENT_ID"),
  105. client_secret: getSetting("CLIENT_SECRET")
  106. };
  107. getOAuthTokeByCode(params)
  108. .then(({ data }) => {
  109. commit("SET_TOKEN", data.access_token);
  110. setToken(data.access_token);
  111. resolve(param.code);
  112. })
  113. .catch(error => {
  114. reject(error);
  115. });
  116. });
  117. },
  118. // 登出
  119. Logout({ commit, state }) {
  120. return new Promise((resolve, reject) => {
  121. logout({ redirectUrl: location.href })
  122. .then(() => {
  123. commit("SET_TOKEN", "");
  124. commit("SET_ROLES", []);
  125. removeToken();
  126. removeUserName();
  127. resolve();
  128. })
  129. .catch(error => {
  130. reject(error);
  131. });
  132. });
  133. },
  134. //oauth2登录方式退出
  135. LogoutOauth({ commit }, logoutUrl) {
  136. return new Promise(resolve => {
  137. commit("SET_TOKEN", "");
  138. commit("SET_NAME", "");
  139. removeToken();
  140. removeUserName();
  141. resolve();
  142. window.location.href = logoutUrl;
  143. });
  144. },
  145. // 前端 登出
  146. FedLogout({ commit }) {
  147. return new Promise(resolve => {
  148. commit("SET_TOKEN", "");
  149. commit("SET_NAME", "");
  150. removeToken();
  151. removeUserName();
  152. resolve();
  153. });
  154. },
  155. // 动态修改权限
  156. ChangeRoles({ commit, dispatch }, role) {
  157. return new Promise(resolve => {
  158. commit("SET_TOKEN", role);
  159. setToken(role);
  160. // commit("SET_Name", role);
  161. // setToken(role);
  162. getUserInfo(role).then(({ data }) => {
  163. commit("SET_ROLES", data.roles);
  164. commit("SET_NAME", data.name);
  165. commit("SET_AVATAR", data.avatar);
  166. commit("SET_INTRODUCTION", data.introduction);
  167. dispatch("GenerateRoutes", data); // 动态修改权限后 重绘侧边菜单
  168. resolve();
  169. });
  170. });
  171. }
  172. },
  173. getters: {
  174. user: state => state.info,
  175. token: state => state.token,
  176. avatar: state => state.avatar,
  177. name: state => state.name,
  178. introduction: state => state.introduction,
  179. status: state => state.status,
  180. roles: state => state.roles,
  181. setting: state => state.setting,
  182. permissions: state => state.permissions
  183. }
  184. };
  185. export default user;