Browse Source

Refactor Login code

pull/382/merge
afc163 9 years ago
parent
commit
753dc958f4
  1. 10
      .roadhogrc.mock.js
  2. 28
      src/models/login.js
  3. 22
      src/routes/User/Login.js
  4. 7
      src/services/api.js

10
.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' });

28
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 }) {

22
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,
},
});
}
}

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',

Loading…
Cancel
Save