Skip to content

Commit

Permalink
Merge branch 'refs/heads/backend-lambda' into Bugs-and-errors
Browse files Browse the repository at this point in the history
# Conflicts:
#	backend-lambda/OAuthProcessing/index.mjs
#	backend-lambda/getMaintenance/index.mjs
#	backend-lambda/getUserVehicleOdometers/index.mjs
#	frontend/src/pages/garage/AddVehicle.js
#	frontend/src/pages/vehicle/VehicleInfo.js
  • Loading branch information
BrandonJohnson97 committed Apr 15, 2024
2 parents baa1598 + a82e3ce commit 4d6cbd5
Show file tree
Hide file tree
Showing 23 changed files with 454 additions and 359 deletions.
19 changes: 11 additions & 8 deletions backend-lambda/OAuthProcessing/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,11 @@ export const handler = async (event, context) => {
process.env.OAUTH_CALLBACK_URL
);
const { code } = event['queryStringParameters'];

const { tokens } = await oauthClient.getToken(code);

const url = getAccessAndBearerTokenUrl(tokens.access_token);

const myHeaders = new Headers();

const bearerToken = "Bearer "+tokens.id_token;

myHeaders.append("Authorization", bearerToken);

const reqOptions = {
Expand All @@ -32,8 +28,16 @@ export const handler = async (event, context) => {
.then(response => response.json())
.then(res => {
let user = updateOrCreateUserFromOAuth(res);
console.log("User: ", user.name + " " + user.email)
const token = jwt.sign( {"name":user.name, "email":user.email}, JWTSecret, {expiresIn: '2d'} );
console.log("RES " + JSON.stringify(res));
const payload = {
name: res.name,
email: res.email
}
console.log("PAYLOAD " + JSON.stringify(payload));
const token = jwt.sign( payload, JWTSecret, {expiresIn: '2d'} );
console.log("TOKEN " + token);
console.log("VERIFY " + jwt.verify(token, JWTSecret));
console.log("DECODE " + jwt.decode(token, JWTSecret).name + " " + jwt.decode(token, JWTSecret).email);
return {
statusCode: 302,
headers: {
Expand All @@ -59,8 +63,7 @@ const updateOrCreateUserFromOAuth = async (user) => {
}
);
const { name, email } = user;

console.log("User in function: ", name + " " + email)
console.log("UPDATE OR CREATE FROM OAUTH -- NAME & EMAIL " + name + " " + email)

return client.connect()
.then(async () => {
Expand Down
38 changes: 26 additions & 12 deletions backend-lambda/deleteMaintenanceHistory/index.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {MongoClient, ServerApiVersion} from "mongodb";
import 'dotenv/config';
import jwt from 'jsonwebtoken';

export const handler = async (event, context) => {

Expand All @@ -11,31 +12,44 @@ export const handler = async (event, context) => {
deprecationErrors: true
}
});
const config_id = event['config_id'];
const email = event.headers['email'];
const { type, date, maintenance, cost } = event.body;
const authorization = event.headers['Authorization'];
const config_id = event['queryStringParameters'].config_id;
const data = JSON.parse(event.body);

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);
console.log(decoded.email)
const database = client.db("vehicleDB");
const garage = database.collection("user_vehicle_info");
await garage.updateOne(
return await garage.updateOne(
{
email: email,
email: decoded.email,
config_id: parseInt(config_id)
},
{$pull: { completed_maintenance: {
type: type,
date: date,
maintenance: maintenance,
cost: cost
{$pull:
{
completed_maintenance: {
type: data.type,
date: data.date,
maintenance: data.maintenance,
cost: parseInt(data.cost)
}
}
}
}
);
}).then(res => {
return {
statusCode: 200,
body: JSON.stringify({message: `History deleted: ${type} ${date} ${maintenance} ${cost} deleted from config ${config_id}`})
body: JSON.stringify({message: res})
};
}).catch(err => {
return {
Expand Down
1 change: 1 addition & 0 deletions backend-lambda/deleteMaintenanceHistory/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"dependencies": {
"dotenv": "^16.4.5",
"jsonwebtoken": "^9.0.2",
"mongodb": "^6.5.0"
}
}
25 changes: 12 additions & 13 deletions backend-lambda/getMaintenance/index.mjs
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
import { MongoClient, ServerApiVersion } from "mongodb";
import 'dotenv/config';
import jwt from 'jsonwebtoken'

export const handler = async (event, context) => {
console.log(event);
const uri = process.env.MONGO_URI;
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
}
}
});
const authorization = event.headers['Authorization'];

);
const authorization = event.headers['Authorization'];
const config_id = event['queryStringParameters'].config_id;
const odometer = event['queryStringParameters'].odometer;

const odometer = event['odometer'];

return client.connect()
.then(async () => {
const token = authorization.split(" ")[1];
console.log("Token:", token);
const database = client.db("vehicleDB");
const collection = database.collection("maintenance");
const docObject = await collection.findOne({config_id: config_id});
Expand Down Expand Up @@ -47,7 +46,7 @@ export const handler = async (event, context) => {
}).catch(err => {
return {
statusCode: 500,
body: JSON.stringify({ message: "Internal Server Error" })
body: JSON.stringify({ message: `Internal Server Error: ${err.message}` })
};
}).finally(() => client.close());
};
39 changes: 26 additions & 13 deletions backend-lambda/getMakes/index.mjs
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
import {MongoClient, ServerApiVersion} from "mongodb";
import {MongoClient, ServerApiVersion} from 'mongodb';
import 'dotenv/config';
import jwt from 'jsonwebtoken';

export const handler = async (event, context) => {
console.log(event);
const uri = process.env.MONGO_URI;
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
}
});
const authorization = event.headers['Authorization'];
const carYear = event['queryStringParameters'].year;

export const handler = async (event, content) => {
const uri = process.env.MONGO_URI;
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true
}
});
const carYear = event['year'];

