Advertisement
Guest User

Untitled

a guest
Oct 7th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. "use strict";
  2.  
  3. var debug = require('debug')('app:routes:default' + process.pid),
  4. _ = require("lodash"),
  5. util = require('util'),
  6. path = require('path'),
  7. bcrypt = require('bcryptjs'),
  8. utils = require("../utils.js"),
  9. Router = require("express").Router,
  10. UnauthorizedAccessError = require(path.join(__dirname, "..", "errors", "UnauthorizedAccessError.js")),
  11. User = require(path.join(__dirname, "..", "models", "user.js")),
  12. jwt = require("express-jwt");
  13.  
  14. var authenticate = function (req, res, next) {
  15.  
  16. debug("Processing authenticate middleware");
  17.  
  18. var username = req.body.username,
  19. password = req.body.password;
  20.  
  21. if (_.isEmpty(username) || _.isEmpty(password)) {
  22. return next(new UnauthorizedAccessError("401", {
  23. message: 'Invalid username or password'
  24. }));
  25. }
  26.  
  27. process.nextTick(function () {
  28.  
  29. User.findOne({
  30. username: username
  31. }, function (err, user) {
  32.  
  33. if (err || !user) {
  34. return next(new UnauthorizedAccessError("401", {
  35. message: 'Invalid username or password'
  36. }));
  37. }
  38.  
  39. user.comparePassword(password, function (err, isMatch) {
  40. if (isMatch && !err) {
  41. debug("User authenticated, generating token");
  42. utils.create(user, req, res, next);
  43. } else {
  44. return next(new UnauthorizedAccessError("401", {
  45. message: 'Invalid username or password'
  46. }));
  47. }
  48. });
  49. });
  50.  
  51. });
  52.  
  53.  
  54. };
  55.  
  56. module.exports = function () {
  57.  
  58. var router = new Router();
  59.  
  60. router.route("/verify").get(function (req, res, next) {
  61. return res.status(200).json(undefined);
  62. });
  63.  
  64. router.route("/logout").get(function (req, res, next) {
  65. if (utils.expire(req.headers)) {
  66. delete req.user;
  67. return res.status(200).json({
  68. "message": "User has been successfully logged out"
  69. });
  70. } else {
  71. return next(new UnauthorizedAccessError("401"));
  72. }
  73. });
  74.  
  75. router.route("/login").post(authenticate, function (req, res, next) {
  76. return res.status(200).json(req.user);
  77. });
  78.  
  79. router.unless = require("express-unless");
  80.  
  81. return router;
  82. };
  83.  
  84. debug("Loaded");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement