Public API for a society manager application

login.js 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var Redis = require("ioredis");
  2. var redis = new Redis();
  3. var bcrypt = require('bcrypt-nodejs');
  4. var authgen = require("./../../utils/auth-keys.js");
  5. module.exports = {
  6. perform: function(a,b) {
  7. perform(a,b);
  8. }
  9. }
  10. var perform = function(req, res) {
  11. var username = req.body.user || req.query.user;
  12. var password = req.body.password || req.query.password;
  13. var uquery = 'user:' + username;
  14. redis.hgetall(uquery).then(function (result) {
  15. if (result.password && result !== undefined && result !== null) {
  16. var user_object = result;
  17. if (username && password) {
  18. username = username.toLowerCase();
  19. bcrypt.compare(password, user_object.password, function (err, matched) {
  20. if (matched) {
  21. var new_auth_key = authgen.generate(username);
  22. var aquery = "auth-key:" + new_auth_key;
  23. redis.set(aquery, username);
  24. redis.hset(uquery, "auth-key", new_auth_key);
  25. if (user_object["auth-key"]) {
  26. redis.del("auth-key:" + user_object["auth-key"]);
  27. }
  28. res.send({"logged_in": 1,
  29. "auth-key": new_auth_key,
  30. "error": 0})
  31. } else {
  32. res.send({"logged_in": 0,
  33. "error": 2});
  34. }
  35. });
  36. } else {
  37. res.send({"logged_in": 0,
  38. "error": 3});
  39. }
  40. } else {
  41. res.send({"logged_in": 0,
  42. "error": 1});
  43. return;
  44. }
  45. });
  46. };