66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
module.exports = function(app) {
|
|
var express = require('express');
|
|
var jwt = require('jsonwebtoken');
|
|
var authenticateRouter = express.Router();
|
|
|
|
var USERS = [
|
|
{
|
|
id: 1,
|
|
email: 'testA',
|
|
name: 'Test Admin User',
|
|
role: 'A',
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null
|
|
},
|
|
{
|
|
id: 2,
|
|
email: 'testR',
|
|
name: 'Test Read User',
|
|
role: 'R',
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null
|
|
},
|
|
{
|
|
id: 3,
|
|
email: 'testW',
|
|
name: 'Test Write User',
|
|
role: 'W',
|
|
createdAt: "0001-01-01T00:00:00Z",
|
|
updatedAt: "0001-01-01T00:00:00Z",
|
|
deletedAt: null
|
|
}
|
|
]
|
|
|
|
authenticateRouter.post('/', function(req, res) {
|
|
// wait for a bit to simulate cold boot of heroku api
|
|
var ms = 1000 + new Date().getTime();
|
|
while (new Date() < ms){}
|
|
|
|
if ((req.body.email === 'testA' || req.body.email === 'testR' || req.body.email === 'testW' )
|
|
&& req.body.password === 'test') {
|
|
var user = USERS.filter(function(u) {
|
|
if (u.email == req.body.email) {
|
|
return u;
|
|
}
|
|
})[0];
|
|
var token = jwt.sign({
|
|
'name': user.name,
|
|
'role': user.role
|
|
}, 'secret',
|
|
{
|
|
expiresInMinutes: 60,
|
|
issuer: 'bactdb',
|
|
subject: user.id,
|
|
});
|
|
res.send({
|
|
'token': token
|
|
});
|
|
} else {
|
|
res.status(401).send({'error':'Invalid username or password'});
|
|
}
|
|
});
|
|
|
|
app.use('/api/authenticate', authenticateRouter);
|
|
};
|