diff --git a/src/actions/auth/reducer.actions.js b/src/actions/auth/reducer.actions.js index 9425c6f..00a9914 100644 --- a/src/actions/auth/reducer.actions.js +++ b/src/actions/auth/reducer.actions.js @@ -4,10 +4,6 @@ import { CLEAR_AUTH_REQUEST_ERROR, SET_AUTH_REQUEST_SUCCESS, CLEAR_AUTH_REQUEST_SUCCESS, - SET_EMAIL_VERIFICATION_SUCCESS, - CLEAR_EMAIL_VERIFICATION_SUCCESS, - SET_EMAIL_VERIFICATION_ERROR, - CLEAR_EMAIL_VERIFICATION_ERROR, SET_SELF_USER_TOKEN, SET_FORM_EMAIL, SET_FORM_PASSWORD, @@ -70,6 +66,10 @@ export function setAuthRequestError(exception) { error["UID"] = error.uid; delete error["uid"]; } + if (error.key) { + error["Email Verification Key"] = error.key; + delete error["key"]; + } return { type: SET_AUTH_REQUEST_ERROR, @@ -96,42 +96,6 @@ export function clearAuthRequestSuccess() { }; } -export function setEmailVerificationError(exception) { - let error = parseError(exception); - if (error.detail) { - error["Email"] = error.detail; - delete error["detail"]; - } - if (error.key) { - error["Verification Key"] = error.key; - delete error["key"]; - } - - return { - type: SET_EMAIL_VERIFICATION_ERROR, - data: error - }; -} - -export function clearEmailVerificationError() { - return { - type: CLEAR_EMAIL_VERIFICATION_ERROR - }; -} - -export function setEmailVerificationSuccess(response) { - return { - type: SET_EMAIL_VERIFICATION_SUCCESS, - data: response.detail || response - }; -} - -export function clearEmailVerificationSuccess() { - return { - type: CLEAR_EMAIL_VERIFICATION_SUCCESS - }; -} - export function setSelfUserToken(selfUser) { return { type: SET_SELF_USER_TOKEN, diff --git a/src/components/App.jsx b/src/components/App.jsx index 29e178b..40fbc8f 100644 --- a/src/components/App.jsx +++ b/src/components/App.jsx @@ -15,6 +15,10 @@ import NoMatch from "./Static/NoMatch"; import Navbar from "./Navbar"; class App extends Component { + componentDidMount() { + + } + render() { const footSmash = { display: "flex", @@ -35,6 +39,10 @@ class App extends Component { path="/auth/verify-email/:emailKey" component={VerifyEmail} /> + diff --git a/src/components/Auth/VerifyEmail.jsx b/src/components/Auth/VerifyEmail.jsx index e6e8c00..b3697d5 100644 --- a/src/components/Auth/VerifyEmail.jsx +++ b/src/components/Auth/VerifyEmail.jsx @@ -4,8 +4,8 @@ import { Link } from "react-router-dom"; import { Container, Form, Header, Message } from "semantic-ui-react"; import { - clearEmailVerificationError, - clearEmailVerificationSuccess, + clearAuthRequestError, + clearAuthRequestSuccess, setFormEmailVerification } from "../../actions/auth/reducer.actions"; import { sendEmailVerificationRequest } from "../../actions/auth/saga.actions"; @@ -14,9 +14,12 @@ import Error from "../Shared/Error"; class VerifyEmail extends Component { componentWillMount() { const emailKey = this.props.match.params.emailKey; - this.props.dispatch(clearEmailVerificationError()); - this.props.dispatch(clearEmailVerificationSuccess()); + this.props.dispatch(clearAuthRequestError()); + this.props.dispatch(clearAuthRequestSuccess()); this.props.dispatch(setFormEmailVerification(emailKey)); + if (emailKey) { + this.props.dispatch(sendEmailVerificationRequest({ emailKey })); + } } changeEmailKey = event => { @@ -34,15 +37,15 @@ class VerifyEmail extends Component { render() { const { isSendingAuthRequest, - emailVerificationRequestError, - emailVerificationRequestSuccess, + authRequestError, + authRequestSuccess, emailVerificationString } = this.props; return ( @@ -80,10 +83,7 @@ const VerifyEmailView = ({ onChange={changeEmailKey} /> - + Email Verified!

Please proceed to log in.

diff --git a/src/components/Shared/PrivateRoute.jsx b/src/components/Shared/PrivateRoute.jsx index e7b9e62..d2487bd 100644 --- a/src/components/Shared/PrivateRoute.jsx +++ b/src/components/Shared/PrivateRoute.jsx @@ -4,7 +4,8 @@ import { connect } from "react-redux"; import { Redirect, Route } from "react-router-dom"; const propTypes = { - userToken: PropTypes.string, + path: PropTypes.string.isRequired, + userToken: PropTypes.string.isRequired, component: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired }; diff --git a/src/constants/auth.constants.js b/src/constants/auth.constants.js index 0a645ca..3ca9b32 100644 --- a/src/constants/auth.constants.js +++ b/src/constants/auth.constants.js @@ -4,11 +4,6 @@ export const SET_AUTH_REQUEST_ERROR = "SET_AUTH_REQUEST_ERROR"; export const CLEAR_AUTH_REQUEST_ERROR = "CLEAR_AUTH_REQUEST_ERROR"; export const SET_AUTH_REQUEST_SUCCESS = "SET_AUTH_REQUEST_SUCCESS"; export const CLEAR_AUTH_REQUEST_SUCCESS = "CLEAR_AUTH_REQUEST_SUCCESS"; -export const SET_EMAIL_VERIFICATION_SUCCESS = "SET_EMAIL_VERIFICATION_SUCCESS"; -export const CLEAR_EMAIL_VERIFICATION_SUCCESS = - "CLEAR_EMAIL_VERIFICATION_SUCCESS"; -export const SET_EMAIL_VERIFICATION_ERROR = "SET_EMAIL_VERIFICATION_ERROR"; -export const CLEAR_EMAIL_VERIFICATION_ERROR = "CLEAR_EMAIL_VERIFICATION_ERROR"; export const SET_SELF_USER_TOKEN = "SET_SELF_USER_TOKEN"; export const SET_FORM_EMAIL = "SET_FORM_EMAIL"; export const SET_FORM_PASSWORD = "SET_FORM_PASSWORD"; diff --git a/src/reducers/authReducer.js b/src/reducers/authReducer.js index 69d5bd9..0f95259 100644 --- a/src/reducers/authReducer.js +++ b/src/reducers/authReducer.js @@ -4,10 +4,6 @@ import { CLEAR_AUTH_REQUEST_ERROR, SET_AUTH_REQUEST_SUCCESS, CLEAR_AUTH_REQUEST_SUCCESS, - SET_EMAIL_VERIFICATION_ERROR, - CLEAR_EMAIL_VERIFICATION_ERROR, - SET_EMAIL_VERIFICATION_SUCCESS, - CLEAR_EMAIL_VERIFICATION_SUCCESS, SET_SELF_USER_TOKEN, SET_FORM_EMAIL, SET_FORM_PASSWORD, @@ -32,8 +28,6 @@ const initialState = { isSendingAuthRequest: false, authRequestError: "", authRequestSuccess: "", - emailVerificationRequestError: "", - emailVerificationRequestSuccess: "", userToken: me(null), email: "", password: "", @@ -69,26 +63,6 @@ function authReducer(state = initialState, action) { ...state, authRequestSuccess: "" }; - case SET_EMAIL_VERIFICATION_ERROR: - return { - ...state, - emailVerificationRequestError: action.data - }; - case CLEAR_EMAIL_VERIFICATION_ERROR: - return { - ...state, - emailVerificationRequestError: "" - }; - case SET_EMAIL_VERIFICATION_SUCCESS: - return { - ...state, - emailVerificationRequestSuccess: action.data - }; - case CLEAR_EMAIL_VERIFICATION_SUCCESS: - return { - ...state, - emailVerificationRequestSuccess: "" - }; case SET_SELF_USER_TOKEN: return { ...state, diff --git a/src/sagas/auth.sagas.js b/src/sagas/auth.sagas.js index 11d135a..b27a609 100644 --- a/src/sagas/auth.sagas.js +++ b/src/sagas/auth.sagas.js @@ -3,17 +3,12 @@ import { isSendingAuthRequest, setAuthRequestError, setAuthRequestSuccess, - setEmailVerificationError, - setEmailVerificationSuccess, clearAuthRequestError, - clearEmailVerificationError, clearAuthRequestSuccess, - clearEmailVerificationSuccess, setSelfUserToken, setFormEmail, setFormPassword, setFormPasswordConfirmation, - setFormEmailVerification, setFormOldPassword } from "../actions/auth/reducer.actions"; import { @@ -45,7 +40,7 @@ function* verifyEmailCall(postBody) { try { return yield effects.call(verifyEmail, emailKey); } catch (exception) { - yield effects.put(setEmailVerificationError(exception)); + yield effects.put(setAuthRequestError(exception)); return false; } finally { yield effects.put(isSendingAuthRequest(false)); @@ -133,13 +128,12 @@ export function* registerUserFlow(request) { } export function* verifyEmailFlow(request) { - yield effects.put(clearEmailVerificationSuccess()); - yield effects.put(clearEmailVerificationError()); + yield effects.put(clearAuthRequestSuccess()); + yield effects.put(clearAuthRequestError()); const wasSuccessful = yield effects.call(verifyEmailCall, request.data); if (wasSuccessful) { - yield effects.put(setEmailVerificationSuccess(wasSuccessful)); - yield effects.put(clearEmailVerificationError()); - yield effects.put(setFormEmailVerification("")); + yield effects.put(setAuthRequestSuccess(wasSuccessful)); + yield effects.put(clearAuthRequestError()); } }