From 85e32b757f49497630e0884975dfb05efc4822c6 Mon Sep 17 00:00:00 2001
From: Pedro Cardona <pedropca@stud.ntnu.no>
Date: Tue, 28 Nov 2023 13:34:45 +0100
Subject: [PATCH 1/4] Change country endpoint was added

---
 controllers/user.controller.js | 22 ++++++++++++++++++++++
 routes/user.router.js          | 22 ++++++++++++++++++++++
 2 files changed, 44 insertions(+)

diff --git a/controllers/user.controller.js b/controllers/user.controller.js
index 27d0548..9d2ef61 100644
--- a/controllers/user.controller.js
+++ b/controllers/user.controller.js
@@ -335,6 +335,27 @@ async function getUsersByPartialName(partialName) {
     }
 }
 
+async function changeCountry(country, token) {
+    let client;
+    try {
+        client = await connectToDatabase();
+        const db = client.db("TrioTech");
+        const userCollection = db.collection("users");
+        const id = await getUserId(token);
+        if (!id) throw new Error("Invalid user data");
+        const user = await userCollection.findOne({ _id: new ObjectId(id) });
+        if (!user) throw new Error("User not found");
+        await userCollection.updateOne({ _id: new ObjectId(id) }, { $set: { country: country } });
+        return true;
+    } catch (error) {
+        throw error;
+    } finally {
+        if (client) {
+            await client.close();
+        }
+    }
+}
+
 module.exports = {
     createUser,
     getUser,
@@ -345,4 +366,5 @@ module.exports = {
     changeAvatar,
     getActiveUser,
     getUsersByPartialName,
+    changeCountry,
 };
diff --git a/routes/user.router.js b/routes/user.router.js
index 2eea741..5c3333b 100644
--- a/routes/user.router.js
+++ b/routes/user.router.js
@@ -411,4 +411,26 @@ router.get("/getUsers/:name", async (req, res) => {
     }
 });
 
+router.put("/changeCountry", async (req, res) => {
+    try {
+        if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(!req.body.country) {
+            logger.warn("No country provided to change user country");
+            return res.status(400).send("No country provided");
+        }
+        logger.info("User id was requested successfully.");
+        res.status(200).send(await usersController.changeCountry(req.body.country, req.cookies.jwt));
+    } catch (err) {
+        logger.error("User id was requested but failed with error: " + err);
+        let code = 500;
+        if (err.message == "Invalid user data") {
+            code = 400;
+        }
+        if (err.message == "User not found") {
+            code = 404;
+        }
+        res.status(code).send(err);
+    }
+});
+
 module.exports = router;
-- 
GitLab


From d2b8f25a334ccd5eef38c7969821720e57ec3aaa Mon Sep 17 00:00:00 2001
From: Magnus Lutro Allison <magnulal@stud.ntnu.no>
Date: Thu, 30 Nov 2023 10:22:57 +0100
Subject: [PATCH 2/4] Added metmask user check to endpoints

---
 controllers/authentication.controller.js |   2 +-
 controllers/metamask.controller.js       |   8 +++++++-
 controllers/user.controller.js           |   2 --
 images/1701260292099-1e1c2f41.png        | Bin 0 -> 30435 bytes
 images/1701266730269-539f81d1.png        | Bin 0 -> 23427 bytes
 images/1701335380805-bf0dce56.png        | Bin 0 -> 2859 bytes
 routes/authority.router.js               |   2 ++
 routes/twoFactor.router.js               |   3 +++
 routes/user.router.js                    |   9 +++++++--
 utils/routersUtils.js                    |  22 +++++++++++++++++++++-
 10 files changed, 41 insertions(+), 7 deletions(-)
 create mode 100644 images/1701260292099-1e1c2f41.png
 create mode 100644 images/1701266730269-539f81d1.png
 create mode 100644 images/1701335380805-bf0dce56.png

diff --git a/controllers/authentication.controller.js b/controllers/authentication.controller.js
index 978d727..40bbc5a 100644
--- a/controllers/authentication.controller.js
+++ b/controllers/authentication.controller.js
@@ -194,7 +194,7 @@ async function generateJWT(fingerprint, token_header) {
             { $set: { last_active: new Date() } },
         );
         user.last_active = new Date();
