Use correct redirect url

This commit is contained in:
Chi Vinh Le
2017-05-29 22:00:27 +07:00
parent 93f8a81678
commit bd5e272f00
4 changed files with 28 additions and 13 deletions
+20 -10
View File
@@ -1,5 +1,4 @@
import jwtDecode from 'jwt-decode'; import jwtDecode from 'jwt-decode';
import {pym} from 'coral-framework';
import bowser from 'bowser'; import bowser from 'bowser';
import * as actions from '../constants/auth'; import * as actions from '../constants/auth';
import * as Storage from '../helpers/storage'; import * as Storage from '../helpers/storage';
@@ -24,7 +23,9 @@ export const showSignInDialog = () => (dispatch, getState) => {
// Fire some actions inside the popups reducer, to initialize required state. // Fire some actions inside the popups reducer, to initialize required state.
const required = getState().asset.toJS().settings.requireEmailConfirmation; const required = getState().asset.toJS().settings.requireEmailConfirmation;
const redirectUri = getState().auth.toJS().redirectUri;
signInPopUp.coralStore.dispatch(setRequireEmailVerification(required)); signInPopUp.coralStore.dispatch(setRequireEmailVerification(required));
signInPopUp.coralStore.dispatch(setRedirectUri(redirectUri));
}; };
// Use `onunload` instead of `onbeforeunload` which is not supported in IOS Safari. // Use `onunload` instead of `onbeforeunload` which is not supported in IOS Safari.
@@ -100,11 +101,6 @@ export const cleanState = () => ({
type: actions.CLEAN_STATE type: actions.CLEAN_STATE
}); });
export const setRequireEmailVerification = (required) => ({
type: actions.SET_REQUIRE_EMAIL_VERIFICATION,
required,
});
// Sign In Actions // Sign In Actions
const signInRequest = () => ({ const signInRequest = () => ({
@@ -224,7 +220,8 @@ const signUpRequest = () => ({type: actions.FETCH_SIGNUP_REQUEST});
const signUpSuccess = (user) => ({type: actions.FETCH_SIGNUP_SUCCESS, user}); const signUpSuccess = (user) => ({type: actions.FETCH_SIGNUP_SUCCESS, user});
const signUpFailure = (error) => ({type: actions.FETCH_SIGNUP_FAILURE, error}); const signUpFailure = (error) => ({type: actions.FETCH_SIGNUP_FAILURE, error});
export const fetchSignUp = (formData, redirectUri) => (dispatch) => { export const fetchSignUp = (formData) => (dispatch, getState) => {
const redirectUri = getState().auth.toJS().redirectUri;
dispatch(signUpRequest()); dispatch(signUpRequest());
coralApi('/users', { coralApi('/users', {
@@ -262,9 +259,9 @@ const forgotPasswordFailure = () => ({
type: actions.FETCH_FORGOT_PASSWORD_FAILURE type: actions.FETCH_FORGOT_PASSWORD_FAILURE
}); });
export const fetchForgotPassword = (email) => (dispatch) => { export const fetchForgotPassword = (email) => (dispatch, getState) => {
dispatch(forgotPasswordRequest(email)); dispatch(forgotPasswordRequest(email));
const redirectUri = pym.parentUrl || location.href; const redirectUri = getState().auth.toJS().redirectUri;
coralApi('/account/password/reset', { coralApi('/account/password/reset', {
method: 'POST', method: 'POST',
body: {email, loc: redirectUri} body: {email, loc: redirectUri}
@@ -342,7 +339,8 @@ const verifyEmailFailure = () => ({
type: actions.VERIFY_EMAIL_FAILURE type: actions.VERIFY_EMAIL_FAILURE
}); });
export const requestConfirmEmail = (email, redirectUri) => (dispatch) => { export const requestConfirmEmail = (email) => (dispatch, getState) => {
const redirectUri = getState().auth.toJS().redirectUri;
dispatch(verifyEmailRequest()); dispatch(verifyEmailRequest());
return coralApi('/users/resend-verify', { return coralApi('/users/resend-verify', {
method: 'POST', method: 'POST',
@@ -356,5 +354,17 @@ export const requestConfirmEmail = (email, redirectUri) => (dispatch) => {
// email might have already been verifyed // email might have already been verifyed
dispatch(verifyEmailFailure(err)); dispatch(verifyEmailFailure(err));
throw err;
}); });
}; };
// Login Popup actions.
export const setRequireEmailVerification = (required) => ({
type: actions.SET_REQUIRE_EMAIL_VERIFICATION,
required,
});
export const setRedirectUri = (uri) => ({
type: actions.SET_REDIRECT_URI,
uri,
});
+2
View File
@@ -47,5 +47,7 @@ export const VERIFY_EMAIL_SUCCESS = 'VERIFY_EMAIL_SUCCESS';
export const VERIFY_EMAIL_FAILURE = 'VERIFY_EMAIL_FAILURE'; export const VERIFY_EMAIL_FAILURE = 'VERIFY_EMAIL_FAILURE';
export const UPDATE_USERNAME = 'UPDATE_USERNAME'; export const UPDATE_USERNAME = 'UPDATE_USERNAME';
// Login Popup actions.
export const SET_REQUIRE_EMAIL_VERIFICATION = 'SET_REQUIRE_EMAIL_VERIFICATION'; export const SET_REQUIRE_EMAIL_VERIFICATION = 'SET_REQUIRE_EMAIL_VERIFICATION';
export const SET_REDIRECT_URI = 'SET_REDIRECT_URI';
+5
View File
@@ -1,5 +1,6 @@
import {Map, fromJS} from 'immutable'; import {Map, fromJS} from 'immutable';
import * as actions from '../constants/auth'; import * as actions from '../constants/auth';
import {pym} from 'coral-framework';
const initialState = Map({ const initialState = Map({
isLoading: false, isLoading: false,
@@ -18,6 +19,7 @@ const initialState = Map({
successSignUp: false, successSignUp: false,
fromSignUp: false, fromSignUp: false,
requireEmailConfirmation: false, requireEmailConfirmation: false,
redirectUri: pym.parentUrl || location.href,
}); });
const purge = (user) => { const purge = (user) => {
@@ -146,6 +148,9 @@ export default function auth (state = initialState, action) {
case actions.SET_REQUIRE_EMAIL_VERIFICATION: case actions.SET_REQUIRE_EMAIL_VERIFICATION:
return state return state
.set('requireEmailConfirmation', action.required); .set('requireEmailConfirmation', action.required);
case actions.SET_REDIRECT_URI:
return state
.set('redirectUri', action.uri);
default : default :
return state; return state;
} }
@@ -1,6 +1,5 @@
import React from 'react'; import React from 'react';
import {connect} from 'react-redux'; import {connect} from 'react-redux';
import {pym} from 'coral-framework';
import SignDialog from './SignDialog'; import SignDialog from './SignDialog';
import {bindActionCreators} from 'redux'; import {bindActionCreators} from 'redux';
import translations from '../translations'; import translations from '../translations';
@@ -99,7 +98,6 @@ class SignInContainer extends React.Component {
this.props this.props
.requestConfirmEmail( .requestConfirmEmail(
this.state.emailToBeResent, this.state.emailToBeResent,
pym.parentUrl || location.href
) )
.then(() => { .then(() => {
setTimeout(() => { setTimeout(() => {
@@ -154,7 +152,7 @@ class SignInContainer extends React.Component {
const {fetchSignUp, validForm, invalidForm} = this.props; const {fetchSignUp, validForm, invalidForm} = this.props;
this.displayErrors(); this.displayErrors();
if (this.isCompleted() && !Object.keys(errors).length) { if (this.isCompleted() && !Object.keys(errors).length) {
fetchSignUp(this.state.formData, pym.parentUrl || location.href); fetchSignUp(this.state.formData);
validForm(); validForm();
} else { } else {
invalidForm(lang.t('signIn.checkTheForm')); invalidForm(lang.t('signIn.checkTheForm'));