You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.2 KiB
JavaScript

import { SET_TOKEN } from "./authTypes";
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
//the json is not ok
return false;
}
//the json is ok
return true;
}
export const login = async (data, dispatchToken) => {
const requestOptions = {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify(data),
};
try {
const response = await fetch(
`http://127.0.0.1:8000/api/token`,
requestOptions
);
if (response.ok) {
const res = await response.json();
window.localStorage.setItem("userToken", res.token);
dispatchToken({ type: SET_TOKEN, token: res.token });
return {
ok: true,
successMessage: "Login Successfull.",
errors: null,
};
} else {
const res = await response.json();
return {
ok: false,
successMessage: null,
errors: { password: res.errors["non_field_errors"] },
};
}
} catch (error) {
alert(error);
}
};
export const register = async (data, dispatchToken) => {
const requestOptions = {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify(data),
};
try {
const response = await fetch(
`http://127.0.0.1:8000/api/register`,
requestOptions
);
if (response.ok) {
const res = await response.json();
window.localStorage.setItem("userToken", res.token);
dispatchToken({ type: SET_TOKEN, token: res.token });
return {
ok: true,
successMessage: "Register Successfull.",
errors: null,
};
} else {
const res = await response.json();
return {
ok: false,
successMessage: null,
errors: res["errors"],
};
}
} catch (error) {
alert(error);
}
};