浏览代码

Refactor Login code

afc163 8 年之前
父节点
当前提交
753dc958f4
共有 4 个文件被更改,包括 20 次插入47 次删除
  1. 5 5
      .roadhogrc.mock.js
  2. 7 21
      src/models/login.js
  3. 8 14
      src/routes/User/Login.js
  4. 0 7
      src/services/api.js

+ 5 - 5
.roadhogrc.mock.js

@@ -69,11 +69,11 @@ const proxy = {
   'GET /api/profile/basic': getProfileBasicData,
   'GET /api/profile/advanced': getProfileAdvancedData,
   'POST /api/login/account': (req, res) => {
-    const { password, userName } = req.body;
-    res.send({ status: password === '888888' && userName === 'admin' ? 'ok' : 'error', type: 'account' });
-  },
-  'POST /api/login/mobile': (req, res) => {
-    res.send({ status: 'ok', type: 'mobile' });
+    const { password, userName, type } = req.body;
+    res.send({
+      status: password === '888888' && userName === 'admin' ? 'ok' : 'error',
+      type,
+    });
   },
   'POST /api/register': (req, res) => {
     res.send({ status: 'ok' });

+ 7 - 21
src/models/login.js

@@ -1,5 +1,5 @@
 import { routerRedux } from 'dva/router';
-import { fakeAccountLogin, fakeMobileLogin } from '../services/api';
+import { fakeAccountLogin } from '../services/api';
 
 export default {
   namespace: 'login',
@@ -9,7 +9,7 @@ export default {
   },
 
   effects: {
-    *accountSubmit({ payload }, { call, put }) {
+    *login({ payload }, { call, put }) {
       yield put({
         type: 'changeSubmitting',
         payload: true,
@@ -19,25 +19,10 @@ export default {
         type: 'changeLoginStatus',
         payload: response,
       });
-      yield put({
-        type: 'changeSubmitting',
-        payload: false,
-      });
-    },
-    *mobileSubmit(_, { call, put }) {
-      yield put({
-        type: 'changeSubmitting',
-        payload: true,
-      });
-      const response = yield call(fakeMobileLogin);
-      yield put({
-        type: 'changeLoginStatus',
-        payload: response,
-      });
-      yield put({
-        type: 'changeSubmitting',
-        payload: false,
-      });
+      // Login successfully
+      if (response.status === 'ok') {
+        yield put(routerRedux.push('/'));
+      }
     },
     *logout(_, { put }) {
       yield put({
@@ -56,6 +41,7 @@ export default {
         ...state,
         status: payload.status,
         type: payload.type,
+        submitting: false,
       };
     },
     changeSubmitting(state, { payload }) {

+ 8 - 14
src/routes/User/Login.js

@@ -1,6 +1,6 @@
 import React, { Component } from 'react';
 import { connect } from 'dva';
-import { routerRedux, Link } from 'dva/router';
+import { Link } from 'dva/router';
 import { Form, Input, Tabs, Button, Icon, Checkbox, Row, Col, Alert } from 'antd';
 import styles from './Login.less';
 
@@ -17,20 +17,12 @@ export default class Login extends Component {
     type: 'account',
   }
 
-  componentWillReceiveProps(nextProps) {
-    if (nextProps.login.status === 'ok') {
-      this.props.dispatch(routerRedux.push('/'));
-    }
-  }
-
   componentWillUnmount() {
     clearInterval(this.interval);
   }
 
-  onSwitch = (key) => {
-    this.setState({
-      type: key,
-    });
+  onSwitch = (type) => {
+    this.setState({ type });
   }
 
   onGetCaptcha = () => {
@@ -47,13 +39,15 @@ export default class Login extends Component {
 
   handleSubmit = (e) => {
     e.preventDefault();
-    const { type } = this.state;
     this.props.form.validateFields({ force: true },
       (err, values) => {
         if (!err) {
           this.props.dispatch({
-            type: `login/${type}Submit`,
-            payload: values,
+            type: 'login/login',
+            payload: {
+              ...values,
+              type: this.state.type,
+            },
           });
         }
       }

+ 0 - 7
src/services/api.js

@@ -67,13 +67,6 @@ export async function fakeAccountLogin(params) {
   });
 }
 
-export async function fakeMobileLogin(params) {
-  return request('/api/login/mobile', {
-    method: 'POST',
-    body: params,
-  });
-}
-
 export async function fakeRegister(params) {
   return request('/api/register', {
     method: 'POST',