From 681e07306bacc10604dd5223f381083736a919ba Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Sat, 27 May 2017 03:11:57 +0700 Subject: [PATCH] Require email verification info --- client/coral-framework/actions/auth.js | 11 ++++++++++- client/coral-framework/constants/auth.js | 3 +++ client/coral-framework/reducers/auth.js | 6 +++++- .../client/components/SignInContainer.js | 4 ++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/client/coral-framework/actions/auth.js b/client/coral-framework/actions/auth.js index f714f1fac..ee799c8cc 100644 --- a/client/coral-framework/actions/auth.js +++ b/client/coral-framework/actions/auth.js @@ -9,7 +9,7 @@ const lang = new I18n(translations); import translations from './../translations'; import I18n from '../../coral-framework/modules/i18n/i18n'; -export const showSignInDialog = () => (dispatch) => { +export const showSignInDialog = () => (dispatch, getState) => { const signInPopUp = window.open( '/embed/stream/login', 'Login', @@ -21,6 +21,10 @@ export const showSignInDialog = () => (dispatch) => { let loaded = false; signInPopUp.onload = () => { loaded = true; + + // Fire some actions inside the popups reducer, to initialize required state. + const required = getState().asset.toJS().settings.requireEmailConfirmation; + signInPopUp.coralStore.dispatch(setRequireEmailVerification(required)); }; // Use `onunload` instead of `onbeforeunload` which is not supported in IOS Safari. @@ -96,6 +100,11 @@ export const cleanState = () => ({ type: actions.CLEAN_STATE }); +export const setRequireEmailVerification = (required) => ({ + type: actions.SET_REQUIRE_EMAIL_VERIFICATION, + required, +}); + // Sign In Actions const signInRequest = () => ({ diff --git a/client/coral-framework/constants/auth.js b/client/coral-framework/constants/auth.js index 24599ac50..a9ac52739 100644 --- a/client/coral-framework/constants/auth.js +++ b/client/coral-framework/constants/auth.js @@ -46,3 +46,6 @@ export const VERIFY_EMAIL_REQUEST = 'VERIFY_EMAIL_REQUEST'; export const VERIFY_EMAIL_SUCCESS = 'VERIFY_EMAIL_SUCCESS'; export const VERIFY_EMAIL_FAILURE = 'VERIFY_EMAIL_FAILURE'; export const UPDATE_USERNAME = 'UPDATE_USERNAME'; + +export const SET_REQUIRE_EMAIL_VERIFICATION = 'SET_REQUIRE_EMAIL_VERIFICATION'; + diff --git a/client/coral-framework/reducers/auth.js b/client/coral-framework/reducers/auth.js index 8fa4ed75b..7a1744d59 100644 --- a/client/coral-framework/reducers/auth.js +++ b/client/coral-framework/reducers/auth.js @@ -16,7 +16,8 @@ const initialState = Map({ emailVerificationLoading: false, emailVerificationSuccess: false, successSignUp: false, - fromSignUp: false + fromSignUp: false, + requireEmailConfirmation: false, }); const purge = (user) => { @@ -142,6 +143,9 @@ export default function auth (state = initialState, action) { return state .set('emailVerificationSuccess', true) .set('emailVerificationLoading', false); + case actions.SET_REQUIRE_EMAIL_VERIFICATION: + return state + .set('requireEmailConfirmation', action.required); default : return state; } diff --git a/plugins/coral-plugin-auth/client/components/SignInContainer.js b/plugins/coral-plugin-auth/client/components/SignInContainer.js index 523f343ed..9ef868f1d 100644 --- a/plugins/coral-plugin-auth/client/components/SignInContainer.js +++ b/plugins/coral-plugin-auth/client/components/SignInContainer.js @@ -167,8 +167,8 @@ class SignInContainer extends React.Component { }; render() { - const {auth, requireEmailConfirmation} = this.props; - const {emailVerificationLoading, emailVerificationSuccess} = auth; + const {auth} = this.props; + const {requireEmailConfirmation, emailVerificationLoading, emailVerificationSuccess} = auth; return (