import * as types from '../types'; export const setToken = (data) => { return { type: types.auth.set_token, data } } export const setError = (data) => { return { type: types.auth.set_error, data } } export const setCurrentUser = (data) => { return { type: types.auth.set_current_user, data } } export function logout() { return { type: types.auth.logout_user }; } export function authLoading() { return { type: types.auth.loading }; } export function InvalidCredentialsException(message) { this.message = message; this.name = 'InvalidCredentialsException'; } export function login(username, password) { return (dispatch) => { dispatch(authLoading()); apiClient() .post(api.GET_TOKEN, { username, password }) .then(function (response) { dispatch(setToken(response.data.token)); dispatch(getCurrentUser()); }) .catch(function (error) { dispatch(setError(true)); if (error.response.status === 400) { throw new InvalidCredentialsException(error); } throw error; }); }; } export function signup(data) { return (dispatch) => { dispatch(authLoading()); apiClient() .post(api.SIGNUP, data) .then(function (response) { console.log(response.data); dispatch(login(data.username, data.password)); }) .catch(function (error) { console.log(error) if (error.response.status === 400) { // dispatch(accountError("There was an error creating your account.")) throw new InvalidCredentialsException(error); } throw error; }); }; } export function getCurrentUser() { return (dispatch) => { dispatch(authLoading()); apiClient() .get(api.CURRENT_USER) .then(function (response) { dispatch(setCurrentUser(response.data)); console.log('set current user') }) .catch(function (error) { if (error.response.status === 400) { throw new InvalidCredentialsException(error); } throw error; }); }; }