diff --git a/src/components/AuthenticatedRoute.js b/src/components/AuthenticatedRoute.js index ac5c720..83209a7 100644 --- a/src/components/AuthenticatedRoute.js +++ b/src/components/AuthenticatedRoute.js @@ -14,7 +14,7 @@ export default class AuthenticatedRoute extends Route { var loginRoute = router.getLoginRoute(); var redirectTo = (loginRoute || {}).path || (homeRoute || {}).path || '/'; - replace(redirectTo); + replace({ nextPathname: nextState.location.pathname }, redirectTo); } callback(); }); diff --git a/src/components/LoginForm.js b/src/components/LoginForm.js index d388966..f4fb773 100644 --- a/src/components/LoginForm.js +++ b/src/components/LoginForm.js @@ -154,7 +154,7 @@ export default class LoginForm extends React.Component { onFormSubmit(e) { e.preventDefault(); e.persist(); - + var next = (err, data) => { if (err) { return this.setState({ @@ -198,7 +198,13 @@ export default class LoginForm extends React.Component { var router = context.getRouter(); var homeRoute = router.getHomeRoute(); var authenticatedHomeRoute = router.getAuthenticatedHomeRoute(); - var redirectTo = this.props.redirectTo || (authenticatedHomeRoute || {}).path || (homeRoute || {}).path || '/'; + var logoutRoute = router.getLogoutRoute(); + + var { location } = this.props; + var passthru = (location && location.state) ? location.state.nextPathname : null; + if ( passthru == ( logoutRoute || {} ).path ) passthru = null; + + var redirectTo = this.props.redirectTo || passthru || (authenticatedHomeRoute || {}).path || (homeRoute || {}).path || '/'; this.context.router.push(redirectTo); }