mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-01 13:48:56 +08:00
52 lines
1.9 KiB
JavaScript
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;
|
|
|