|
|
@@ -174,6 +174,63 @@ module.exports = {
|
|
174
|
174
|
},
|
|
175
|
175
|
|
|
176
|
176
|
leave_society: function (soc_name, auth, complete) {
|
|
177
|
|
- // permissions_controller.user_is_in_society(auth, soc_name, function)
|
|
|
177
|
+ permissions_controller.user_is_in_society(auth, soc_name, function(user_in_soc) {
|
|
|
178
|
+ if (user_in_soc) {
|
|
|
179
|
+ soc_name = soc_name.toLowerCase();
|
|
|
180
|
+ user_controller.get_user_from_auth(auth, function (username) {
|
|
|
181
|
+ var user_query = "user:" + username;
|
|
|
182
|
+ var soc_query = "society:" + soc_name.toLowerCase();
|
|
|
183
|
+ redis.hget(user_query, "societies", function (err, result) {
|
|
|
184
|
+ if (result) {
|
|
|
185
|
+ result = JSON.parse(result);
|
|
|
186
|
+ var idx = result.indexOf(soc_name);
|
|
|
187
|
+ if (idx > -1) {
|
|
|
188
|
+ result.splice(idx, 1);
|
|
|
189
|
+ }
|
|
|
190
|
+ redis.hset(user_query, "societies", JSON.stringify(result));
|
|
|
191
|
+ } else {
|
|
|
192
|
+ console.error("Error could not find society to remove.");
|
|
|
193
|
+ }
|
|
|
194
|
+ });
|
|
|
195
|
+ redis.hget(soc_query, "users", function (err, result) {
|
|
|
196
|
+ if (result) {
|
|
|
197
|
+ result = JSON.parse(result);
|
|
|
198
|
+ var idx = result.indexOf(username);
|
|
|
199
|
+ if (idx > -1) {
|
|
|
200
|
+ result.splice(idx, 1);
|
|
|
201
|
+ }
|
|
|
202
|
+ redis.hset(soc_query, "users", JSON.stringify(result));
|
|
|
203
|
+ } else {
|
|
|
204
|
+ console.error("Error could not find society user list.");
|
|
|
205
|
+ }
|
|
|
206
|
+ });
|
|
|
207
|
+ permissions_controller.user_can_manage_society(auth, soc_name, function (isadmin) {
|
|
|
208
|
+ if (isadmin) {
|
|
|
209
|
+ redis.hget(soc_query, "admins", function (err, result) {
|
|
|
210
|
+ if (result) {
|
|
|
211
|
+ result = JSON.parse(result);
|
|
|
212
|
+ var idx = result.indexOf(username);
|
|
|
213
|
+ if (idx > -1) {
|
|
|
214
|
+ result.splice(idx, 1);
|
|
|
215
|
+ }
|
|
|
216
|
+ redis.hset(soc_query, "admins", JSON.stringify(result));
|
|
|
217
|
+ } else {
|
|
|
218
|
+ console.error("Error could not find society admin list.");
|
|
|
219
|
+ }
|
|
|
220
|
+ });
|
|
|
221
|
+ }
|
|
|
222
|
+ });
|
|
|
223
|
+ complete({
|
|
|
224
|
+ "success": 1,
|
|
|
225
|
+ "error": 0
|
|
|
226
|
+ });
|
|
|
227
|
+ });
|
|
|
228
|
+ } else {
|
|
|
229
|
+ complete({
|
|
|
230
|
+ "success": 0,
|
|
|
231
|
+ "error": 1
|
|
|
232
|
+ });
|
|
|
233
|
+ }
|
|
|
234
|
+ });
|
|
178
|
235
|
}
|
|
179
|
236
|
}
|