Calling protected API Endpoint
Ubah default json menjadi true
HttpService.js
import axios from 'axios';
import logger from './LogService';
import { toast } from 'react-toastify';
axios.interceptors.response.use(null, error => {
const expectedError =
error.response &&
error.response.status >= 400 &&
error.response.status < 500;
if (!expectedError) {
logger.log(error);
toast.error("An unexpected error occurrred.");
}
return Promise.reject(error);
});
function setJwt(jwt) {
axios.defaults.headers.common["x-auth-token"] = jwt;
}
export default {
get: axios.get,
post: axios.post,
put: axios.put,
delete: axios.delete,
setJwt
};
AuthService.js
import jwtDecode from 'jwt-decode';
import http from './HttpService';
const apiEndpoint = 'http://localhost:3900/api/auth';
const tokenKey = "token";
http.setJwt(getJwt());
export async function login(email, password) {
const { data: jwt } = await http.post(apiEndpoint, { email, password });
localStorage.setItem(tokenKey, jwt);
}
export function loginWithJwt(jwt) {
localStorage.setItem(tokenKey, jwt);
}
export function logout() {
localStorage.removeItem(tokenKey);
}
export function getCurrentUser() {
try {
const jwt = localStorage.getItem(tokenKey)
return jwtDecode(jwt);
} catch (error) {
return null;
}
}
export function getJwt() {
return localStorage.getItem(tokenKey);
}
export default {
login,
loginWithJwt,
logout,
getCurrentUser,
getJwt
}
Last updated
Was this helpful?