54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
const config = require('../../config');
|
|
const express = require('Express');
|
|
const asyncHandler = require('express-async-handler');
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
|
|
async function checkAuthorization(req, res, onVerified)
|
|
{
|
|
if (!req.headers.authorization || req.headers.authorization.split(' ')[0] !== 'Bearer')
|
|
{
|
|
res.sendStatus(400);
|
|
return;
|
|
}
|
|
|
|
var token = req.headers.authorization.split(' ')[1];
|
|
jwt.verify(token, config.jwtSecret, async (err, decoded) =>
|
|
{
|
|
try
|
|
{
|
|
if (err)
|
|
{
|
|
res.sendStatus(403);
|
|
return;
|
|
}
|
|
|
|
if (decoded.userId)
|
|
await onVerified(decoded);
|
|
else
|
|
res.sendStatus(400);
|
|
}
|
|
catch (e)
|
|
{
|
|
console.log(e);
|
|
res.sendStatus(500);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
module.exports = (repository) =>
|
|
{
|
|
var router = express.Router();
|
|
|
|
router.get('/codes', asyncHandler(async (req, res) =>
|
|
{
|
|
await checkAuthorization(req, res, async (decoded) =>
|
|
{
|
|
res.send(await repository.codes.getCodes(decoded.userId));
|
|
});
|
|
}));
|
|
|
|
return router;
|
|
} |