A single proxy server to authenticate requests to multiple internal APIs
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.5 KiB

8 years ago
  1. var bcrypt = require('bcrypt');
  2. var mysql = require('mysql');
  3. var dotEnv = require('dot-env');
  4. module.exports = {
  5. verify: function(req, done) {
  6. var connection = mysql.createConnection({
  7. socket : process.env.DB_SOCKET,
  8. user : process.env.DB_USER,
  9. password : process.env.DB_PASSWORD,
  10. database : process.env.DB_DATABASE
  11. });
  12. connection.connect(function(err) {
  13. if (err) done(err);
  14. });
  15. connection.query('SELECT password FROM users WHERE email = \''+req.body.email+'\'', function(err, result, fields) {
  16. if (err) done(err);
  17. if (!result || !result[0] || !result[0].password) return done(null, false);
  18. var password = result[0].password.replace('$2y$', '$2a$');
  19. var salt = password.slice(0,29);
  20. bcrypt.hash(req.body.password, salt, function(err, enc) {
  21. if (err) {
  22. console.log(err);
  23. return done(err, null);
  24. } else if (enc == password) {
  25. // console.log('Authorized');
  26. return done(null, true);
  27. } else {
  28. // console.log('Not Authorized');
  29. return done(null, null);
  30. }
  31. });
  32. });
  33. connection.end();
  34. },
  35. clientLookup(client_id): function(client_id) {
  36. return 'http://xkcd.leviolson.com';
  37. }
  38. };