Blame view

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