mirror of
				https://github.com/elyby/accounts-frontend.git
				synced 2025-05-31 14:11:58 +05:30 
			
		
		
		
	Do not expose logout action to route
This commit is contained in:
		| @@ -1,9 +0,0 @@ | |||||||
| import React, { Component } from 'react'; |  | ||||||
|  |  | ||||||
| export class Logout extends Component { |  | ||||||
|     static displayName = 'Logout'; |  | ||||||
|  |  | ||||||
|     render() { |  | ||||||
|         return <span/>; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -1,3 +1,5 @@ | |||||||
|  | import { routeActions } from 'react-router-redux'; | ||||||
|  |  | ||||||
| import request from 'services/request'; | import request from 'services/request'; | ||||||
| import accounts from 'services/api/accounts'; | import accounts from 'services/api/accounts'; | ||||||
|  |  | ||||||
| @@ -22,7 +24,10 @@ export function setUser(payload) { | |||||||
| } | } | ||||||
|  |  | ||||||
| export function logout() { | export function logout() { | ||||||
|     return setUser({isGuest: true}); |     return (dispatch) => { | ||||||
|  |         dispatch(setUser({isGuest: true})); | ||||||
|  |         dispatch(routeActions.push('/login')); | ||||||
|  |     }; | ||||||
| } | } | ||||||
|  |  | ||||||
| export function fetchUserData() { | export function fetchUserData() { | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| import React, { Component } from 'react'; | import React, { Component, PropTypes } from 'react'; | ||||||
|  |  | ||||||
| import classNames from 'classnames'; | import classNames from 'classnames'; | ||||||
| import { Link } from 'react-router'; | import { Link } from 'react-router'; | ||||||
| import { intlShape, FormattedMessage as Message } from 'react-intl'; | import { intlShape } from 'react-intl'; | ||||||
|  |  | ||||||
| import buttons from 'components/ui/buttons.scss'; | import buttons from 'components/ui/buttons.scss'; | ||||||
| import buttonGroups from 'components/ui/button-groups.scss'; | import buttonGroups from 'components/ui/button-groups.scss'; | ||||||
| @@ -15,7 +15,8 @@ import { userShape } from 'components/user/User'; | |||||||
| export default class LoggedInPanel extends Component { | export default class LoggedInPanel extends Component { | ||||||
|     static displayName = 'LoggedInPanel'; |     static displayName = 'LoggedInPanel'; | ||||||
|     static propTypes = { |     static propTypes = { | ||||||
|         user: userShape |         user: userShape, | ||||||
|  |         onLogout: PropTypes.func.isRequired | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     static contextTypes = { |     static contextTypes = { | ||||||
| @@ -31,14 +32,20 @@ export default class LoggedInPanel extends Component { | |||||||
|                     <span className={styles.userIcon} /> |                     <span className={styles.userIcon} /> | ||||||
|                     <span className={styles.userName}>{user.username}</span> |                     <span className={styles.userName}>{user.username}</span> | ||||||
|                 </Link> |                 </Link> | ||||||
|                 <Link |                 <button | ||||||
|                     to="/logout" |                     onClick={this.onLogout} | ||||||
|                     className={classNames(buttons.green, buttonGroups.item)} |                     className={classNames(buttons.green, buttonGroups.item)} | ||||||
|                     title={this.context.intl.formatMessage(messages.logout)} |                     title={this.context.intl.formatMessage(messages.logout)} | ||||||
|                 > |                 > | ||||||
|                     <span className={styles.logoutIcon} /> |                     <span className={styles.logoutIcon} /> | ||||||
|                 </Link> |                 </button> | ||||||
|             </div> |             </div> | ||||||
|         ); |         ); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     onLogout = (event) => { | ||||||
|  |         event.preventDefault(); | ||||||
|  |  | ||||||
|  |         this.props.onLogout(); | ||||||
|  |     }; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| import React, { PropTypes } from 'react'; | import React, { PropTypes } from 'react'; | ||||||
|  |  | ||||||
| import { connect } from 'react-redux'; |  | ||||||
| import { Link } from 'react-router'; | import { Link } from 'react-router'; | ||||||
|  |  | ||||||
| import Userbar from 'components/userbar/Userbar'; | import Userbar from 'components/userbar/Userbar'; | ||||||
| @@ -16,7 +15,7 @@ function RootPage(props) { | |||||||
|                         Ely.by |                         Ely.by | ||||||
|                     </Link> |                     </Link> | ||||||
|                     <div className={styles.userbar}> |                     <div className={styles.userbar}> | ||||||
|                         <Userbar {...props} /> |                         <Userbar {...props} onLogout={props.logout} /> | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
| @@ -32,6 +31,11 @@ RootPage.propTypes = { | |||||||
|     children: PropTypes.element |     children: PropTypes.element | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | import { connect } from 'react-redux'; | ||||||
|  | import { logout } from 'components/user/actions'; | ||||||
|  |  | ||||||
| export default connect((state) => ({ | export default connect((state) => ({ | ||||||
|     user: state.user |     user: state.user | ||||||
| }))(RootPage); | }), { | ||||||
|  |     logout | ||||||
|  | })(RootPage); | ||||||
|   | |||||||
| @@ -14,7 +14,6 @@ import Login from 'components/auth/login/Login'; | |||||||
| import Permissions from 'components/auth/permissions/Permissions'; | import Permissions from 'components/auth/permissions/Permissions'; | ||||||
| import Activation from 'components/auth/activation/Activation'; | import Activation from 'components/auth/activation/Activation'; | ||||||
| import Password from 'components/auth/password/Password'; | import Password from 'components/auth/password/Password'; | ||||||
| import Logout from 'components/auth/Logout'; |  | ||||||
| import ChangePassword from 'components/auth/changePassword/ChangePassword'; | import ChangePassword from 'components/auth/changePassword/ChangePassword'; | ||||||
| import ForgotPassword from 'components/auth/forgotPassword/ForgotPassword'; | import ForgotPassword from 'components/auth/forgotPassword/ForgotPassword'; | ||||||
| import Finish from 'components/auth/finish/Finish'; | import Finish from 'components/auth/finish/Finish'; | ||||||
| @@ -41,7 +40,6 @@ export default function routesFactory(store) { | |||||||
|             <IndexRoute component={IndexPage} {...onEnter} /> |             <IndexRoute component={IndexPage} {...onEnter} /> | ||||||
|  |  | ||||||
|             <Route path="oauth" component={OAuthInit} {...onEnter} /> |             <Route path="oauth" component={OAuthInit} {...onEnter} /> | ||||||
|             <Route path="logout" component={Logout} {...onEnter} /> |  | ||||||
|  |  | ||||||
|             <Route path="auth" component={AuthPage}> |             <Route path="auth" component={AuthPage}> | ||||||
|                 <Route path="/login" components={new Login()} {...onEnter} /> |                 <Route path="/login" components={new Login()} {...onEnter} /> | ||||||
|   | |||||||
| @@ -104,11 +104,6 @@ export default class AuthFlow { | |||||||
|                 this.setState(new LoginState()); |                 this.setState(new LoginState()); | ||||||
|                 break; |                 break; | ||||||
|  |  | ||||||
|             case '/logout': |  | ||||||
|                 this.run('logout'); |  | ||||||
|                 this.setState(new LoginState()); |  | ||||||
|                 break; |  | ||||||
|  |  | ||||||
|             default: |             default: | ||||||
|                 throw new Error(`Unsupported request: ${path}`); |                 throw new Error(`Unsupported request: ${path}`); | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user