Public API for a society manager application

user-controller.js 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var Redis = require("ioredis");
  2. var redis = new Redis();
  3. var auth_gen = require("./../utils/auth-keys.js");
  4. var permissions_controller = require("./permissions-controller.js");
  5. module.exports = {
  6. get_password: function (user, complete) {
  7. var user_key = "user:" + user;
  8. redis.hget(user_key, "password", function (err, password) {
  9. if (password) {
  10. complete(password);
  11. } else {
  12. complete("");
  13. }
  14. });
  15. },
  16. get_user_from_auth: function (auth, complete) {
  17. var auth_key = "auth-key:" + auth;
  18. redis.get(auth_key, function (err, username) {
  19. if (username) {
  20. complete(username);
  21. } else {
  22. complete("");
  23. }
  24. });
  25. },
  26. authenticate: function (user, pass, complete) {
  27. permissions_controller.user_can_auth(user, pass, function (success) {
  28. var user_key = "user:" + user;
  29. if (success) {
  30. redis.hget(user_key, "auth-key", function (auth) {
  31. var new_auth_key = auth_gen.generate(user);
  32. if (auth) {
  33. redis.del("auth-key:" + auth);
  34. }
  35. redis.set("auth-key:" + auth, new_auth_key);
  36. redis.hset(user_key, "auth-key", new_auth_key);
  37. complete({
  38. "logged_in": 1,
  39. "auth-key": new_auth_key,
  40. "error": 0
  41. });
  42. });
  43. } else {
  44. complete({
  45. "logged_in": 0,
  46. "error": 1
  47. });
  48. }
  49. });
  50. }
  51. }