Skip to content

Commit

Permalink
Merge pull request #43 from nico-iaco/feature/firebaseTokenForBackend
Browse files Browse the repository at this point in the history
added token authentication for food-track-be apis 🔒
  • Loading branch information
nico-iaco authored Dec 26, 2022
2 parents 5c2dd7a + 32a1f45 commit 49d76d0
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 12 deletions.
2 changes: 1 addition & 1 deletion firebase.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
],
"headers": [
{
"source": "/**",
"source": "!/api/**",
"headers": [
{
"key": "Cache-Control",
Expand Down
36 changes: 27 additions & 9 deletions src/api/mealApis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,21 @@ import {Meal} from "../model/meal";
import {FoodConsumption} from "../model/foodConsumption";
import {MealStatistic} from "../model/mealStatistic";
import {format} from "date-fns";
import {getFirebaseUserToken} from "../utils/firebaseUtils";


export const baseUrl = process.env.REACT_APP_BASE_URL_FT;

export const addMeal = async (meal: Meal, controller: AbortController) => {
const url = `${baseUrl}/meal/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.post(
url,
meal,
{
headers: {
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
}
);
Expand All @@ -23,9 +28,13 @@ export const addMeal = async (meal: Meal, controller: AbortController) => {

export const getAllMeals = async (controller: AbortController) => {
const url = `${baseUrl}/meal/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.get(
url,
{
headers: {
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
}
);
Expand All @@ -37,9 +46,10 @@ export const getAllMealInDateRange = async (startDate: Date, endDate: Date, user
const formattedStartDate = format(new Date(startDate), "dd-MM-yyyy")
const formattedEndDate = format(new Date(endDate), "dd-MM-yyyy")
const url = `${baseUrl}/meal/?startRange=${formattedStartDate}&endRange=${formattedEndDate}`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.get(url, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -52,9 +62,10 @@ export const getAllMealInDateRange = async (startDate: Date, endDate: Date, user

export const getMealStatistics = async (userid: string, controller: AbortController) => {
const url = `${baseUrl}/meal/statistics/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.get(url, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -68,10 +79,11 @@ export const getMealStatistics = async (userid: string, controller: AbortControl
export const getMealStatisticsInDateRange = async (startDate: Date, endDate: Date, userid: string, controller: AbortController) => {
const formattedStartDate = format(new Date(startDate), "dd-MM-yyyy")
const formattedEndDate = format(new Date(endDate), "dd-MM-yyyy")
const token = await getFirebaseUserToken();
const url = `${baseUrl}/meal/statistics/?startRange=${formattedStartDate}&endRange=${formattedEndDate}`;
const axiosResponse = await axios.get(url, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -84,9 +96,10 @@ export const getMealStatisticsInDateRange = async (startDate: Date, endDate: Dat

export const updateMeal = async (meal: Meal, userid: string, controller: AbortController) => {
const url = `${baseUrl}/meal/${meal.id}/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.patch(url, meal, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -99,9 +112,10 @@ export const updateMeal = async (meal: Meal, userid: string, controller: AbortCo

export const deleteMeal = async (id: string, userid: string, controller: AbortController) => {
const url = `${baseUrl}/meal/${id}/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.delete(url, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -114,9 +128,10 @@ export const deleteMeal = async (id: string, userid: string, controller: AbortCo

export const getMealFoodConsumptions = async (mealId: string, userid: string, controller: AbortController) => {
const url = `${baseUrl}/meal/${mealId}/consumption/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.get(url, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -129,12 +144,13 @@ export const getMealFoodConsumptions = async (mealId: string, userid: string, co

export const addMealFoodConsumption = async (mealId: string, foodConsumption: FoodConsumption, userid: string, controller: AbortController) => {
const url = `${baseUrl}/meal/${mealId}/consumption/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.post(
url,
foodConsumption,
{
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
}
Expand All @@ -148,9 +164,10 @@ export const addMealFoodConsumption = async (mealId: string, foodConsumption: Fo

export const updateMealFoodConsumption = async (mealId: string, foodConsumption: FoodConsumption, userid: string, controller: AbortController) => {
const url = `${baseUrl}/meal/${mealId}/consumption/${foodConsumption.id}/`;
const token = await getFirebaseUserToken();
const axiosResponse = await axios.patch(url, foodConsumption, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand All @@ -162,10 +179,11 @@ export const updateMealFoodConsumption = async (mealId: string, foodConsumption:
}

export const deleteMealFoodConsumption = async (mealId: string, foodConsumptionId: string, userid: string, controller: AbortController) => {
const token = await getFirebaseUserToken();
const url = `${baseUrl}/meal/${mealId}/consumption/${foodConsumptionId}/`;
const axiosResponse = await axios.delete(url, {
headers: {
"iv-user": userid
"Authorization": `Bearer ${token}`
},
signal: controller.signal,
});
Expand Down
13 changes: 11 additions & 2 deletions src/utils/firebaseUtils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { initializeAnalytics } from "firebase/analytics";
import { initializeApp } from "firebase/app";
import {initializeAnalytics} from "firebase/analytics";
import {initializeApp} from "firebase/app";
import {getAuth} from "firebase/auth";

const apiKey = process.env.REACT_APP_API_KEY;
const messagingSenderId = process.env.REACT_APP_MESSAGING_SENDER_ID;
Expand All @@ -19,4 +20,12 @@ const firebaseConfig = {
export const app = initializeApp(firebaseConfig);
export const analytics = initializeAnalytics(app);

export const getFirebaseUserToken = async () => {
const user = getAuth().currentUser;
if (user) {
return await user.getIdToken();
}
return null;
}


0 comments on commit 49d76d0

Please sign in to comment.