return client.connect()
.then(async () => {
const token = authorization.split(" ")[1];
console.log("Token:", token);
const decoded = jwt.verify(token, process.env.JWTSecret);
if (!decoded) {
return {
statusCode: 401,
body: JSON.stringify({ message: "No token provided" })
};
}
const database = client.db("vehicleDB");
const configurations = database.collection("configurations");
const makes = await configurations.aggregate([
Expand All @@ -30,7 +43,7 @@ export const handler = async (event, content) => {
}).catch(err => {
return {
statusCode: 500,
body: JSON.stringify({ message: `Internal Server Error: ${err.message}` })
body: JSON.stringify({ message: "Internal Server Error" })
};
}).finally(() => client.close());
};
};
72 changes: 29 additions & 43 deletions backend-lambda/getUser/index.mjs
Original file line number Diff line number Diff line change
@@ -1,56 +1,42 @@
import { MongoClient, ServerApiVersion } from 'mongodb';
import 'dotenv/config';
import jwt from 'jsonwebtoken';
import {MongoClient, ServerApiVersion} from 'mongodb';
import 'dotenv/config';
import jwt from 'jsonwebtoken';

export const handler = async (event, context) => {
const uri = process.env.MONGO_URI;
const client = new MongoClient(uri, {
export const handler = async (event, context) => {
const uri = process.env.MONGO_URI;
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
}
}
);
const authorization = event.headers['authorization'];
console.log(authorization);
});
const authorization = event.headers['Authorization'];
console.log(event);

try {
await client.connect();

if (authorization) {
const token = authorization.split(' ')[1];
console.log(`token --- ${token}`);
try {
return client.connect()
.then(async () => {
const token = authorization.split(" ")[1];
console.log("Token:", token);
const decoded = jwt.verify(token, process.env.JWTSecret);
const database = client.db('vehicleDB');
const users = database.collection('users');
const user = await users.findOne({ email: decoded.email });
console.log(user);
if (user) {
return {
statusCode: 200,
body: JSON.stringify(user)
};
} else {
if (!decoded) {
return {
statusCode: 404,
body: JSON.stringify({ message: 'User not found' })
statusCode: 401,
body: JSON.stringify({ message: "Token invalid" })
};
}
} catch (err) {
const database = client.db("vehicleDB");
const users = database.collection("users");
return await users.findOne({email: decoded.email});
}).then(user => {
return {
statusCode: 401,
body: JSON.stringify({ message: 'Unauthorized' })
statusCode: 200,
body: JSON.stringify(user)
};
}
}
} catch (err) {
return {
statusCode: 500,
body: JSON.stringify({ message: `Internal Server Error: ${err.message}` })
};
} finally {
await client.close();
}
};
}).catch(err => {
return {
statusCode: 500,
body: JSON.stringify({ message: "Internal Server Error" })
};
}).finally(() => client.close());
};
19 changes: 17 additions & 2 deletions backend-lambda/getUserVehicles/index.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {MongoClient, ServerApiVersion} from "mongodb";
import 'dotenv/config'
import jwt from 'jsonwebtoken';

export const handler = async (event) => {

Expand All @@ -12,16 +13,30 @@ export const handler = async (event) => {
}
}
);
const email = event['email'];
console.log(event);
const authorization = event.headers['Authorization'];

return client.connect()
.then(async () => {
const token = authorization.split(" ")[1];
console.log("Token:", token);
const verified = jwt.verify(token, process.env.JWTSecret);
if (!verified) {
return {
statusCode: 401,
body: JSON.stringify({ message: "No token provided" })
};
}
const decoded = jwt.decode(token, process.env.JWTSecret);
console.log("Decoded:", decoded);
console.log("name & email: " + decoded.name + " " + decoded.email);

const database = client.db("vehicleDB");
const garage = database.collection("user_garage");
return await garage.aggregate([
{
$match: {
email: email
email: decoded.email
}
},
{
Expand Down
1 change: 1 addition & 0 deletions backend-lambda/getUserVehicles/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"dependencies": {
"dotenv": "^16.4.5",
"jsonwebtoken": "^9.0.2",
"mongodb": "^6.5.0"
}
}
Loading

0 comments on commit 4d6cbd5

Please sign in to comment.