Matt Coles před 9 roky
rodič
revize
b19d799b1b
3 změnil soubory, kde provedl 79 přidání a 22 odebrání
  1. 15 9
      index.js
  2. 1 1
      presenters/permissions-controller.js
  3. 63 12
      presenters/society-controller.js

+ 15 - 9
index.js

@@ -7,22 +7,28 @@ var fs = require('fs');
7 7
 var prkey = fs.readFileSync('server.key');
8 8
 var certi = fs.readFileSync('server.crt');
9 9
 
10
+app.use(function(req, res, next) {
11
+  res.header("Access-Control-Allow-Origin", "*");
12
+  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
13
+  next();
14
+});
15
+
10 16
 app.use(bodyParser.json()); // for parsing application/json
11 17
 app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
12 18
 app.use('/', route_manager);
13 19
 app.use('/source', require('extraverse')('/source', { ignore: ['config'] }));
14 20
 
15
-// app.listen(3000, function () {
16
-//     console.log('Example app listening on port 3000!');
17
-// });
18
-
19
-https.createServer({
20
-  key: prkey,
21
-  cert: certi
22
-}, app).listen(3000, function() {
23
-  console.log("App listening for HTTPS connections on port 3000!");
21
+app.listen(3000, function () {
22
+    console.log('Example app listening on port 3000!');
24 23
 });
25 24
 
25
+// https.createServer({
26
+//   key: prkey,
27
+//   cert: certi
28
+// }, app).listen(3000, function() {
29
+//   console.log("App listening for HTTPS connections on port 3000!");
30
+// });
31
+
26 32
 process.on('SIGINT', function() {
27 33
   console.log( "\nRecieved Ctrl-C, shutting down." );
28 34
   process.exit(0);

+ 1 - 1
presenters/permissions-controller.js

@@ -14,7 +14,7 @@ module.exports = {
14 14
     complete(true);
15 15
   },
16 16
 
17
-  user_can_view_soc_events: function (auth, society, complete) {
17
+  user_is_in_society: function (auth, society, complete) {
18 18
     var user_controller = require("./user-controller.js");
19 19
     var society_controller = require("./society-controller.js");
20 20
     user_controller.get_user_from_auth(auth, function (username) {

+ 63 - 12
presenters/society-controller.js

@@ -1,5 +1,7 @@
1 1
 var Redis = require("ioredis");
2 2
 var redis = new Redis();
3
+var permissions_controller = require("./permissions-controller.js");
4
+var user_controller = require("./user-controller.js");
3 5
 
4 6
 module.exports = {
5 7
   get_society: function (soc_name, complete) {
@@ -31,26 +33,50 @@ module.exports = {
31 33
     redis.hget(soc_query, "name", function (err, result) {
32 34
       if (result) {
33 35
         complete({"success": 0,
34
-                  "error": 2});
36
+                 "error": 2});
35 37
       } else {
36 38
         redis.get("auth-key:" + auth, function (err,result) {
37 39
           var username = result;
40
+          var user_query = "user:" + username;
41
+          var users_exist = true;
38 42
           if (admins.indexOf(result) !== -1) {
39 43
             redis.hset(soc_query, "name", society_name);
40 44
             redis.hset(soc_query, "admins", admins_str);
41 45
             redis.hset(soc_query, "description", description);
42 46
             redis.hset(soc_query, "users", admins_str);
43
-            complete({"success": 1,
44
-                      "society" : {
45
-                       "name": society_name,
46
-                       "admins": admins,
47
-                       "description": description,
48
-                       "users": admins
49
-                      },
50
-                      "error": 0});
47
+            admins.map(function (admin_name) {
48
+              user_controller.user_exists(admin_name, function (exists) {
49
+                if (!exists) {
50
+                  users_exist = false;
51
+                }
52
+              });
53
+            });
54
+            if (users_exist) {
55
+              admins.map(function (admin_name) {
56
+                redis.hget("user:" + admin_name, "societies", function (err, result) {
57
+                  if (result) {
58
+                    redis.hset("user:" + admin_name, "societies", result.concat(society_name));
59
+                  } else {
60
+                    redis.hset("user:" + admin_name, "societies", [society_name]);
61
+                  }
62
+                });
63
+              });
64
+              complete({"success": 1,
65
+                       "society" : {
66
+                         "name": society_name,
67
+                         "admins": admins,
68
+                         "description": description,
69
+                         "users": admins
70
+                       },
71
+                       "error": 0});
72
+
73
+            } else {
74
+              complete({"success": 0,
75
+                       "error": 4});
76
+            }
51 77
           } else {
52 78
             complete({"success": 0,
53
-                      "error": 3});
79
+                     "error": 3});
54 80
           }
55 81
         });
56 82
       }
@@ -78,10 +104,35 @@ module.exports = {
78 104
   },
79 105
 
80 106
   join_society: function (soc_name, auth, complete) {
81
-
107
+    permissions_controller.user_is_in_society(auth, soc_name, function (user_in_soc) {
108
+      if (user_in_soc) {
109
+        complete({
110
+          "success": 0,
111
+          "error": 1
112
+        });
113
+      } else {
114
+        user_controller.get_user_from_auth(auth, function (username) {
115
+          user_query = "user:" + username;
116
+          redis.hget(user_query, "societies", function (err, result) {
117
+            if (result) {
118
+              redis.hset(user_query, "societies", result.concat(society_name));
119
+            } else {
120
+              redis.hset(user_query, "societies", [society_name]);
121
+            }
122
+          });
123
+          redis.hget("society:" + soc_name, "users", function (err, users_result) {
124
+            redis.hset("society" + soc_name, users_result.concat(username));
125
+          });
126
+        });
127
+        complete({
128
+          "success": 1,
129
+          "error": 0
130
+        });
131
+      }
132
+    });
82 133
   },
83 134
 
84 135
   leave_society: function (soc_name, auth, complete) {
85
-
136
+    permissions_controller.user_is_in_society(auth, soc_name, function)
86 137
   }
87 138
 }