45 lines
No EOL
1.2 KiB
JavaScript
45 lines
No EOL
1.2 KiB
JavaScript
const express = require('express');
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
const { getConnection, setVerified, getUser } = require("../../../libs/mysql.js")
|
|
|
|
const router = express.Router();
|
|
|
|
router.post('/', async (req, res) => {
|
|
const {token, username} = 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 connection = await getConnection();
|
|
const user = await getUser(connection, username);
|
|
|
|
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(connection, username);
|
|
connection.end()
|
|
res.status(200).send({message: "user verified"});
|
|
});
|
|
|
|
module.exports = router; |