Public API for a society manager application

index.js 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. var express = require('express');
  2. var app = express();
  3. var bcrypt = require('bcrypt-nodejs');
  4. var Redis = require('ioredis');
  5. var redis = new Redis();
  6. var bodyParser = require('body-parser');
  7. app.use(bodyParser.json()); // for parsing application/json
  8. app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
  9. app.get('/hello/(:name)?', function (req, res) {
  10. var name = req.params.name || "World";
  11. res.send('Hello ' + name + "!");
  12. });
  13. app.all('/register', function(req, res) {
  14. var tmp_username = req.body.user || req.query.user;
  15. var tmp_password = req.body.password || req.query.password;
  16. var uquery = 'user:' + tmp_username;
  17. var user_object = {};
  18. redis.get(uquery).then(function (result) {
  19. if (result !== "" && result !== undefined && result !== null) {
  20. res.send({"registered": 0,
  21. "error": 1});
  22. } else {
  23. bcrypt.hash(tmp_password, null, null, function (err, hash) {
  24. user_object["password"] = hash;
  25. user_object["auth-key"] = bcrypt.hashSync(Date.now().toString() + tmp_username);
  26. redis.set(uquery, JSON.stringify(user_object));
  27. res.send({"registered": 1,
  28. "auth-key": user_object["auth-key"],
  29. "error": 0});
  30. });
  31. }
  32. });
  33. });
  34. app.all('/login', function(req, res) {
  35. var username = req.body.user || req.query.user;
  36. var password = req.body.password || req.query.password;
  37. var uquery = 'user:' + username;
  38. redis.get(uquery).then(function (result) {
  39. if (result !== "" && result !== undefined && result !== null) {
  40. var user_object = JSON.parse(result);
  41. bcrypt.compare(password, user_object["password"], function (err, matched) {
  42. if (matched === true) {
  43. if (undefined === user_object["auth-key"]) {
  44. var timestamp_user = Date.now().toString() + username;
  45. user_object["auth-key"] = bcrypt.hashSync(timestamp_user);
  46. redis.set(uquery, JSON.stringify(user_object));
  47. res.send({"logged_in": 1,
  48. "auth-key": user_object["auth-key"],
  49. "error": 0});
  50. } else {
  51. res.send({"logged_in": 1,
  52. "auth-key": user_object["auth-key"],
  53. "error": 0});
  54. }
  55. return;
  56. } else {
  57. res.send({"logged_in": 0,
  58. "error": 2});
  59. return;
  60. }
  61. });
  62. } else {
  63. res.send({"logged_in": 0,
  64. "error": 1});
  65. return;
  66. }
  67. });
  68. });
  69. app.listen(3000, function () {
  70. console.log('Example app listening on port 3000!');
  71. });
  72. process.on('SIGINT', function() {
  73. console.log( "\nRecieved Ctrl-C, shutting down." );
  74. process.exit(0);
  75. })