import { call, put } from 'redux-saga/effects'; import { loginFailure, loginSuccess } from '../actions/auth.actions'; import { addMessage } from '../actions/message.actions'; export function* loginSaga(action) { let result; try { result = yield call(doLogin, action.username, action.password); } catch(err) { yield put(loginFailure(action.username, err)); yield put(addMessage('danger', "Une erreur inconnue bloque le fonctionnement normal de l'application. Veuillez réessayer plus tard.")); } if ('error' in result) { yield put(loginFailure(action.username, result.error)); const message = result.error.message ? result.error.message : result.error.toString(); yield put(addMessage('danger', message)); return } yield put(loginSuccess(action.username)); } function doLogin(username, password) { return fetch('http://localhost:8001/api/v1/login', { method: 'POST', body: JSON.stringify({ username: username, password: password }), headers: { 'Content-Type': 'application/json', }, mode: 'cors', credentials: 'include' }).then(res => res.json()) }