Blame view

app/routes/ApiRtes.js 5.58 KB
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
1
2
3
  var MembresServ = require('../services/MembresServ');
  var SessionsServ = require('../services/SessionsServ');
  var DecryptServ = require('../services/DecryptServ');
12162cc1   Geoffrey PREUD'HOMME   Liste de conversa...
4
  var ConvsServ = require('../services/ConvsServ');
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
5
  var MessServ = require('../services/MessServ');
0bda071e   Geoffrey PREUD'HOMME   Reroutage
6
7
  var express = require('express');
  
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
8
  var api = express();
0bda071e   Geoffrey PREUD'HOMME   Reroutage
9
  
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
10
  // Authentication
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
11
  reqAuth = function () {
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
      return function (req, res, next) {
          SessionsServ.use(req.cookies.session, function (err) {
              if (err) {
                  res.status(500).send(err);
              } else {
                  if (SessionsServ.cur) {
                      req.session = SessionsServ.cur;
                      next();
                  } else {
                      res.status(401).end();
                  }
              }
          });
      };
  };
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
28
  reqVerified = function (verify) {
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
29
      return function (req, res, next) {
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
          reqAuth()(req, res, function () {
              verify(req, res, function (err, verified) {
                  if (err) {
                      res.status(500).send(err);
                  } else {
                      if (verified) {
                          next();
                      } else {
                          res.status(403);
                      }
                  }
              });
          });
      };
  };
  
  reqPerm = function (perm) {
      return reqVerified(function (req, res, cb) {
          cb(null, req.session[perm]);
      });
  };
  
  assert = function (test) {
      return function (req, res, next) {
          reqAuth()(req, res, function () {
              test(req, res, function (err, verified) {
                  if (err) {
                      res.status(500).send(err);
                  } else {
                      if (verified) {
                          next();
                      } else {
                          res.status(400);
                      }
                  }
              });
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
66
67
68
69
          });
      };
  };
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
70
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
71
72
  // Sessions
  api.get('/session', function (req, res) { // Informations sur la session
2f593328   Geoffrey PREUD'HOMME   Linting
73
      if (req.cookies && req.cookies.session) {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
74
          SessionsServ.use(req.cookies.session, function (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
75
76
77
              if (err) {
                  res.send(err);
              } else {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
78
                  res.send(SessionsServ.cur);
2f593328   Geoffrey PREUD'HOMME   Linting
79
80
81
82
83
84
              }
          });
          // TODO si pas bon : res.clearCookie('session')
      } else {
          res.send('missing');
      }
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
85
86
87
  });
  
  api.post('/session', function (req, res) { // Se connecter
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
88
89
      DecryptServ.decrypt(req.body[0], function (data) {
          SessionsServ.open(JSON.parse(data), function (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
90
91
92
              if (err) {
                  res.send(err);
              } else {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
93
94
                  res.cookie('session', SessionsServ.cur._id);
                  res.send(SessionsServ.cur);
2f593328   Geoffrey PREUD'HOMME   Linting
95
96
              }
          });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
97
      });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
98
  });
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
99
100
  
  api.delete('/session', function (req, res) { // Se déconnecter
2f593328   Geoffrey PREUD'HOMME   Linting
101
      if (req.cookies.session) {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
102
          SessionsServ.delete(req.cookies.session, function () {
2f593328   Geoffrey PREUD'HOMME   Linting
103
104
105
106
107
108
              res.clearCookie('session');
              res.end();
          });
      } else {
          res.send('missing');
      }
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
109
  });
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
110
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
111
  
0bda071e   Geoffrey PREUD'HOMME   Reroutage
112
  // Membres
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
113
  api.get('/membres', function (req, res) { // Liste des membres
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
114
      MembresServ.list(function (err, membres) {
2f593328   Geoffrey PREUD'HOMME   Linting
115
116
          if (err)
              res.send(err);
25f72955   Geoffrey PREUD'HOMME   Liste des membres...
117
118
          else
              res.json(membres);
2f593328   Geoffrey PREUD'HOMME   Linting
119
      });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
120
121
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
122
  api.post('/membres', reqPerm('canAddMembre'), function (req, res) { // Ajout d'un membre
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
123
124
125
126
127
      MembresServ.add(req.body, function (err, membre) {
          if (err)
              res.send(err);
          else
              res.json(membre);
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
128
      });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
129
130
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
131
  api.delete('/membres/:membre_id', reqPerm('canDelMembre'), function (req, res) { // Supression d'un membre
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
132
133
134
135
136
      MembresServ.remove(req.params.membre_id, function (err, membre) {
          if (err)
              res.send(err);
          else
              res.json(null);
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
137
      });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
138
  });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
139
  
12162cc1   Geoffrey PREUD'HOMME   Liste de conversa...
140
141
142
143
144
145
146
147
148
149
150
  
  // Conversations
  api.get('/convs', function (req, res) { // Liste des convs
      ConvsServ.list(function (err, convs) {
          if (err)
              res.send(err);
          else
              res.json(convs);
      });
  });
  
9378de0d   Geoffrey PREUD'HOMME   Affichage d'une c...
151
152
153
154
155
156
157
158
159
  api.get('/convs/:conv_id', function (req, res) { // Une conv
      ConvsServ.get(req.params.conv_id, function (err, conv) {
          if (err)
              res.send(err);
          else
              res.json(conv);
      });
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
160
  api.post('/convs', reqPerm('canAddConv'), function (req, res) { // Ajout d'un conv
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
161
162
163
164
165
      ConvsServ.add(req.body, function (err, conv) {
          if (err)
              res.send(err);
          else
              res.json(conv);
12162cc1   Geoffrey PREUD'HOMME   Liste de conversa...
166
167
168
      });
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
169
  api.delete('/convs/:conv_id', reqPerm('canDelConv'), function (req, res) { // Supression d'un conv
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
170
171
172
173
174
175
176
177
178
      ConvsServ.remove(req.params.conv_id, function (err, conv) {
          if (err)
              res.send(err);
          else
              res.json(null);
      });
  });
  
  // Messages
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
179
180
  api.get('/messs/:conv_id', function (req, res) { // Liste des messs
      MessServ.list(req.params.conv_id, function (err, messs) {
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
          if (err)
              res.send(err);
          else
              res.json(messs);
      });
  });
  
  api.get('/messs/:mess_id', function (req, res) { // Une mess
      MessServ.get(req.params.mess_id, function (err, mess) {
          if (err)
              res.send(err);
          else
              res.json(mess);
      });
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
197
198
199
200
  api.post('/messs', reqAuth(), function (req, res) { // Ajout d'un mess
      data = req.body;
      data.login = req.session.login;
      MessServ.add(data, function (err, mess) {
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
201
202
203
204
205
206
207
          if (err)
              res.send(err);
          else
              res.json(mess);
      });
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
208
  api.delete('/messs/:mess_id', reqAuth(), function (req, res) { // Supression d'un mess
79edca45   Geoffrey PREUD'HOMME   Nouvelle façon de...
209
210
211
212
213
      MessServ.remove(req.params.mess_id, function (err, mess) {
          if (err)
              res.send(err);
          else
              res.json(null);
12162cc1   Geoffrey PREUD'HOMME   Liste de conversa...
214
215
216
      });
  });
  
f22cd7f3   Geoffrey PREUD'HOMME   Système de messag...
217
218
219
  // TODO 404
  // TODO 418
  
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
220
  module.exports = api;