-        const generateJWT = await jwt.sign(user, JWT_SECRET, { expiresIn: "1h" });
+        const generateJWT = await jwt.sign(user, JWT_SECRET, { expiresIn: "1h" }); //TODO: make util method
         return generateJWT;
     } catch (error) {
         throw error;
diff --git a/controllers/metamask.controller.js b/controllers/metamask.controller.js
index e6f7fa9..3383a88 100644
--- a/controllers/metamask.controller.js
+++ b/controllers/metamask.controller.js
@@ -34,8 +34,14 @@ async function metamaskOneTimeLogin(requestBody) {
         "timestamp": requestBody.timestamp,
         "avatar_url": "/images/MetaMask_fox.svg",
         "last_active": requestBody.timestamp,
-        "style": "linear-gradient(60deg, #70FFA6 0%, #70D6FF 100%)"
+        "style": "linear-gradient(60deg, #70FFA6 0%, #70D6FF 100%)",
+        "metamask": true,  
     }
+
+    //TODO: 
+//IMPLEMENT CHECKPOINT FOR verifying that the user is a metamask user (the flag seen in localstorage)
+
+
     return {
         jwt_token: jwt.sign({ tempUser }, JWT_SECRET, { expiresIn: "1h" }),
         user: tempUser,
diff --git a/controllers/user.controller.js b/controllers/user.controller.js
index 594a5e5..15fdba7 100644
--- a/controllers/user.controller.js
+++ b/controllers/user.controller.js
@@ -212,8 +212,6 @@ async function changeStyle(style, token) {
 async function getUserId(token) {
     if (!token) throw new Error("Invalid token: Token is missing.");
     const decodedToken = await decryptToken(token);
-    console.log("Decoded token: ");
-    console.log(decodedToken);
     const userId = decodedToken.user?._id ?? decodedToken._id;
     return userId;
 }
diff --git a/images/1701260292099-1e1c2f41.png b/images/1701260292099-1e1c2f41.png
new file mode 100644
index 0000000000000000000000000000000000000000..27d36488c9aad481783d989cd3afad6b9dd6396d
GIT binary patch
literal 30435
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

literal 0
HcmV?d00001

diff --git a/images/1701266730269-539f81d1.png b/images/1701266730269-539f81d1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e09968d1e15a7d5342bb6e034948f46ed32757b5
GIT binary patch
literal 23427
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
Kvh<;8(Ek9Zf(n)Z

literal 0
HcmV?d00001

diff --git a/images/1701335380805-bf0dce56.png b/images/1701335380805-bf0dce56.png
new file mode 100644
index 0000000000000000000000000000000000000000..147f498d0015a6c16c8ab3d0a2f2b15b9edfa8ae
GIT binary patch
literal 2859
zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn25lDE4H!+#K5uy^@n1_rJN
zo-U3d6?5L+Io~z6T=w|K_cLdj%!-i7^yXE%(Zn5Cc(GMPM<c3=eJ}IDRDq9tA~9XD
zRjhg};&G1Mt|bqTDJ;DjqOro$;K(0C<CikxjH)VARW8p=_q(_L`l}CTD&_1p&ocjP
zZM^!k__f!J3_;tb$uTg<*fTOPI07Bl#KOS9!pXqEA;iESpu)hQ;K9J)FoA)gL19$E
z5DbShP~_U|y1M51ZvB5x7T&8ii2nT9{{M%0*}%9qyO4G5^O=|X?XOf{-@NPnEM;P%
zJ!<a$4RQLmObitz=jZ*q?YuYNcJ<Dp-#@F@{R}_AuwkLz{eN$g?`tzKB&40I{j|Qg
z?Dwxr#(llO6g2bav*P{p^yk#3zmz=g#=wx%FugqeT#o+UM+euvIsfP3txMV!AxsPj
z%r&oP&U`*Es_JO--ePBl9Hn|TjsZ`b3+66mXDB$b?qBk=aQof=e}(Te{Cp|<`2Kcb
zM_>TI<g=Tzv-I!3*T1We?{5`8EQpkeo)|MQ`0tt<Y<#}<-@n)MZ`uCSog)GA=AMuL
z&U|}S_`a^}S@!+<57Y0}-bw#={@=le^ACO$W?+zhaBJ>T@efNrN)i(-lxNplkyQ)~
z>eo;2_SUzso8R}>rKff`gUy<&XZF<Py%atE{MDH^y0(ubESb>Cf}a8k3}?=~tI1Eh
z)?ad7`u+JoPoG_UW0?g^U}?|Z-M3vM_p<Nn85x<A(-uGHpkD#=R>zj%hR*u)`f1sG
z)8-vitTmWF+x+>|rRf`hC7I2n_2=_h4+uZ#|D4JwKu>28U9@i5{DpzRZ=H8FFgk92
z<C_-u;Rmp2=HD`Jru_cxU%2|Zh{~;$CyU`_LPqJoLsfgfa3mDZnK|3r|3UJHhdJlp
zTJHVABL)iagw1#67<>CO*s=8u_Not*T|ZomtNk~<I4isUrKI%BwchK`ZnfU+eZE21
zo8bWGx2t#WpMANuUf(uZ`R~8^>p2*H*vl{ur^*~$CLfrbmu>p_%eTAN|L-y`-tcD5
zOkm+#@Z{Xwc|Q+wm&gBqv3KU_>eKIL76NmRXB{&GgZrCH_s;n1->a=Ht-q-GUzLI3
zLC0I!GckL%e(9>lDBXz8uLRplp!D@%@!r~}w~Mp3)~`t4^JV7tXTrD5`S(6;j@CbO
zR65?~OL5=nUTc4STSh+<Mh5j8x2Nwfev!VX;+y~G-&dwO+dseiI)2vun7XeQ&NKS8
sUH!@Z`s*cShK9#afmO`VX{^1l-`C%+nj^dd*rEi+iL0N>I;Vst03S$jg#Z8m

literal 0
HcmV?d00001

diff --git a/routes/authority.router.js b/routes/authority.router.js
index dd51368..9346136 100644
--- a/routes/authority.router.js
+++ b/routes/authority.router.js
@@ -9,6 +9,7 @@ router.get("/get", async (req, res) => {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) {
             return;
         }
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         const authority = await authorityController.getAuthority(req.cookies.jwt);
         if (!authority) {
             logger.warn("The authority was requested but not found");
@@ -30,6 +31,7 @@ router.put("/setAdmin", async (req, res) => {
         if (await routersUtils.validateAuthority(res, req.cookies.jwt)) {
             return;
         }
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         if(!req.body.username){
             logger.warn("No body provided to set admin");
             return res.status(400).send("No body provided");
diff --git a/routes/twoFactor.router.js b/routes/twoFactor.router.js
index 503164b..1545de8 100644
--- a/routes/twoFactor.router.js
+++ b/routes/twoFactor.router.js
@@ -47,6 +47,7 @@ const routersUtils = require("../utils/routersUtils");
 router.post("/add", async (req, res) => {
     try {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         const twoFactor = await twoFactorController.addTwoFactor(req.cookies.jwt);
         console.log(twoFactor);
         if (!twoFactor) {
@@ -72,6 +73,7 @@ router.post("/add", async (req, res) => {
 router.get("/has2fa", async (req, res) => {
     try {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         if(await twoFactorController.hasTwoFactorEnabled(req.cookies.jwt)){
             logger.info("The user has two factor enabled");
             res.status(200).send("true");
@@ -97,6 +99,7 @@ router.get("/has2fa", async (req, res) => {
 router.delete("/delete", async (req, res) => {
     try {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         res.status(200).json(await twoFactorController.removeTwoFactor(req.cookies.jwt));
     } catch (err) {
         let code = 500;
diff --git a/routes/user.router.js b/routes/user.router.js
index 4570e3c..e3e180b 100644
--- a/routes/user.router.js
+++ b/routes/user.router.js
@@ -58,7 +58,7 @@ const routersUtils = require("../utils/routersUtils");
  *                 error:
  *                   type: string
  */
-router.get("/id/:name", async (req, res) => {
+router.get("/id/:name", async (req, res) => { //TODO: eval removal
     try {
         const user = await usersController.getUser(req.params.name);
         if (!user) {
@@ -228,11 +228,12 @@ router.get("/image/:name", async (req, res) => {
  */
 router.put("/style", async (req, res) => {
     try {
+        if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         if(!req.body.style) {
             logger.warn("No style provided to change user style");
             return res.status(400).send("No style provided");
         }
-        if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
         res.status(200).send(await usersController.changeStyle(req.body.style, req.cookies.jwt));
     } catch (err) {
         let code = 500;
@@ -311,6 +312,7 @@ router.get("/userId", async (req, res) => {
 router.put("/changePassword", async (req, res) => {
     try {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         if (!req.body || !req.body.old || !req.body.updated) {
             logger.warn("No password provided to change user password");
             return res.status(400).send("No password provided");
@@ -351,6 +353,7 @@ router.put("/changePassword", async (req, res) => {
 router.put("/changeAvatar", async (req, res) => {
     try {
         if( await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         logger.info("User id was requested successfully.");
         res.status(200).send(await usersController.changeAvatar(req.cookies.jwt));
     } catch (err) {
@@ -397,7 +400,9 @@ router.get("/activeUsers", async (req, res) => {
 router.get("/getUsers/:name", async (req, res) => {
     try {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         if (await routersUtils.validateAuthority(res, req.cookies.jwt)) return;
+    
         if(!req.params.name) {
             logger.warn("No name provided to get users");
             return res.status(400).send("No name provided");
diff --git a/utils/routersUtils.js b/utils/routersUtils.js
index 5bfa391..4c61afe 100644
--- a/utils/routersUtils.js
+++ b/utils/routersUtils.js
@@ -31,7 +31,27 @@ async function validateAuthority(res,jwt){
     return false;
 }
 
+async function isMetamaskUser(res,jwt){ //TODO; register person in blockchain when logging in as metamask user
+    try {
+        const decodedToken = await verifyJWT(jwt);
+        console.log(decodedToken);
+        const isMetamaskUser = decodedToken.tempUser.metamask;
+        if(isMetamaskUser){
+            console.log("is metamask user");
+            logger.error("Invalid authority");
+            res.status(423).send("Invalid authority");
+            return true;
+        }
+        return false;
+    }catch(error){
+        logger.error("Invalid authority due to error: " + error.message);
+        res.status(423).send("Invalid authority due to error: " + error.message);
+        return true;
+    }
+}
+
 module.exports = {
     validateToken,
-    validateAuthority
+    validateAuthority,
+    isMetamaskUser,
 }
-- 
GitLab


From 7a31dcf63f1375f02b0b83d5188d608beff413f6 Mon Sep 17 00:00:00 2001
From: Magnus Lutro Allison <magnulal@stud.ntnu.no>
Date: Thu, 30 Nov 2023 10:25:34 +0100
Subject: [PATCH 3/4] Add check for Metamask user in changeCountry route

---
 routes/user.router.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/routes/user.router.js b/routes/user.router.js
index ad1f8e3..146b9ef 100644
--- a/routes/user.router.js
+++ b/routes/user.router.js
@@ -419,6 +419,7 @@ router.get("/getUsers/:name", async (req, res) => {
 router.put("/changeCountry", async (req, res) => {
     try {
         if (await routersUtils.validateToken(res, req.cookies.jwt)) return;
+        if(await routersUtils.isMetamaskUser(res, req.cookies.jwt)) return;
         if(!req.body.country) {
             logger.warn("No country provided to change user country");
             return res.status(400).send("No country provided");
-- 
GitLab


From 453233d0e72b8c666b1b4fd8a3ae8e5adf1d85ff Mon Sep 17 00:00:00 2001
From: Magnus Lutro Allison <magnulal@stud.ntnu.no>
Date: Thu, 30 Nov 2023 11:19:32 +0100
Subject: [PATCH 4/4] Added ? operator to make isMetamaskUser func solid

---
 utils/routersUtils.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/utils/routersUtils.js b/utils/routersUtils.js
index 4c61afe..35c1130 100644
--- a/utils/routersUtils.js
+++ b/utils/routersUtils.js
@@ -35,7 +35,7 @@ async function isMetamaskUser(res,jwt){ //TODO; register person in blockchain wh
     try {
         const decodedToken = await verifyJWT(jwt);
         console.log(decodedToken);
-        const isMetamaskUser = decodedToken.tempUser.metamask;
+        const isMetamaskUser = decodedToken.tempUser?.metamask;
         if(isMetamaskUser){
             console.log("is metamask user");
             logger.error("Invalid authority");
-- 
GitLab