diff --git a/backend/routes/auth/login.js b/backend/routes/auth/login.ts similarity index 93% rename from backend/routes/auth/login.js rename to backend/routes/auth/login.ts index 636f048..da4c306 100644 --- a/backend/routes/auth/login.js +++ b/backend/routes/auth/login.ts @@ -1,8 +1,8 @@ import { compare } from "bcrypt"; -import { User } from "../../models/user.js"; import joi from "joi"; import { Router } from "express"; import generateAuthToken from "../../utils/generateToken.js"; +import User from "../../models/user.js"; const router = Router(); router.post("/", async (req, res) => { @@ -34,7 +34,7 @@ router.post("/", async (req, res) => { if (!validPassword) return res.status(401).send("Incorrect pin. Try again."); - user.loginDateTime = Date.now(); + user.updatedAt = new Date(); await user.save(); const token = generateAuthToken(user); diff --git a/backend/routes/auth/logout.js b/backend/routes/auth/logout.js deleted file mode 100644 index caed2a3..0000000 --- a/backend/routes/auth/logout.js +++ /dev/null @@ -1,56 +0,0 @@ -import { User } from "../../models/user.js"; -import { Router } from "express"; -import { Dixon } from "../../models/dixon.js"; -const router = Router(); - -router.patch("/", async (req, res) => { - let username = req.body.username; - try { - let user = await User.findOne({ username: username }).exec(); - if (!user) { - return res.status(400).send("User doesn't exist."); - } - - let machine_ids = user.workouts[user.workouts.length - 1].machines.map( - (machine) => machine.machine_id - ); - let dixon = await Dixon.findOne({ - machine_id: { $in: machine_ids } - }).exec(); - - if (dixon) { - dixon.machine_status = true; - await dixon.save(); - } - - user.workouts[0].workoutEndTimestamp = Date.now(); - - let workoutDuration = - user.workouts[0].workoutEndTimestamp - - user.workouts[0].workoutStartTimestamp; - - workoutDuration = (workoutDuration / 60000).toFixed(2); - - user.workouts[0].workoutDuration = workoutDuration; - - // possibly change this to handle sudden logout - user.workouts[0].machines.forEach((machine) => { - machine.machine_status = true; - }); - - user.savedWorkouts.push(user.workouts[0]); - user.workouts.pop(); - - user.logoutDateTime = Date.now(); - - await user.save(); - - res.status(200).json({ - msg: `User ${user.username} logged out successfully!` - }); - } catch (error) { - res.send(error); - } -}); - -export default router; diff --git a/backend/routes/auth/logout.ts b/backend/routes/auth/logout.ts new file mode 100644 index 0000000..9d91699 --- /dev/null +++ b/backend/routes/auth/logout.ts @@ -0,0 +1,29 @@ +import User from "../../models/user.js"; +import { Router } from "express"; +import Dixon from "../../models/dixon.js"; +const router = Router(); + +router.patch("/", async (req, res) => { + let username = req.body.username; + try { + let user = await User.findOne({ username: username }).exec(); + if (!user) { + return res.status(400).send("User doesn't exist."); + } + + user.updatedAt = new Date(); + + // Delete all dixons associated with the user + await Dixon.deleteMany({ user: user._id }); + + await user.save(); + + res.status(200).json({ + msg: `User ${user.username} logged out successfully!` + }); + } catch (error) { + res.send(error); + } +}); + +export default router; diff --git a/backend/routes/auth/register.js b/backend/routes/auth/register.ts similarity index 89% rename from backend/routes/auth/register.js rename to backend/routes/auth/register.ts index 67cd77f..30da94f 100644 --- a/backend/routes/auth/register.js +++ b/backend/routes/auth/register.ts @@ -1,10 +1,20 @@ import { genSalt, hash } from "bcrypt"; -import { User } from "../../models/user.js"; import joi from "joi"; import { Router } from "express"; import generateAuthToken from "../../utils/generateToken.js"; +import User from '../../models/user.js'; const router = Router(); +interface Register { + username: string; + pin: number; + weight: number; + bloodType?: string; + height: number; + BMI: number; +} + + router.post("/", async (req, res) => { const schema = joi.object({ username: joi.string().min(3).max(200).required(),