| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- import axios from 'axios';
- // Actions
- const LOGIN = 'yapi/user/LOGIN';
- const LOGIN_OUT = 'yapi/user/LOGIN_OUT';
- const LOGIN_TYPE = 'yapi/user/LOGIN_TYPE';
- const GET_LOGIN_STATE = 'yapi/user/GET_LOGIN_STATE';
- const REGISTER = 'yapi/user/REGISTER';
- const SET_BREADCRUMB = 'yapi/user/SET_BREADCRUMB';
- const CHANGE_STUDY_TIP = 'yapi/user/CHANGE_STUDY_TIP';
- const FINISH_STUDY = 'yapi/user/FINISH_STUDY';
- const SET_IMAGE_URL = 'yapi/user/SET_IMAGE_URL';
- // Reducer
- const LOADING_STATUS = 0;
- const GUEST_STATUS = 1;
- const MEMBER_STATUS = 2;
- // Reducer user
- const initialState = {
- isLogin: false,
- canRegister: true,
- isLDAP: false,
- userName: null,
- uid: null,
- email: '',
- loginState: LOADING_STATUS,
- loginWrapActiveKey: '1',
- role: '',
- type: '',
- // breadcrumb: [{
- // name: 'name',
- // href: 'group'
- // }, {
- // name: '当前页面'
- // }]
- breadcrumb: [],
- studyTip: 0,
- study: false,
- imageUrl: ''
- };
- export default (state = initialState, action) => {
- switch (action.type) {
- case GET_LOGIN_STATE: {
- return {
- ...state,
- isLogin: action.payload.data.errcode == 0,
- isLDAP: action.payload.data.ladp,
- canRegister: action.payload.data.canRegister,
- role: action.payload.data.data ? action.payload.data.data.role : null,
- loginState: action.payload.data.errcode == 0 ? MEMBER_STATUS : GUEST_STATUS,
- userName: action.payload.data.data ? action.payload.data.data.username : null,
- uid: action.payload.data.data ? action.payload.data.data._id : null,
- type: action.payload.data.data ? action.payload.data.data.type : null,
- study: action.payload.data.data ? action.payload.data.data.study : false
- };
- }
- case LOGIN: {
- if (action.payload.data.errcode === 0) {
- return {
- ...state,
- isLogin: true,
- loginState: MEMBER_STATUS,
- uid: action.payload.data.data.uid,
- userName: action.payload.data.data.username,
- role: action.payload.data.data.role,
- type: action.payload.data.data.type,
- study: action.payload.data.data.study
- };
- } else {
- return state;
- }
- }
- case LOGIN_OUT: {
- return {
- ...state,
- isLogin: false,
- loginState: GUEST_STATUS,
- userName: null,
- uid: null,
- role: '',
- type: ''
- };
- }
- case LOGIN_TYPE: {
- return {
- ...state,
- loginWrapActiveKey: action.index
- };
- }
- case REGISTER: {
- return {
- ...state,
- isLogin: true,
- loginState: MEMBER_STATUS,
- uid: action.payload.data.data.uid,
- userName: action.payload.data.data.username,
- type: action.payload.data.data.type,
- study: action.payload.data.data ? action.payload.data.data.study : false
- };
- }
- case SET_BREADCRUMB: {
- return {
- ...state,
- breadcrumb: action.data
- };
- }
- case CHANGE_STUDY_TIP: {
- return {
- ...state,
- studyTip: state.studyTip + 1
- };
- }
- case FINISH_STUDY: {
- return {
- ...state,
- study: true,
- studyTip: 0
- };
- }
- case SET_IMAGE_URL: {
- // console.log('state', state);
- return {
- ...state,
- imageUrl: action.data
- };
- }
- default:
- return state;
- }
- };
- // Action Creators
- export function checkLoginState() {
- return {
- type: GET_LOGIN_STATE,
- payload: axios.get('/api/user/status')
- };
- }
- export function loginActions(data) {
- return {
- type: LOGIN,
- payload: axios.post('/api/user/login', data)
- };
- }
- export function loginLdapActions(data) {
- return {
- type: LOGIN,
- payload: axios.post('/api/user/login_by_ldap', data)
- };
- }
- export function regActions(data) {
- const { email, password, userName } = data;
- const param = {
- email,
- password,
- username: userName
- };
- return {
- type: REGISTER,
- payload: axios.post('/api/user/reg', param)
- };
- }
- export function logoutActions() {
- return {
- type: LOGIN_OUT,
- payload: axios.get('/api/user/logout')
- };
- }
- export function loginTypeAction(index) {
- return {
- type: LOGIN_TYPE,
- index
- };
- }
- export function setBreadcrumb(data) {
- return {
- type: SET_BREADCRUMB,
- data
- };
- }
- export function setImageUrl(data) {
- return {
- type: SET_IMAGE_URL,
- data
- };
- }
- export function changeStudyTip() {
- return {
- type: CHANGE_STUDY_TIP
- };
- }
- export function finishStudy() {
- return {
- type: FINISH_STUDY,
- payload: axios.get('/api/user/up_study')
- };
- }
|