From a53db77c2184f515a7ece2d566724484b180c6a6 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Thu, 2 Feb 2017 15:44:12 -0700 Subject: [PATCH] redirect back to the proper page --- client/coral-framework/actions/auth.js | 15 ++++++++------- client/coral-framework/helpers/response.js | 3 ++- .../coral-sign-in/containers/SignInContainer.js | 9 +++++---- routes/api/users/index.js | 4 ++-- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/client/coral-framework/actions/auth.js b/client/coral-framework/actions/auth.js index 81b76170b..d40997720 100644 --- a/client/coral-framework/actions/auth.js +++ b/client/coral-framework/actions/auth.js @@ -79,15 +79,16 @@ const signUpRequest = () => ({type: actions.FETCH_SIGNUP_REQUEST}); const signUpSuccess = user => ({type: actions.FETCH_SIGNUP_SUCCESS, user}); const signUpFailure = error => ({type: actions.FETCH_SIGNUP_FAILURE, error}); -export const fetchSignUp = formData => (dispatch) => { +export const fetchSignUp = (formData, redirectUri) => (dispatch) => { dispatch(signUpRequest()); - coralApi('/users', {method: 'POST', body: formData}) + coralApi('/users', {method: 'POST', body: formData, headers: {'X-Pym-Url': redirectUri}}) .then(({user}) => { dispatch(signUpSuccess(user)); - setTimeout(() =>{ - dispatch(changeView('SIGNIN')); - }, 3000); + + // setTimeout(() =>{ + // dispatch(changeView('SIGNIN')); + // }, 3000); }) .catch(error => { dispatch(signUpFailure(lang.t(`error.${error.message}`))); @@ -152,9 +153,9 @@ const verifyEmailRequest = () => ({type: actions.VERIFY_EMAIL_REQUEST}); const verifyEmailSuccess = () => ({type: actions.VERIFY_EMAIL_SUCCESS}); const verifyEmailFailure = () => ({type: actions.VERIFY_EMAIL_FAILURE}); -export const requestConfirmEmail = email => dispatch => { +export const requestConfirmEmail = (email, redirectUri) => dispatch => { dispatch(verifyEmailRequest()); - return coralApi('/users/resend-verify', {method: 'POST', body: {email}}) + return coralApi('/users/resend-verify', {method: 'POST', body: {email}, headers: {'X-Pym-Url': redirectUri}}) .then(() => { dispatch(verifyEmailSuccess()); }) diff --git a/client/coral-framework/helpers/response.js b/client/coral-framework/helpers/response.js index d95773c04..64803faef 100644 --- a/client/coral-framework/helpers/response.js +++ b/client/coral-framework/helpers/response.js @@ -14,7 +14,8 @@ const buildOptions = (inputOptions = {}) => { _csrf: csurfDOM ? csurfDOM.content : false }; - const options = Object.assign({}, defaultOptions, inputOptions); + let options = Object.assign({}, defaultOptions, inputOptions); + options.headers = Object.assign({}, defaultOptions.headers, inputOptions.headers); if (options._csrf) { switch (options.method.toLowerCase()) { diff --git a/client/coral-sign-in/containers/SignInContainer.js b/client/coral-sign-in/containers/SignInContainer.js index 59e17c397..f218f7fbb 100644 --- a/client/coral-sign-in/containers/SignInContainer.js +++ b/client/coral-sign-in/containers/SignInContainer.js @@ -6,6 +6,7 @@ import validate from 'coral-framework/helpers/validate'; import errorMsj from 'coral-framework/helpers/error'; import I18n from 'coral-framework/modules/i18n/i18n'; import translations from '../translations'; +import {pym} from 'coral-framework'; const lang = new I18n(translations); import { @@ -85,7 +86,7 @@ class SignInContainer extends Component { handleResendVerification(e) { e.preventDefault(); - this.props.requestConfirmEmail(this.state.emailToBeResent) + this.props.requestConfirmEmail(this.state.emailToBeResent, pym.parentUrl || location.href) .then(() => { setTimeout(() => { @@ -136,7 +137,7 @@ class SignInContainer extends Component { const {fetchSignUp, validForm, invalidForm} = this.props; this.displayErrors(); if (this.isCompleted() && !Object.keys(errors).length) { - fetchSignUp(this.state.formData); + fetchSignUp(this.state.formData, pym.parentUrl || location.href); validForm(); } else { invalidForm(lang.t('signIn.checkTheForm')); @@ -180,11 +181,11 @@ const mapStateToProps = state => ({ const mapDispatchToProps = dispatch => ({ checkLogin: () => dispatch(checkLogin()), facebookCallback: (err, data) => dispatch(facebookCallback(err, data)), - fetchSignUp: formData => dispatch(fetchSignUp(formData)), + fetchSignUp: (formData, url) => dispatch(fetchSignUp(formData, url)), fetchSignIn: formData => dispatch(fetchSignIn(formData)), fetchSignInFacebook: () => dispatch(fetchSignInFacebook()), fetchForgotPassword: formData => dispatch(fetchForgotPassword(formData)), - requestConfirmEmail: email => dispatch(requestConfirmEmail(email)), + requestConfirmEmail: (email, url) => dispatch(requestConfirmEmail(email, url)), showSignInDialog: () => dispatch(showSignInDialog()), changeView: view => dispatch(changeView(view)), handleClose: () => dispatch(hideSignInDialog()), diff --git a/routes/api/users/index.js b/routes/api/users/index.js index cc682047c..8db669618 100644 --- a/routes/api/users/index.js +++ b/routes/api/users/index.js @@ -119,7 +119,7 @@ const SendEmailConfirmation = (app, userID, email, referer) => UsersService // create a local user. router.post('/', (req, res, next) => { const {email, password, displayName} = req.body; - const redirectUri = req.header('Referer'); + const redirectUri = req.header('X-Pym-Url') || req.header('Referer'); UsersService .createLocalUser(email, password, displayName) @@ -180,7 +180,7 @@ router.post('/:user_id/actions', authorization.needed(), (req, res, next) => { // trigger an email confirmation re-send by a new user router.post('/resend-verify', (req, res, next) => { const {email} = req.body; - const redirectUri = req.header('Referer'); + const redirectUri = req.header('X-Pym-Url') || req.header('Referer'); if (!email) { return next(errors.ErrMissingEmail);