Recv/lib/api/token.js
Mark van Renswoude 7aa680c26d Implemented user admin API
Renamed repository methods for consistency
2018-04-28 10:18:27 +02:00

64 lines
1.3 KiB
JavaScript

const config = require('../../config');
const express = require('Express');
const asyncHandler = require('express-async-handler');
const jwt = require('jsonwebtoken');
module.exports = (repository) =>
{
var router = express.Router();
router.post('/upload', asyncHandler(async (req, res) =>
{
if (!req.body.code)
{
res.sendStatus(400);
return;
}
var userId = await repository.codes.getUserId(req.body.code);
if (userId !== null)
{
jwt.sign({
code: req.body.code,
codeUserId: userId
}, config.jwtSecret, (err, token) =>
{
if (err)
res.sendStatus(500);
else
res.send(token);
});
}
else
res.sendStatus(403);
}));
router.post('/login', asyncHandler(async (req, res) =>
{
if (!req.body.username || !req.body.password)
{
res.sendStatus(400);
return;
}
var user = await repository.users.getLoginUser(req.body.username, req.body.password);
if (user !== null)
{
jwt.sign({
userId: user.id
}, config.jwtSecret, (err, token) =>
{
if (err)
res.sendStatus(500);
else
res.send(token);
});
}
else
res.sendStatus(403);
}));
return router;
}