Commit 79edca45826435667b18f8691782591c3b4c01cd
1 parent
b1eba469
Nouvelle façon de vérifier les permissions
Showing
1 changed file
with
91 additions
and
46 deletions
Show diff stats
app/routes/ApiRtes.js
... | ... | @@ -6,6 +6,36 @@ var express = require('express'); |
6 | 6 | |
7 | 7 | var api = express(); |
8 | 8 | |
9 | +// Authentication | |
10 | +requireAuth = function () { | |
11 | + return function (req, res, next) { | |
12 | + SessionsServ.use(req.cookies.session, function (err) { | |
13 | + if (err) { | |
14 | + res.status(500).send(err); | |
15 | + } else { | |
16 | + if (SessionsServ.cur) { | |
17 | + req.session = SessionsServ.cur; | |
18 | + next(); | |
19 | + } else { | |
20 | + res.status(401).end(); | |
21 | + } | |
22 | + } | |
23 | + }); | |
24 | + }; | |
25 | +}; | |
26 | + | |
27 | +requirePerm = function (perm) { | |
28 | + return function (req, res, next) { | |
29 | + requireAuth()(req, res, function () { | |
30 | + if (req.session[perm]) { | |
31 | + next(); | |
32 | + } else { | |
33 | + res.status(403).end(); | |
34 | + } | |
35 | + }); | |
36 | + }; | |
37 | +}; | |
38 | + | |
9 | 39 | // Sessions |
10 | 40 | api.get('/session', function (req, res) { // Informations sur la session |
11 | 41 | if (req.cookies && req.cookies.session) { |
... | ... | @@ -46,20 +76,6 @@ api.delete('/session', function (req, res) { // Se déconnecter |
46 | 76 | } |
47 | 77 | }); |
48 | 78 | |
49 | -ifPermission = function (req, res, perm, cb) { | |
50 | - SessionsServ.use(req.cookies.session, function (err) { | |
51 | - if (err) { | |
52 | - res.status(403).end(); | |
53 | - } else { | |
54 | - if (SessionsServ.cur[perm]) { | |
55 | - cb(); | |
56 | - } else { | |
57 | - res.status(403).end(); | |
58 | - } | |
59 | - } | |
60 | - }); | |
61 | -}; | |
62 | - | |
63 | 79 | |
64 | 80 | // Membres |
65 | 81 | api.get('/membres', function (req, res) { // Liste des membres |
... | ... | @@ -71,25 +87,21 @@ api.get('/membres', function (req, res) { // Liste des membres |
71 | 87 | }); |
72 | 88 | }); |
73 | 89 | |
74 | -api.post('/membres', function (req, res) { // Ajout d'un membre | |
75 | - ifPermission(req, res, 'canAddMembre', function () { | |
76 | - MembresServ.add(req.body, function (err, membre) { | |
77 | - if (err) | |
78 | - res.send(err); | |
79 | - else | |
80 | - res.json(membre); | |
81 | - }); | |
90 | +api.post('/membres', requirePerm('canAddMembre'), function (req, res) { // Ajout d'un membre | |
91 | + MembresServ.add(req.body, function (err, membre) { | |
92 | + if (err) | |
93 | + res.send(err); | |
94 | + else | |
95 | + res.json(membre); | |
82 | 96 | }); |
83 | 97 | }); |
84 | 98 | |
85 | -api.delete('/membres/:membre_id', function (req, res) { // Supression d'un membre | |
86 | - ifPermission(req, res, 'canDelMembre', function () { | |
87 | - MembresServ.remove(req.params.membre_id, function (err, membre) { | |
88 | - if (err) | |
89 | - res.send(err); | |
90 | - else | |
91 | - res.json(null); | |
92 | - }); | |
99 | +api.delete('/membres/:membre_id', requirePerm('canDelMembre'), function (req, res) { // Supression d'un membre | |
100 | + MembresServ.remove(req.params.membre_id, function (err, membre) { | |
101 | + if (err) | |
102 | + res.send(err); | |
103 | + else | |
104 | + res.json(null); | |
93 | 105 | }); |
94 | 106 | }); |
95 | 107 | |
... | ... | @@ -113,25 +125,58 @@ api.get('/convs/:conv_id', function (req, res) { // Une conv |
113 | 125 | }); |
114 | 126 | }); |
115 | 127 | |
116 | -api.post('/convs', function (req, res) { // Ajout d'un conv | |
117 | - ifPermission(req, res, 'canAddConv', function () { | |
118 | - ConvsServ.add(req.body, function (err, conv) { | |
119 | - if (err) | |
120 | - res.send(err); | |
121 | - else | |
122 | - res.json(conv); | |
123 | - }); | |
128 | +api.post('/convs', requirePerm('canAddConv'), function (req, res) { // Ajout d'un conv | |
129 | + ConvsServ.add(req.body, function (err, conv) { | |
130 | + if (err) | |
131 | + res.send(err); | |
132 | + else | |
133 | + res.json(conv); | |
124 | 134 | }); |
125 | 135 | }); |
126 | 136 | |
127 | -api.delete('/convs/:conv_id', function (req, res) { // Supression d'un conv | |
128 | - ifPermission(req, res, 'canDelConv', function () { | |
129 | - ConvsServ.remove(req.params.conv_id, function (err, conv) { | |
130 | - if (err) | |
131 | - res.send(err); | |
132 | - else | |
133 | - res.json(null); | |
134 | - }); | |
137 | +api.delete('/convs/:conv_id', requirePerm('canDelConv'), function (req, res) { // Supression d'un conv | |
138 | + ConvsServ.remove(req.params.conv_id, function (err, conv) { | |
139 | + if (err) | |
140 | + res.send(err); | |
141 | + else | |
142 | + res.json(null); | |
143 | + }); | |
144 | +}); | |
145 | + | |
146 | +// Messages | |
147 | +api.get('/messs', function (req, res) { // Liste des messs | |
148 | + MessServ.list(function (err, messs) { | |
149 | + if (err) | |
150 | + res.send(err); | |
151 | + else | |
152 | + res.json(messs); | |
153 | + }); | |
154 | +}); | |
155 | + | |
156 | +api.get('/messs/:mess_id', function (req, res) { // Une mess | |
157 | + MessServ.get(req.params.mess_id, function (err, mess) { | |
158 | + if (err) | |
159 | + res.send(err); | |
160 | + else | |
161 | + res.json(mess); | |
162 | + }); | |
163 | +}); | |
164 | + | |
165 | +api.post('/messs', requireAuth(), function (req, res) { // Ajout d'un mess | |
166 | + MessServ.add(req.body, function (err, mess) { | |
167 | + if (err) | |
168 | + res.send(err); | |
169 | + else | |
170 | + res.json(mess); | |
171 | + }); | |
172 | +}); | |
173 | + | |
174 | +api.delete('/messs/:mess_id', requireAuth(), function (req, res) { // Supression d'un mess | |
175 | + MessServ.remove(req.params.mess_id, function (err, mess) { | |
176 | + if (err) | |
177 | + res.send(err); | |
178 | + else | |
179 | + res.json(null); | |
135 | 180 | }); |
136 | 181 | }); |
137 | 182 | ... | ... |