From 553d484ec45517fd34aa8dabf15c07652f55c90c Mon Sep 17 00:00:00 2001 From: Nicola Iacovelli Date: Mon, 26 Dec 2022 15:57:11 +0100 Subject: [PATCH 1/3] =?UTF-8?q?added=20token=20authentication=20for=20food?= =?UTF-8?q?-track-be=20apis=20=F0=9F=94=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/mealApis.ts | 36 +++++++++++++++++++++++++++--------- src/utils/firebaseUtils.ts | 14 ++++++++++++-- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/api/mealApis.ts b/src/api/mealApis.ts index c000d13..9f31cc1 100644 --- a/src/api/mealApis.ts +++ b/src/api/mealApis.ts @@ -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, } ); @@ -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, } ); @@ -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, }); @@ -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, }); @@ -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, }); @@ -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, }); @@ -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, }); @@ -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, }); @@ -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, } @@ -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, }); @@ -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, }); diff --git a/src/utils/firebaseUtils.ts b/src/utils/firebaseUtils.ts index 7c0cc2e..5ffbb33 100644 --- a/src/utils/firebaseUtils.ts +++ b/src/utils/firebaseUtils.ts @@ -1,5 +1,7 @@ -import { initializeAnalytics } from "firebase/analytics"; -import { initializeApp } from "firebase/app"; +import {initializeAnalytics} from "firebase/analytics"; +import {initializeApp} from "firebase/app"; +import firebase from "firebase/compat"; +import auth = firebase.auth; const apiKey = process.env.REACT_APP_API_KEY; const messagingSenderId = process.env.REACT_APP_MESSAGING_SENDER_ID; @@ -19,4 +21,12 @@ const firebaseConfig = { export const app = initializeApp(firebaseConfig); export const analytics = initializeAnalytics(app); +export const getFirebaseUserToken = async () => { + const user = auth().currentUser; + if (user) { + return await user.getIdToken(); + } + return null; +} + From 42249505ef16574b7e7666fe276bd7692a28be9c Mon Sep 17 00:00:00 2001 From: Nicola Iacovelli Date: Mon, 26 Dec 2022 16:07:00 +0100 Subject: [PATCH 2/3] fix --- src/utils/firebaseUtils.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/utils/firebaseUtils.ts b/src/utils/firebaseUtils.ts index 5ffbb33..cda4f5f 100644 --- a/src/utils/firebaseUtils.ts +++ b/src/utils/firebaseUtils.ts @@ -1,7 +1,6 @@ import {initializeAnalytics} from "firebase/analytics"; import {initializeApp} from "firebase/app"; -import firebase from "firebase/compat"; -import auth = firebase.auth; +import {getAuth} from "firebase/auth"; const apiKey = process.env.REACT_APP_API_KEY; const messagingSenderId = process.env.REACT_APP_MESSAGING_SENDER_ID; @@ -22,7 +21,7 @@ export const app = initializeApp(firebaseConfig); export const analytics = initializeAnalytics(app); export const getFirebaseUserToken = async () => { - const user = auth().currentUser; + const user = getAuth().currentUser; if (user) { return await user.getIdToken(); } From 32a1f45a4ec1d945e9c7cf11204754e1756840a7 Mon Sep 17 00:00:00 2001 From: Nicola Iacovelli Date: Mon, 26 Dec 2022 16:14:17 +0100 Subject: [PATCH 3/3] fix cache --- firebase.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase.json b/firebase.json index 888e26d..63fd5fd 100644 --- a/firebase.json +++ b/firebase.json @@ -29,7 +29,7 @@ ], "headers": [ { - "source": "/**", + "source": "!/api/**", "headers": [ { "key": "Cache-Control",