apt-maintenance-account
Version:
Apartment Maintenance Account Tracking Application - Client Side in Angular
73 lines (61 loc) • 1.67 kB
JavaScript
var jsonServer = require('json-server');
var server = jsonServer.create();
var router = jsonServer.router('./db.json');
var data = require('./db.json');
var jwt = require('jsonwebtoken');
var _ = require('lodash');
var middlewares = jsonServer.defaults();
var port = 3000;
var jwtSecretKey = "hHu4zxai9Opt54bq";
// Set default middlewares (logger, static, cors and no-cache)
server.use(middlewares);
// Add custom routes before JSON Serve router
server.get('/echo', function(req, res){
res.jsonp(req.query);
});
// temporary testing
server.get('/api/maintenance-accounts', function(req, res){
return [
{ id: 1, name: 'test1'},
{ id: 2, name: 'test2'}
];
});
// To handle POST, PUT and PATCH, a body-parser is needed
server.use(jsonServer.bodyParser);
server.post('/api/login', function(req, res){
let user = getUser(req.body.email, req.body.password);
let id_token = null;
if(user) {
id_token = getToken(user);
}
res.jsonp({
id_token: id_token
});
});
server.use(function(req, res, next) {
if(req.method === 'POST') {
req.body.createdAt = Date.now();
}
// Continue to JSON Server router
next();
});
// Use default router ...
// Mount the router on another endpoint; here, it is '/api'
server.use('/api', router);
server.listen(port, () => {
console.log('JSON Server is running on port# '+port);
});
// private methods
function getUser(email, password){
let user = data.users.find(each =>
each.email === email
&& each.password === password);
return user;
}
function getToken(user) {
return jwt.sign(
_.omit(user, ['password']),
jwtSecretKey,
{expiresIn: 60*60*1}
); // expires in 1 hour OR (60 x 60 x 1) seconds
}