diff --git a/api/v1/admin/verifyUser.js b/api/v1/admin/verifyUser.js new file mode 100644 index 0000000..b424f5f --- /dev/null +++ b/api/v1/admin/verifyUser.js @@ -0,0 +1,43 @@ +const express = require('express'); +const jwt = require('jsonwebtoken'); + +const {setVerified, getUser} = require("../../../libs/mysql.js") + +const router = express.Router(); + +router.post('/', async (req, res) => { + const {token, userid} = req.body; + + if (!token) { + return res.status(400).send({error: "invalid token"}); + } + + try { + const user = jwt.verify(token, process.env.JWTSecret); + + if (user.expiration < Date.now()) { + return res.status(400).send({error: "token expired"}); + } + + if (!user.user.admin) { + return res.status(400).send({error: "unauthorized"}); + } + } catch { + return res.status(400).send({error: "invalid token"}); + } + + const user = await getUser(userid); + + if (!user[0]) { + return res.status(400).send({error: "invalid userid"}); + } + + if (user[0].verified) { + return res.status(400).send({error: "user already verified"}); + } + + await setVerified(userid); + res.status(200).send({message: "user verified"}); +}); + +module.exports = router; \ No newline at end of file diff --git a/libs/mysql.js b/libs/mysql.js index 6a93d5b..4c68564 100644 --- a/libs/mysql.js +++ b/libs/mysql.js @@ -128,6 +128,19 @@ function getUnverifiedUsers() { }) } +function setVerified(userid) { + return new Promise((resolve, reject) => { + con.query( + `UPDATE users SET verified = 1 WHERE id = ${userid}`, + (error, result) => { + if (error) { + reject(new Error(error)); + } + resolve(result); + }) + }) +} + module.exports = { getGames, getGame, @@ -139,4 +152,5 @@ module.exports = { addUser, getUnverifiedUsers, + setVerified, }; \ No newline at end of file