Completed Login/Logout/Protected Routes

This commit is contained in:
Alexander Wong
2017-09-03 10:41:10 -06:00
parent 83ddd34c7c
commit 1bf1dad0b9
14 changed files with 342 additions and 54 deletions

View File

@@ -12,9 +12,15 @@ import {
setFormEmail,
setFormPassword,
setFormPasswordConfirmation,
setFormEmailVerification
setFormEmailVerification,
setSelfUserToken
} from "../actions/auth/reducer.actions";
import { registerUser, verifyEmail } from "../api/auth.api";
import {
registerUser,
verifyEmail,
loginUser,
logoutUser
} from "../api/auth.api";
function* registerUserCall(postBody) {
yield effects.put(isSendingAuthRequest(true));
@@ -42,12 +48,29 @@ function* verifyEmailCall(postBody) {
}
}
function* loginUserCall(postBody) {
yield effects.put(isSendingAuthRequest(true));
const { email, password } = postBody;
try {
return yield effects.call(loginUser, email, password);
} catch (exception) {
yield effects.put(setAuthRequestError(exception));
return false;
} finally {
yield effects.put(isSendingAuthRequest(false));
}
}
function* logoutUserCall() {
yield effects.call(logoutUser);
}
export function* registerUserFlow(request) {
yield effects.put(clearAuthRequestSuccess());
yield effects.put(clearAuthRequestError());
const wasSucessful = yield effects.call(registerUserCall, request.data);
if (wasSucessful) {
yield effects.put(setAuthRequestSuccess(wasSucessful));
const wasSuccessful = yield effects.call(registerUserCall, request.data);
if (wasSuccessful) {
yield effects.put(setAuthRequestSuccess(wasSuccessful));
yield effects.put(clearAuthRequestError());
yield effects.put(setFormEmail(""));
yield effects.put(setFormPassword(""));
@@ -58,10 +81,31 @@ export function* registerUserFlow(request) {
export function* verifyEmailFlow(request) {
yield effects.put(clearEmailVerificationSuccess());
yield effects.put(clearEmailVerificationError());
const wasSucessful = yield effects.call(verifyEmailCall, request.data);
if (wasSucessful) {
yield effects.put(setEmailVerificationSuccess(wasSucessful));
const wasSuccessful = yield effects.call(verifyEmailCall, request.data);
if (wasSuccessful) {
yield effects.put(setEmailVerificationSuccess(wasSuccessful));
yield effects.put(clearEmailVerificationError());
yield effects.put(setFormEmailVerification(""));
}
}
export function* loginUserFlow(request) {
yield effects.put(clearAuthRequestSuccess());
yield effects.put(clearAuthRequestError());
const wasSuccessful = yield effects.call(loginUserCall, request.data);
if (wasSuccessful) {
yield effects.put(setSelfUserToken(wasSuccessful.key));
yield effects.put(setAuthRequestSuccess(wasSuccessful));
yield effects.put(clearAuthRequestError());
yield effects.put(setFormEmail(""));
yield effects.put(setFormPassword(""));
yield effects.put(setFormPasswordConfirmation(""));
}
}
export function* logoutUserFlow(request) {
yield effects.put(clearAuthRequestSuccess());
yield effects.put(clearAuthRequestError());
yield effects.call(logoutUserCall);
yield effects.put(setSelfUserToken(""));
}

View File

@@ -1,8 +1,20 @@
import { takeLatest } from "redux-saga/effects";
import { SEND_REGISTER_REQUEST, SEND_EMAIL_VERIFICATION_REQUEST } from "../constants/auth.constants";
import { registerUserFlow, verifyEmailFlow } from "./auth.sagas";
import {
SEND_REGISTER_REQUEST,
SEND_EMAIL_VERIFICATION_REQUEST,
SEND_LOGIN_REQUEST,
SEND_LOGOUT_REQUEST
} from "../constants/auth.constants";
import {
registerUserFlow,
verifyEmailFlow,
loginUserFlow,
logoutUserFlow
} from "./auth.sagas";
export default function* rootSaga() {
yield takeLatest(SEND_REGISTER_REQUEST, registerUserFlow);
yield takeLatest(SEND_EMAIL_VERIFICATION_REQUEST, verifyEmailFlow);
yield takeLatest(SEND_LOGIN_REQUEST, loginUserFlow);
yield takeLatest(SEND_LOGOUT_REQUEST, logoutUserFlow);
}