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 {pym} from 'coral-framework';
import bowser from 'bowser';
import * as actions from '../constants/auth';
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.
const required = getState().asset.toJS().settings.requireEmailConfirmation;
const redirectUri = getState().auth.toJS().redirectUri;
signInPopUp.coralStore.dispatch(setRequireEmailVerification(required));
signInPopUp.coralStore.dispatch(setRedirectUri(redirectUri));
};
// Use `onunload` instead of `onbeforeunload` which is not supported in IOS Safari.
@@ -100,11 +101,6 @@ export const cleanState = () => ({
type: actions.CLEAN_STATE
});
export const setRequireEmailVerification = (required) => ({
type: actions.SET_REQUIRE_EMAIL_VERIFICATION,
required,
});
// Sign In Actions
const signInRequest = () => ({
@@ -224,7 +220,8 @@ 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, redirectUri) => (dispatch) => {
export const fetchSignUp = (formData) => (dispatch, getState) => {
const redirectUri = getState().auth.toJS().redirectUri;
dispatch(signUpRequest());
coralApi('/users', {
@@ -262,9 +259,9 @@ const forgotPasswordFailure = () => ({
type: actions.FETCH_FORGOT_PASSWORD_FAILURE
});
export const fetchForgotPassword = (email) => (dispatch) => {
export const fetchForgotPassword = (email) => (dispatch, getState) => {
dispatch(forgotPasswordRequest(email));
const redirectUri = pym.parentUrl || location.href;
const redirectUri = getState().auth.toJS().redirectUri;
coralApi('/account/password/reset', {
method: 'POST',
body: {email, loc: redirectUri}
@@ -342,7 +339,8 @@ const verifyEmailFailure = () => ({
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());
return coralApi('/users/resend-verify', {
method: 'POST',
@@ -356,5 +354,17 @@ export const requestConfirmEmail = (email, redirectUri) => (dispatch) => {
// email might have already been verifyed
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 UPDATE_USERNAME = 'UPDATE_USERNAME';
// Login Popup actions.
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 * as actions from '../constants/auth';
import {pym} from 'coral-framework';
const initialState = Map({
isLoading: false,
@@ -18,6 +19,7 @@ const initialState = Map({
successSignUp: false,
fromSignUp: false,
requireEmailConfirmation: false,
redirectUri: pym.parentUrl || location.href,
});
const purge = (user) => {
@@ -146,6 +148,9 @@ export default function auth (state = initialState, action) {
case actions.SET_REQUIRE_EMAIL_VERIFICATION:
return state
.set('requireEmailConfirmation', action.required);
case actions.SET_REDIRECT_URI:
return state
.set('redirectUri', action.uri);
default :
return state;
}
@@ -1,6 +1,5 @@
import React from 'react';
import {connect} from 'react-redux';
import {pym} from 'coral-framework';
import SignDialog from './SignDialog';
import {bindActionCreators} from 'redux';
import translations from '../translations';
@@ -99,7 +98,6 @@ class SignInContainer extends React.Component {
this.props
.requestConfirmEmail(
this.state.emailToBeResent,
pym.parentUrl || location.href
)
.then(() => {
setTimeout(() => {
@@ -154,7 +152,7 @@ class SignInContainer extends React.Component {
const {fetchSignUp, validForm, invalidForm} = this.props;
this.displayErrors();
if (this.isCompleted() && !Object.keys(errors).length) {
fetchSignUp(this.state.formData, pym.parentUrl || location.href);
fetchSignUp(this.state.formData);
validForm();
} else {
invalidForm(lang.t('signIn.checkTheForm'));