From 325d37f0de4bf8f8824fc57f0669e3952fab00e5 Mon Sep 17 00:00:00 2001 From: Clayton Wilson Date: Thu, 31 Oct 2019 15:12:22 -0400 Subject: [PATCH] Back-end for verifying users --- functions/handlers/users.js | 52 +++++++++++++++++++++++++++++++++++++ functions/index.js | 12 ++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/functions/handlers/users.js b/functions/handlers/users.js index 1ff9298..e1f58fe 100644 --- a/functions/handlers/users.js +++ b/functions/handlers/users.js @@ -308,4 +308,56 @@ exports.getAuthenticatedUser = (req, res) => { }); }; +// Verifies the user sent to the request +// Must be run by the Admin user +exports.verifyUser = (req, res) => { + if (req.userData.handle !== "Admin") { + return res.status(403).json({error: "This must be done as Admin"}); + } + db.doc(`/users/${req.body.user}`) + .get() + .then((doc) => { + if (doc.exists) { + let verifiedUser = doc.data(); + verifiedUser.verified = true; + return db.doc(`/users/${req.body.user}`).set(verifiedUser, {merge: true}); + } else { + return res.status(400).json({error: `User ${req.body.user} was not found`}); + } + }) + .then(() => { + return res.status(201).json({message: `${req.body.user} is now verified`}); + }) + .catch((err) => { + console.error(err); + return res.status(500).json({error: err.code}); + }); +} + +// Unverifies the user sent to the request +// Must be run by admin +exports.unverifyUser = (req, res) => { + if (req.userData.handle !== "Admin") { + return res.status(403).json({error: "This must be done as Admin"}); + } + + db.doc(`/users/${req.body.user}`) + .get() + .then((doc) => { + if (doc.exists) { + let unverifiedUser = doc.data(); + unverifiedUser.verified = false; + return db.doc(`/users/${req.body.user}`).set(unverifiedUser, {merge: true}); + } else { + return res.status(400).json({error: `User ${req.body.user} was not found`}); + } + }) + .then(() => { + return res.status(201).json({message: `${req.body.user} is no longer verified`}); + }) + .catch((err) => { + console.error(err); + return res.status(500).json({error: err.code}); + }); +} \ No newline at end of file diff --git a/functions/index.js b/functions/index.js index 33ce166..59bc8db 100644 --- a/functions/index.js +++ b/functions/index.js @@ -16,7 +16,9 @@ const { login, signup, deleteUser, - updateProfileInfo + updateProfileInfo, + verifyUser, + unverifyUser } = require("./handlers/users"); // Adds a user to the database and registers them in firebase with @@ -41,6 +43,14 @@ app.post("/updateProfileInfo", fbAuth, updateProfileInfo); app.get("/user", fbAuth, getAuthenticatedUser); +// Verifies the user sent to the request +// Must be run by the Admin user +app.post("/verifyUser", fbAuth, verifyUser); + +// Unverifies the user sent to the request +// Must be run by admin +app.post("/unverifyUser", fbAuth, unverifyUser); + /*------------------------------------------------------------------* * handlers/post.js * *------------------------------------------------------------------*/