user.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import {createAction, NavigationActions, Storage} from '../utils';
  2. import SyncStorage from 'sync-storage';
  3. import * as authService from '../services/user';
  4. import ResponseError from '../components/ResponseError';
  5. export default {
  6. namespace: 'auth',
  7. state: {
  8. loading: false,
  9. tipsCount: {},
  10. },
  11. reducers: {
  12. updateState(state, {payload}) {
  13. return {...state, ...payload};
  14. },
  15. queryList(state, {payload}) {
  16. return {...state, ...payload};
  17. },
  18. },
  19. effects: {
  20. * authLogin({payload, callback, unLogin}, {call, put}) {
  21. const result = yield call(authService.authLogin, payload);
  22. // token错误,error=true
  23. if (!result.code && !result.data.error) {
  24. const data = {
  25. token: result.data.token,
  26. username: result.data.username,
  27. user_id: result.data.user_id,
  28. manager_stores: result.data.manager_stores,
  29. };
  30. SyncStorage.set('credential', data);
  31. SyncStorage.set('premissions', result.data.permissions);
  32. if (callback) {
  33. callback();
  34. }
  35. } else {
  36. SyncStorage.remove('credential');
  37. unLogin();
  38. }
  39. },
  40. * login({payload, callback, unLogin}, {call, put}) {
  41. yield put(createAction('updateState')({loading: true}));
  42. const result = yield call(authService.login, payload);
  43. if (!result.code) {
  44. const data = {
  45. token: result.data.token,
  46. username: result.data.username,
  47. user_id: result.data.user_id,
  48. manager_stores: result.data.manager_stores,
  49. };
  50. SyncStorage.set('credential', data);
  51. SyncStorage.set('premissions', result.data.permissions);
  52. if (callback) {
  53. callback();
  54. }
  55. } else {
  56. if (result.msg) {
  57. unLogin(result.msg);
  58. }
  59. }
  60. yield put(createAction('updateState')({loading: false}));
  61. },
  62. * logout({payload}, {call, put}) {
  63. yield call(authService.loginOut);
  64. SyncStorage.remove('credential');
  65. yield put(NavigationActions.navigate({
  66. routeName: 'Login',
  67. actions: [NavigationActions.navigate({routeName: 'Login'})],
  68. }));
  69. },
  70. //修改密码
  71. * changePassword({payload, callback}, {call, put}) {
  72. yield put(createAction('queryList')({loading: true}));
  73. const response = yield call(authService.changePassword, payload);
  74. if (!response.code) {
  75. if (callback) {
  76. callback();
  77. }
  78. } else {
  79. ResponseError(response);
  80. }
  81. yield put(createAction('queryList')({loading: false}));
  82. },
  83. * fetchTipsCount({payload}, {call, put}) {
  84. yield put(createAction('updateState')({loading: true}));
  85. const response = yield call(authService.queryTipsCount);
  86. if (!response.code) {
  87. yield put(createAction('updateState')({tipsCount: response.data, loading: false}));
  88. } else {
  89. ResponseError(response);
  90. yield put(createAction('updateState')({tipsCount: {}, loading: false}));
  91. }
  92. },
  93. },
  94. subscriptions: {
  95. setup({dispatch}) {
  96. //dispatch({ type: 'loadStorage' })
  97. },
  98. },
  99. };