Blame view

app/routes/ApiRtes.js 3.39 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
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
9
10
  // Sessions
  api.get('/session', function (req, res) { // Informations sur la session
2f593328   Geoffrey PREUD'HOMME   Linting
11
      if (req.cookies && req.cookies.session) {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
12
          SessionsServ.use(req.cookies.session, function (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
13
14
15
              if (err) {
                  res.send(err);
              } else {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
16
                  res.send(SessionsServ.cur);
2f593328   Geoffrey PREUD'HOMME   Linting
17
18
19
20
21
22
              }
          });
          // TODO si pas bon : res.clearCookie('session')
      } else {
          res.send('missing');
      }
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
23
24
25
  });
  
  api.post('/session', function (req, res) { // Se connecter
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
26
27
      DecryptServ.decrypt(req.body[0], function (data) {
          SessionsServ.open(JSON.parse(data), function (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
28
29
30
              if (err) {
                  res.send(err);
              } else {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
31
32
                  res.cookie('session', SessionsServ.cur._id);
                  res.send(SessionsServ.cur);
2f593328   Geoffrey PREUD'HOMME   Linting
33
34
              }
          });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
35
      });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
36
  });
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
37
38
  
  api.delete('/session', function (req, res) { // Se déconnecter
2f593328   Geoffrey PREUD'HOMME   Linting
39
      if (req.cookies.session) {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
40
          SessionsServ.delete(req.cookies.session, function () {
2f593328   Geoffrey PREUD'HOMME   Linting
41
42
43
44
45
46
              res.clearCookie('session');
              res.end();
          });
      } else {
          res.send('missing');
      }
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
47
  });
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
48
  
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
49
  ifPermission = function (req, res, perm, cb) {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
50
      SessionsServ.use(req.cookies.session, function (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
51
52
53
          if (err) {
              res.status(403).end();
          } else {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
54
              if (SessionsServ.cur[perm]) {
2f593328   Geoffrey PREUD'HOMME   Linting
55
56
57
58
59
60
                  cb();
              } else {
                  res.status(403).end();
              }
          }
      });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
61
  };
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
62
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
63
  
0bda071e   Geoffrey PREUD'HOMME   Reroutage
64
  // Membres
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
65
  api.get('/membres', function (req, res) { // Liste des membres
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
66
      MembresServ.list(function (err, membres) {
2f593328   Geoffrey PREUD'HOMME   Linting
67
68
          if (err)
              res.send(err);
25f72955   Geoffrey PREUD'HOMME   Liste des membres...
69
70
          else
              res.json(membres);
2f593328   Geoffrey PREUD'HOMME   Linting
71
      });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
72
73
  });
  
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
74
  api.post('/membres', function (req, res) { // Ajout d'un membre
2f593328   Geoffrey PREUD'HOMME   Linting
75
      ifPermission(req, res, 'canAddMembre', function () {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
76
          MembresServ.add(req.body, function (err, membre) {
2f593328   Geoffrey PREUD'HOMME   Linting
77
78
              if (err)
                  res.send(err);
f661af15   Geoffrey PREUD'HOMME   Amelioré la gesti...
79
80
              else
                  res.json(membre);
2f593328   Geoffrey PREUD'HOMME   Linting
81
          });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
82
      });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
83
84
  });
  
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
85
  api.delete('/membres/:membre_id', function (req, res) { // Supression d'un membre
2f593328   Geoffrey PREUD'HOMME   Linting
86
      ifPermission(req, res, 'canDelMembre', function () {
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
87
          MembresServ.remove(req.params.membre_id, function (err, membre) {
2f593328   Geoffrey PREUD'HOMME   Linting
88
89
              if (err)
                  res.send(err);
f661af15   Geoffrey PREUD'HOMME   Amelioré la gesti...
90
91
              else
                  res.json(null);
2f593328   Geoffrey PREUD'HOMME   Linting
92
          });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
93
      });
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
94
  });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
95
  
12162cc1   Geoffrey PREUD'HOMME   Liste de conversa...
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
  
  // Conversations
  api.get('/convs', function (req, res) { // Liste des convs
      ConvsServ.list(function (err, convs) {
          if (err)
              res.send(err);
          else
              res.json(convs);
      });
  });
  
  api.post('/convs', function (req, res) { // Ajout d'un conv
      ifPermission(req, res, 'canAddConv', function () {
          ConvsServ.add(req.body, function (err, conv) {
              if (err)
                  res.send(err);
              else
                  res.json(conv);
          });
      });
  });
  
  api.delete('/convs/:conv_id', function (req, res) { // Supression d'un conv
      ifPermission(req, res, 'canDelConv', function () {
          ConvsServ.remove(req.params.conv_id, function (err, conv) {
              if (err)
                  res.send(err);
              else
                  res.json(null);
          });
      });
  });
  
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
129
  module.exports = api;