ApiRtes.js
2.52 KB
1
2
3
4
5
6
7
8
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
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
var MembresServ = require('../services/MembresServ');
var SessionsServ = require('../services/SessionsServ');
var DecryptServ = require('../services/DecryptServ');
var express = require('express');
var api = express();
// Sessions
api.get('/session', function (req, res) { // Informations sur la session
if (req.cookies && req.cookies.session) {
SessionsServ.use(req.cookies.session, function (err) {
if (err) {
res.send(err);
} else {
res.send(SessionsServ.cur);
}
});
// TODO si pas bon : res.clearCookie('session')
} else {
res.send('missing');
}
});
api.post('/session', function (req, res) { // Se connecter
DecryptServ.decrypt(req.body[0], function (data) {
SessionsServ.open(JSON.parse(data), function (err) {
if (err) {
res.send(err);
} else {
res.cookie('session', SessionsServ.cur._id);
res.send(SessionsServ.cur);
}
});
});
});
api.delete('/session', function (req, res) { // Se déconnecter
if (req.cookies.session) {
SessionsServ.delete(req.cookies.session, function () {
res.clearCookie('session');
res.end();
});
} else {
res.send('missing');
}
});
ifPermission = function (req, res, perm, cb) {
SessionsServ.use(req.cookies.session, function (err) {
if (err) {
res.status(403).end();
} else {
if (SessionsServ.cur[perm]) {
cb();
} else {
res.status(403).end();
}
}
});
};
// Membres
api.get('/membres', function (req, res) { // Liste des membres
MembresServ.list(function (err, membres) {
if (err)
res.send(err);
else
res.json(membres);
});
});
api.post('/membres', function (req, res) { // Ajout d'un membre
ifPermission(req, res, 'canAddMembre', function () {
MembresServ.add(req.body, function (err, membre) {
if (err)
res.send(err);
else
res.json(membre);
});
});
});
api.delete('/membres/:membre_id', function (req, res) { // Supression d'un membre
ifPermission(req, res, 'canDelMembre', function () {
MembresServ.remove(req.params.membre_id, function (err, membre) {
if (err)
res.send(err);
else
res.json(null);
});
});
});
module.exports = api;