diff --git a/backend-lambda/getUserVehicles/index.mjs b/backend-lambda/getUserVehicles/index.mjs index 107ff9e..a4ba29d 100644 --- a/backend-lambda/getUserVehicles/index.mjs +++ b/backend-lambda/getUserVehicles/index.mjs @@ -13,6 +13,7 @@ export const handler = async (event) => { } } ); + console.log(event); const authorization = event.headers['Authorization']; return client.connect() diff --git a/backend-lambda/updateMaintenanceHistory/index.mjs b/backend-lambda/updateMaintenanceHistory/index.mjs index 9c369e3..e5e2205 100644 --- a/backend-lambda/updateMaintenanceHistory/index.mjs +++ b/backend-lambda/updateMaintenanceHistory/index.mjs @@ -1,5 +1,6 @@ import { MongoClient, ServerApiVersion } from "mongodb"; import 'dotenv/config'; +import jwt from 'jsonwebtoken'; export const handler = async (event, context) => { @@ -12,32 +13,49 @@ export const handler = async (event, context) => { } } ); - const config_id = event['config_id']; - const email = event['email']; - const { - old_type, old_date, old_maintenance, old_cost, - new_type, new_date, new_maintenance, new_cost - } = event.body; + const authorization = event.headers['Authorization']; + const config_id = event['queryStringParameters'].config_id; + const data = JSON.parse(event.body); + const values = { + old_type: data.old_type, + old_date: data.old_date, + old_maintenance: data.old_maintenance, + old_cost: data.old_cost, + new_type: data.new_type, + new_date: data.new_date, + new_maintenance: data.new_maintenance, + new_cost: data.new_cost + }; return client.connect() .then(async () => { + const token = authorization.split(" ")[1]; + const verified = jwt.verify(token, process.env.JWTSecret); + if (!verified) { + return { + statusCode: 401, + body: JSON.stringify({message: "Token invalid"}) + }; + } + const decoded = jwt.decode(token, process.env.JWTSecret); + const database = client.db("vehicleDB"); const garage = database.collection("user_vehicle_info"); const update = await garage.updateOne( { - email: email, + email: decoded.email, config_id: parseInt(config_id), - "completed_maintenance.type": old_type, - "completed_maintenance.date": old_date, - "completed_maintenance.maintenance": old_maintenance, - "completed_maintenance.cost": parseInt(old_cost) + "completed_maintenance.type": values.old_type, + "completed_maintenance.date": values.old_date, + "completed_maintenance.maintenance": values.old_maintenance, + "completed_maintenance.cost": parseInt(values.old_cost) }, { $set: { - "completed_maintenance.$.type": new_type, - "completed_maintenance.$.date": new_date, - "completed_maintenance.$.maintenance": new_maintenance, - "completed_maintenance.$.cost": parseInt(new_cost) + "completed_maintenance.$.type": values.new_type, + "completed_maintenance.$.date": values.new_date, + "completed_maintenance.$.maintenance": values.new_maintenance, + "completed_maintenance.$.cost": parseInt(values.new_cost) } }); if (update.modifiedCount === 1) { diff --git a/backend-lambda/updateMaintenanceHistory/package.json b/backend-lambda/updateMaintenanceHistory/package.json index 64195c9..0d137fd 100644 --- a/backend-lambda/updateMaintenanceHistory/package.json +++ b/backend-lambda/updateMaintenanceHistory/package.json @@ -1,6 +1,7 @@ { "dependencies": { "dotenv": "^16.4.5", + "jsonwebtoken": "^9.0.2", "mongodb": "^6.5.0" } } diff --git a/frontend/src/pages/garage/AddVehicle.js b/frontend/src/pages/garage/AddVehicle.js index f0e291b..7bc6083 100644 --- a/frontend/src/pages/garage/AddVehicle.js +++ b/frontend/src/pages/garage/AddVehicle.js @@ -142,6 +142,8 @@ function AddVehicle() { const data = await response.json(); if (data.config_id) { setConfigId(data.config_id); + console.log("CONFIG " + data.config_id) + console.log("SELECTED VEHICLE " + selectedVehicle) await addVehicleToUser(); } else { console.log("No config ID found for the selected vehicle."); @@ -152,17 +154,17 @@ function AddVehicle() { }; const addVehicleToUser = async () => { + const myHeaders = new Headers(); + myHeaders.append("Authorization", "Bearer " + localStorage.getItem('token')); + myHeaders.append("Content-Type", "application/json"); + const reqOptions = { + method: 'POST', + header: myHeaders, + body: { config_id: configId }, + redirect: 'follow' + }; try { - const response = await fetch('/api/add-vehicle', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer ' + localStorage.getItem('token') - }, - body: JSON.stringify({ - config_id: configId - }) - }); + const response = await fetch(`/api/add-vehicle?config_id=${configId}`, reqOptions); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); }