Public API for a society manager application

user-controller.js 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. user_exists: function (user, complete) {
  27. var user_key = "user:" + user;
  28. redis.hgetall(user_key, function (err, result) {
  29. complete(!!result.password);
  30. });
  31. },
  32. authenticate: function (user, pass, complete) {
  33. permissions_controller.user_can_auth(user, pass, function (success) {
  34. var user_key = "user:" + user;
  35. if (success) {
  36. redis.hget(user_key, "auth-key", function (auth) {
  37. var new_auth_key = auth_gen.generate(user);
  38. if (auth) {
  39. redis.del("auth-key:" + auth);
  40. }
  41. redis.set("auth-key:" + auth, new_auth_key);
  42. redis.hset(user_key, "auth-key", new_auth_key);
  43. complete({
  44. "logged_in": 1,
  45. "auth-key": new_auth_key,
  46. "error": 0
  47. });
  48. });
  49. } else {
  50. complete({
  51. "logged_in": 0,
  52. "error": 1
  53. });
  54. }
  55. });
  56. },
  57. register: function (user, pass, complete) {
  58. var user_key = "user:" + user;
  59. var auth_key = "";
  60. var new_user = {};
  61. this.user_exists(user, function (exists) {
  62. if (exists) {
  63. complete({
  64. "registered": 0,
  65. "error": 1
  66. });
  67. } else {
  68. bcrypt.hash(pass, null, null, function (err, hash) {
  69. new_user["password"] = hash;
  70. new_user["auth-key"] = auth_gen.generate(user);
  71. auth_key = "auth-key:" + new_user["auth-key"];
  72. redis.hset(user_key, "password", new_user["password"]);
  73. redis.hset(user_key, "auth-key", new_user["auth-key"]);
  74. redis.set(auth_key, user);
  75. complete({
  76. "registered": 1,
  77. "auth-key": new_user["auth-key"],
  78. "error": 0
  79. })
  80. });
  81. }
  82. })
  83. }
  84. }