1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-05-01 13:48:56 +08:00
nmarcetic f36013016e -- Hello JWT
Signed-off-by: nmarcetic <nikola.marcetic@ntsystems.rs>
2015-10-13 16:35:32 +02:00

52 lines
1.9 KiB
JavaScript

var express = require('express');
var router = express.Router(); // get an instance of the express Router
var _ = require('lodash');
var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
var config = require('../../config/config');
var User = require('../models/user');
// on routes that end in /things
// ----------------------------------------------------
router.route('/')
// Authenticate the user and return user token (accessed at POST http://localhost:8080/sessions)
.post(function(req, res) {
if(req.body.email && req.body.password) {
// Find the user
User.findOne({
email: req.body.email
}, function(err, user) {
if (err) throw err;
if(!user){
// User with this email does not exist
res.json({status:404, message: 'Authentication failed. User not found.' });
}
// Validate user password
user.validateUserPassword(req.body.password,function (err, isMatch) {
if(err){
res.json({status:401, message: 'Unauthorized.' });
}
if(isMatch){
// Generate user token
var token = jwt.sign(user, config.secretToken, {
expiresInMinutes: config.userTokenExpirePeriod
});
res.json({status:200, token: token, message: 'Authentication succeeded.' });
} else {
res.json({status:401, message: 'Unauthorized.' });
}
});
})
}
else {
// Email or password are not provided
res.json({status:400, message: 'Bad request.' });
}
});
// export router module
module.exports = router;