mock平台

user.js 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. import axios from 'axios';
  2. // Actions
  3. const LOGIN = 'yapi/user/LOGIN';
  4. const LOGIN_OUT = 'yapi/user/LOGIN_OUT';
  5. const LOGIN_TYPE = 'yapi/user/LOGIN_TYPE';
  6. const GET_LOGIN_STATE = 'yapi/user/GET_LOGIN_STATE';
  7. const REGISTER = 'yapi/user/REGISTER';
  8. const SET_BREADCRUMB = 'yapi/user/SET_BREADCRUMB';
  9. const CHANGE_STUDY_TIP = 'yapi/user/CHANGE_STUDY_TIP';
  10. const FINISH_STUDY = 'yapi/user/FINISH_STUDY';
  11. const SET_IMAGE_URL = 'yapi/user/SET_IMAGE_URL';
  12. // Reducer
  13. const LOADING_STATUS = 0;
  14. const GUEST_STATUS = 1;
  15. const MEMBER_STATUS = 2;
  16. // Reducer user
  17. const initialState = {
  18. isLogin: false,
  19. canRegister: true,
  20. isLDAP: false,
  21. userName: null,
  22. uid: null,
  23. email: '',
  24. loginState: LOADING_STATUS,
  25. loginWrapActiveKey: '1',
  26. role: '',
  27. type: '',
  28. // breadcrumb: [{
  29. // name: 'name',
  30. // href: 'group'
  31. // }, {
  32. // name: '当前页面'
  33. // }]
  34. breadcrumb: [],
  35. studyTip: 0,
  36. study: false,
  37. imageUrl: ''
  38. };
  39. export default (state = initialState, action) => {
  40. switch (action.type) {
  41. case GET_LOGIN_STATE: {
  42. return {
  43. ...state,
  44. isLogin: action.payload.data.errcode == 0,
  45. isLDAP: action.payload.data.ladp,
  46. canRegister: action.payload.data.canRegister,
  47. role: action.payload.data.data ? action.payload.data.data.role : null,
  48. loginState: action.payload.data.errcode == 0 ? MEMBER_STATUS : GUEST_STATUS,
  49. userName: action.payload.data.data ? action.payload.data.data.username : null,
  50. uid: action.payload.data.data ? action.payload.data.data._id : null,
  51. type: action.payload.data.data ? action.payload.data.data.type : null,
  52. study: action.payload.data.data ? action.payload.data.data.study : false
  53. };
  54. }
  55. case LOGIN: {
  56. if (action.payload.data.errcode === 0) {
  57. return {
  58. ...state,
  59. isLogin: true,
  60. loginState: MEMBER_STATUS,
  61. uid: action.payload.data.data.uid,
  62. userName: action.payload.data.data.username,
  63. role: action.payload.data.data.role,
  64. type: action.payload.data.data.type,
  65. study: action.payload.data.data.study
  66. };
  67. } else {
  68. return state;
  69. }
  70. }
  71. case LOGIN_OUT: {
  72. return {
  73. ...state,
  74. isLogin: false,
  75. loginState: GUEST_STATUS,
  76. userName: null,
  77. uid: null,
  78. role: '',
  79. type: ''
  80. };
  81. }
  82. case LOGIN_TYPE: {
  83. return {
  84. ...state,
  85. loginWrapActiveKey: action.index
  86. };
  87. }
  88. case REGISTER: {
  89. return {
  90. ...state,
  91. isLogin: true,
  92. loginState: MEMBER_STATUS,
  93. uid: action.payload.data.data.uid,
  94. userName: action.payload.data.data.username,
  95. type: action.payload.data.data.type,
  96. study: action.payload.data.data ? action.payload.data.data.study : false
  97. };
  98. }
  99. case SET_BREADCRUMB: {
  100. return {
  101. ...state,
  102. breadcrumb: action.data
  103. };
  104. }
  105. case CHANGE_STUDY_TIP: {
  106. return {
  107. ...state,
  108. studyTip: state.studyTip + 1
  109. };
  110. }
  111. case FINISH_STUDY: {
  112. return {
  113. ...state,
  114. study: true,
  115. studyTip: 0
  116. };
  117. }
  118. case SET_IMAGE_URL: {
  119. // console.log('state', state);
  120. return {
  121. ...state,
  122. imageUrl: action.data
  123. };
  124. }
  125. default:
  126. return state;
  127. }
  128. };
  129. // Action Creators
  130. export function checkLoginState() {
  131. return {
  132. type: GET_LOGIN_STATE,
  133. payload: axios.get('/api/user/status')
  134. };
  135. }
  136. export function loginActions(data) {
  137. return {
  138. type: LOGIN,
  139. payload: axios.post('/api/user/login', data)
  140. };
  141. }
  142. export function loginLdapActions(data) {
  143. return {
  144. type: LOGIN,
  145. payload: axios.post('/api/user/login_by_ldap', data)
  146. };
  147. }
  148. export function regActions(data) {
  149. const { email, password, userName } = data;
  150. const param = {
  151. email,
  152. password,
  153. username: userName
  154. };
  155. return {
  156. type: REGISTER,
  157. payload: axios.post('/api/user/reg', param)
  158. };
  159. }
  160. export function logoutActions() {
  161. return {
  162. type: LOGIN_OUT,
  163. payload: axios.get('/api/user/logout')
  164. };
  165. }
  166. export function loginTypeAction(index) {
  167. return {
  168. type: LOGIN_TYPE,
  169. index
  170. };
  171. }
  172. export function setBreadcrumb(data) {
  173. return {
  174. type: SET_BREADCRUMB,
  175. data
  176. };
  177. }
  178. export function setImageUrl(data) {
  179. return {
  180. type: SET_IMAGE_URL,
  181. data
  182. };
  183. }
  184. export function changeStudyTip() {
  185. return {
  186. type: CHANGE_STUDY_TIP
  187. };
  188. }
  189. export function finishStudy() {
  190. return {
  191. type: FINISH_STUDY,
  192. payload: axios.get('/api/user/up_study')
  193. };
  194. }