Blame view

app/routes/api.js 2.32 KB
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
1
  var membres = require('../controllers/membres');
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
2
  var sessions = require('../controllers/sessions');
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
3
  var decrypt = require('../controllers/decrypt');
0bda071e   Geoffrey PREUD'HOMME   Reroutage
4
5
  var express = require('express');
  
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
6
  var api = express();
0bda071e   Geoffrey PREUD'HOMME   Reroutage
7
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
8
9
  // Sessions
  api.get('/session', function (req, res) { // Informations sur la session
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
10
11
12
13
14
15
16
17
18
19
20
21
    if (req.cookies && req.cookies.session) {
      sessions.use(req.cookies.session, function (err) {
        if (err) {
          res.send(err);
        } else {
          res.send(sessions.cur);
        }
      });
      // TODO si pas bon : res.clearCookie('session')
    } else {
      res.send('missing');
    }
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
22
23
24
  });
  
  api.post('/session', function (req, res) { // Se connecter
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
25
26
27
28
29
30
31
32
33
34
35
    decrypt.decrypt(req.body[0], function (data) {
      sessions.open(JSON.parse(data), function (err) {
        if (err) {
          res.send(err);
        } else {
          res.cookie('session', sessions.cur._id);
          res.send(sessions.cur);
        }
      });
    });
  });
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
36
37
  
  api.delete('/session', function (req, res) { // Se déconnecter
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
38
39
40
41
42
43
44
45
46
    if (req.cookies.session) {
      sessions.delete(req.cookies.session, function () {
        res.clearCookie('session');
        res.end();
      });
    } else {
      res.send('missing');
    }
  });
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
47
  
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
48
  ifPermission = function (req, res, perm, cb) {
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
49
50
51
52
53
54
55
56
57
58
59
60
    sessions.use(req.cookies.session, function (err) {
      if (err) {
        res.status(403).end();
      } else {
        if (sessions.cur[perm]) {
          cb();
        } else {
          res.status(403).end();
        }
      }
    });
  };
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
61
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
62
  
0bda071e   Geoffrey PREUD'HOMME   Reroutage
63
  // Membres
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
64
  api.get('/membres', function (req, res) { // Liste des membres
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
65
66
67
68
69
    membres.list(function (err, membres) {
      if (err)
        res.send(err);
      res.json(membres);
    });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
70
71
  });
  
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
72
  api.post('/membres', function (req, res) { // Ajout d'un membre
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
73
74
75
76
77
78
79
80
81
82
83
    ifPermission(req, res, 'canAddMembre', function () {
      membres.add(req.body, function (err, membre) {
        if (err)
          res.send(err);
        membres.list(function (err, membres) {
          if (err)
            res.send(err);
          res.json(membres);
        });
      });
    });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
84
85
  });
  
a7189c82   Geoffrey PREUD'HOMME   Membres comme con...
86
  api.delete('/membres/:membre_id', function (req, res) { // Supression d'un membre
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
87
88
89
90
91
92
93
94
95
96
97
98
    ifPermission(req, res, 'canDelMembre', function () {
      membres.remove(req.params.membre_id, function (err, membre) {
        if (err)
          res.send(err);
        membres.list(function (err, membres) {
          if (err)
            res.send(err);
          res.json(membres);
        });
      });
    });
  });
0bda071e   Geoffrey PREUD'HOMME   Reroutage
99
  
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
100
  module.exports = api;