import axios from 'axios';
import { logout } from '../middelware/auth';
export const LOGIN_TOKEN = 'token';
export const keys = [LOGIN_TOKEN];
// export const BASE_URL = 'http://192.168.1.29:8888/.netlify/functions/api/';
export const BASE_URL = 'https://diamand-api.netlify.app/.netlify/functions/api/';
// export const BASE_URL = 'http://192.168.2.36:8000/api/';
const apiAxios = axios.create({
baseURL: BASE_URL,
headers: {
Accept: 'application/json',
'Content-type': 'application/json',
},
});
const uploadImageAxiosApi = axios.create({
baseURL: BASE_URL,
headers: {
Accept: 'application/json', 'content-type': 'multipart/form-data',
},
});
export const getToken = async () => {
return await localStorage.getItem(LOGIN_TOKEN);
};
export const setToken = async (token:any) => {
// apiAxios.defaults.headers.common["Authorization"] = `Bearer ${token}`;
return await localStorage.setItem(LOGIN_TOKEN, token);
};
apiAxios.interceptors.request.use(async (config) => {
const token = await getToken();
if (token) {
config.headers.Authorization = ` ${token}`;
}
return config;
});
uploadImageAxiosApi.interceptors.request.use(async (config) => {
const token = await getToken();
if (token) {
config.headers.Authorization = ` ${token}`;
}
return config;
});
const axiosError = (setIsLoggedIn:any)=>{
apiAxios.interceptors.response.use(
function (response) {
return response;
},
function (error) {
if (error && error.response && error.response.status === 401) {
logout()
setIsLoggedIn(false)
}
return Promise.reject(error);
}
);
uploadImageAxiosApi.interceptors.response.use(
function (response) {
return response;
},
function (error) {
if (error && error.response && error.response.status === 401) {
logout()
setIsLoggedIn(false)
}
return Promise.reject(error);
}
);
}
export {uploadImageAxiosApi , axiosError}
export default apiAxios;
////////////////////////////////////////////////
middlewer
=========
// auth.js
import UserService from "../Services/UserService";
// Constants
const TOKEN_KEY = 'token';
// Function to set the user's authentication token in AsyncStorage
export const setAuthToken = async (token:any) => {
try {
await localStorage.setItem(TOKEN_KEY, token);
} catch (error) {
console.error('Error setting auth token:', error);
}
};
// Function to get the user's authentication token from localStorage
export const getAuthToken = async () => {
try {
const token = await localStorage.getItem(TOKEN_KEY);
return token;
} catch (error) {
console.error('Error getting auth token:', error);
return null;
}
};
// Function to remove the user's authentication token from localStorage
export const removeAuthToken = async () => {
try {
await localStorage.removeItem(TOKEN_KEY);
} catch (error) {
console.error('Error removing auth token:', error);
}
};
// Function to check if the user is authenticated
export const isAuthenticated = async () => {
const token = await getAuthToken();
return !!token; // Returns true if the token exists, indicating the user is authenticated
};
// Function to perform user login
export const login = async (values:any) => {
try {
const response = await UserService.userLogin(values)
if (response.status === 200) {
const token = response.data.token;
// const userId = response.data.user.id;
await setAuthToken(token);
// await localStorage.setItem('userId',userId)
return { success: true, data: response.data };
} else {
console.error('Login failed:', response.data);
return { success: false, error: response.data };
}
} catch (error) {
console.error('Error during login:', error);
return false;
}
};
// Function to perform user logout
export const logout = async () => {
await removeAuthToken();
await localStorage.removeItem('userId');
};
////////////////////////////////////////
import axiosApi,{uploadImageAxiosApi} from "../utils/axiosapi"
const UserService = {
userLogin: (data:any) => axiosApi.post('user/password-login', data).then((resp:any) => {
return resp
}).catch((error:any) => {
return error.response;
}),
//product list
fetchProductList: ({data,type}:any) => axiosApi.get(`${type}/`,data).then((resp: any) => {
return resp
}),
};
export default UserService;
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter