Commit d51337d0afb9e1157c7fd4662b43dd65ef09d643
1 parent
a470afda
Améliorations diverses API
* Simplifié le code route * Possibilité de mixer arguments url et post data
Showing
6 changed files
with
166 additions
and
244 deletions
Show diff stats
app/routes/ApiRtes.js
... | ... | @@ -18,30 +18,75 @@ var api = express(); |
18 | 18 | // Connection à la BDD |
19 | 19 | mongoose.connect(require('../../config/db').url); |
20 | 20 | |
21 | -// Authentication | |
22 | -reqAuth = function () { | |
23 | - return function (req, res, next) { | |
24 | - if (req.session.data && req.session.data.login) { | |
25 | - next(); | |
21 | +// Fonctions diverses | |
22 | +ensureOkay = function (res, status, cb) { | |
23 | + // TODO Statut par défaut / optionnel | |
24 | + // status = 500; | |
25 | + return function (err, data) { | |
26 | + // TODO Différencier data non-présent / faux | |
27 | + if (err) { | |
28 | + res.status(status).json(err); | |
26 | 29 | } else { |
27 | - res.status(401).end(); | |
30 | + cb(data); | |
28 | 31 | } |
29 | 32 | }; |
30 | 33 | }; |
31 | 34 | |
35 | +giveBackNull = function (res, status) { | |
36 | + // TODO Statut par défaut / optionnel | |
37 | + // status = 200; | |
38 | + return ensureOkay(res, 404, function (data) { | |
39 | + res.status(status); | |
40 | + if (status != 204 && status != 205) { | |
41 | + res.json(data); | |
42 | + } else { | |
43 | + res.end(); | |
44 | + } | |
45 | + }); | |
46 | +}; | |
47 | + | |
48 | +ensureExists = function (res, status, cb) { | |
49 | + // TODO Statut par défaut / optionnel | |
50 | + // status = 404; | |
51 | + return ensureOkay(res, 500, function (data) { | |
52 | + if (data) { | |
53 | + cb(data); | |
54 | + } else { | |
55 | + res.status(status).end(); | |
56 | + } | |
57 | + }); | |
58 | +}; | |
59 | + | |
60 | +giveBack = function (res, status) { | |
61 | + // TODO Statut par défaut / optionnel | |
62 | + // status = 200; | |
63 | + return ensureExists(res, 404, function (data) { | |
64 | + res.status(status); | |
65 | + if (status != 204 && status != 205) { | |
66 | + res.json(data); | |
67 | + } else { | |
68 | + res.end(); | |
69 | + } | |
70 | + }); | |
71 | +}; | |
72 | + | |
73 | +// Authentication | |
74 | +reqAuth = function (req, res, next) { | |
75 | + if (req.session.data && req.session.data.login) { | |
76 | + next(); | |
77 | + } else { | |
78 | + res.status(401).end(); | |
79 | + } | |
80 | +}; | |
81 | + | |
32 | 82 | reqVerified = function (verify) { // Assert mais pour les droits (d'où le 403) |
33 | 83 | return function (req, res, next) { |
34 | - reqAuth()(req, res, function () { | |
35 | - verify(req, res, function (err, verified) { | |
36 | - if (err) { | |
37 | - res.status(500).send(err); | |
38 | - } else { | |
39 | - if (verified) { | |
40 | - next(); | |
41 | - } else { | |
42 | - res.status(403).end(); | |
43 | - } | |
44 | - } | |
84 | + reqAuth(req, res, function () { | |
85 | + verify(req, res, function (err, data) { | |
86 | + cb = ensureExists(res, 403, function () { | |
87 | + next(); // Si on passe quoi que ce soit à next(), erreur 500 | |
88 | + }); | |
89 | + cb(err, data); | |
45 | 90 | }); |
46 | 91 | }); |
47 | 92 | }; |
... | ... | @@ -53,31 +98,19 @@ reqOwn = function (objName) { |
53 | 98 | }); |
54 | 99 | }; |
55 | 100 | |
56 | -reqMembre = function () { | |
57 | - return reqVerified(function (req, res, cb) { | |
58 | - cb(null, req.session.data.membre); | |
59 | - }); | |
60 | -}; | |
101 | +reqMembre = reqVerified(function (req, res, cb) { | |
102 | + cb(null, req.session.data.membre); | |
103 | +}); | |
61 | 104 | |
62 | -reqBureau = function () { | |
63 | - return reqVerified(function (req, res, cb) { | |
64 | - cb(null, req.session.data.bureau); | |
65 | - }); | |
66 | -}; | |
105 | +reqBureau = reqVerified(function (req, res, cb) { | |
106 | + cb(null, req.session.data.bureau); | |
107 | +}); | |
67 | 108 | |
68 | 109 | assert = function (test) { |
69 | 110 | return function (req, res, next) { |
70 | - test(req, res, function (err, verified) { | |
71 | - if (err) { | |
72 | - res.status(500).send(err); | |
73 | - } else { | |
74 | - if (verified) { | |
75 | - next(); | |
76 | - } else { | |
77 | - res.status(400).end(); | |
78 | - } | |
79 | - } | |
80 | - }); | |
111 | + test(req, res, ensureExists(res, 400, function () { | |
112 | + next(); | |
113 | + })); | |
81 | 114 | }; |
82 | 115 | }; |
83 | 116 | |
... | ... | @@ -94,6 +127,7 @@ decrypt = function () { |
94 | 127 | }; |
95 | 128 | }; |
96 | 129 | |
130 | + | |
97 | 131 | // Sessions |
98 | 132 | |
99 | 133 | sessionData = function (session, cb) { |
... | ... | @@ -130,241 +164,136 @@ api.get('/session', function (req, res) { // Informations sur la session |
130 | 164 | api.post('/session', decrypt(), assert(function (req, res, cb) { |
131 | 165 | cb(null, req.body && typeof req.body.login == 'string' && req.body.login !== '' && typeof req.body.pass == 'string' && req.body.pass !== ''); |
132 | 166 | }), function (req, res) { // Se connecter |
133 | - PolyUserServ.verify(req.body.login, req.body.pass, function (err, verified) { | |
134 | - if (err) { | |
135 | - res.status(500).send(err); | |
136 | - } else { | |
137 | - if (verified) { | |
138 | - sessionData({ | |
139 | - login: req.body.login | |
140 | - }, function (session) { | |
141 | - req.session.data = session; | |
142 | - req.session.save(function (err) { | |
143 | - if (err) { | |
144 | - res.status(500).end(err); | |
145 | - } else { | |
146 | - res.status(201).send(session); | |
147 | - } | |
148 | - }); | |
149 | - }); | |
150 | - } else { | |
151 | - req.session.destroy(function (err) { | |
167 | + PolyUserServ.verify(req.body.login, req.body.pass, ensureOkay(res, 500, function (verified) { | |
168 | + if (verified) { | |
169 | + sessionData({ | |
170 | + login: req.body.login | |
171 | + }, function (session) { | |
172 | + req.session.data = session; | |
173 | + req.session.save(function (err) { | |
152 | 174 | if (err) { |
153 | - res.status(500).end(err); | |
175 | + res.status(500).json(err); | |
154 | 176 | } else { |
155 | - res.status(401).end(); | |
177 | + res.status(201).json(session); | |
156 | 178 | } |
157 | 179 | }); |
158 | - } | |
180 | + }); | |
181 | + } else { | |
182 | + req.session.destroy(ensureOkay(res, 500, function () { | |
183 | + res.status(401).end(); | |
184 | + })); | |
159 | 185 | } |
160 | - }); | |
186 | + })); | |
161 | 187 | }); |
162 | 188 | |
163 | 189 | api.delete('/session', function (req, res) { // Se déconnecter |
164 | 190 | req.session.destroy(); |
165 | - res.status(200).end(); | |
191 | + res.status(205).end(); | |
166 | 192 | }); |
167 | 193 | |
168 | 194 | |
169 | 195 | // Membres |
170 | 196 | api.get('/membres', function (req, res) { // Liste des membres |
171 | - MembresServ.list(function (err, membres) { | |
172 | - if (err) | |
173 | - res.status(500).send(err); | |
174 | - else | |
175 | - res.json(membres); | |
176 | - }); | |
197 | + MembresServ.list(giveBack(res, 200)); | |
177 | 198 | }); |
178 | 199 | |
179 | 200 | api.post('/membres', assert(function (req, res, cb) { |
180 | 201 | cb(null, typeof req.body.login == 'string' && req.body.login !== ''); |
181 | -}), reqBureau(), function (req, res) { // Ajout d'un membre | |
182 | - MembresServ.add(req.body, function (err, membre) { | |
183 | - if (err) | |
184 | - res.status(500).send(err); | |
185 | - else | |
186 | - res.json(membre); | |
187 | - }); | |
202 | +}), reqBureau, function (req, res) { // Ajout d'un membre | |
203 | + MembresServ.add(req.body, giveBack(res, 201)); | |
188 | 204 | }); |
189 | 205 | |
190 | -api.delete('/membres/:membre_id', reqBureau(), function (req, res) { // Supression d'un membre | |
191 | - MembresServ.remove(req.params.membre_id, function (err, membre) { | |
192 | - if (err) | |
193 | - res.status(500).send(err); | |
194 | - else | |
195 | - res.json(null); | |
196 | - }); | |
206 | +api.delete('/membres/:membre_id', reqBureau, function (req, res) { // Supression d'un membre | |
207 | + MembresServ.remove(req.params.membre_id, giveBack(res, 205)); | |
197 | 208 | }); |
198 | 209 | |
199 | 210 | // Dossiers |
200 | -api.get('/dosss/:doss_id', reqAuth(), function (req, res) { // Un doss | |
211 | +api.get('/dosss/:doss_id', reqAuth, function (req, res) { // Un doss | |
201 | 212 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) |
202 | 213 | // TODO Requêtes séparées ? |
203 | - DosssServ.get(req.params.doss_id, function (err, doss) { // TODO Async | |
204 | - if (err) { | |
205 | - res.status(500).send(err); | |
206 | - } else if (!doss) { | |
207 | - res.status(404).end(); | |
208 | - } else { | |
209 | - DosssServ.children(doss._id, function (err, dosss) { | |
210 | - if (err) { | |
211 | - res.status(500).send(err); | |
212 | - } else { | |
213 | - doss.dosss = dosss; | |
214 | - ConvsServ.children(doss._id, function (err, convs) { | |
215 | - if (err) { | |
216 | - res.status(500).send(err); | |
217 | - } else { | |
218 | - doss.convs = convs; | |
219 | - res.json(doss); | |
220 | - } | |
221 | - }); | |
222 | - } | |
223 | - }); | |
224 | - } | |
225 | - }); | |
214 | + // TODO Async | |
215 | + DosssServ.get(req.params.doss_id, ensureExists(res, 404, function (doss) { | |
216 | + DosssServ.children(doss._id, ensureOkay(res, 500, function (dosss) { | |
217 | + ConvsServ.children(doss._id, ensureOkay(res, 500, function (convs) { | |
218 | + doss.dosss = dosss; | |
219 | + doss.convs = convs; | |
220 | + res.json(doss); | |
221 | + })); | |
222 | + })); | |
223 | + })); | |
226 | 224 | }); |
227 | 225 | |
228 | -api.post('/dosss', reqMembre(), function (req, res) { // Ajout d'un doss | |
226 | +api.post('/dosss', reqMembre, function (req, res) { // Ajout d'un doss | |
229 | 227 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) |
230 | 228 | DosssServ.getId(req.body.parent, function (parent) { // TODO Async |
231 | 229 | req.body.parent = parent; |
232 | - DosssServ.add(req.body, function (err, doss) { | |
233 | - if (err) | |
234 | - res.status(500).send(err); | |
235 | - else | |
236 | - res.json(doss); | |
237 | - }); | |
230 | + DosssServ.add(req.body, giveBackNull(res, 201)); | |
238 | 231 | }); |
239 | 232 | }); |
240 | 233 | |
241 | -api.delete('/dosss/:doss_id', reqBureau(), function (req, res) { // Supression d'un doss | |
242 | - DosssServ.remove(req.params.doss_id, function (err, doss) { | |
243 | - if (err) | |
244 | - res.status(500).send(err); | |
245 | - else | |
246 | - res.json(null); | |
247 | - }); | |
234 | +api.delete('/dosss/:doss_id', reqBureau, function (req, res) { // Supression d'un doss | |
235 | + DosssServ.remove(req.params.doss_id, giveBackNull(res, 205)); | |
248 | 236 | }); |
249 | 237 | |
250 | 238 | // Conversations |
251 | 239 | |
240 | +getSubject = function (modl) { | |
241 | + // TODO Gérer les dossiers | |
242 | + return function (req, res, next) { | |
243 | + modl.findById(req.params._id, ensureExists(res, 404, function (data) { | |
244 | + req.subject = data; | |
245 | + next(); | |
246 | + })); | |
247 | + }; | |
248 | +}; | |
249 | + | |
252 | 250 | getConv = function (req, res, next) { |
253 | - ConvModl.findById(req.params.conv_id, function (err, conv) { | |
254 | - if (err) { | |
255 | - res.status(500).json(err); | |
256 | - } else { | |
257 | - if (conv) { | |
258 | - req.conv = conv; | |
259 | - next(); | |
260 | - } else { | |
261 | - res.status(404).end(); | |
262 | - } | |
263 | - } | |
264 | - }); | |
251 | + ConvModl.findById(req.params.conv_id, ensureExists(res, 404, function (data) { | |
252 | + req.conv = conv; | |
253 | + next(); | |
254 | + })); | |
265 | 255 | }; |
266 | 256 | |
267 | -api.get('/convs/:conv_id', reqAuth(), getConv, function (req, res) { // Une conv | |
268 | - res.json(req.conv); | |
257 | +api.get('/convs/:_id', reqAuth, getSubject(ConvModl), function (req, res) { // Une conv | |
258 | + res.json(req.subject); | |
269 | 259 | }); |
270 | 260 | |
271 | -api.post('/convs', reqMembre(), function (req, res) { // Ajout d'un conv | |
261 | +// Ajout d'un conv | |
262 | +api.post('/convs', reqMembre, function (req, res) { | |
272 | 263 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) |
273 | 264 | DosssServ.getId(req.body.parent, function (parent) { // TODO Async |
274 | 265 | req.body.parent = parent; |
275 | - ConvsServ.add(req.body, function (err, conv) { | |
276 | - if (err) | |
277 | - res.status(500).send(err); | |
278 | - else | |
279 | - res.json(conv); | |
280 | - }); | |
266 | + ConvsServ.add(req.body, giveBack(res, 201)); | |
281 | 267 | }); |
282 | 268 | }); |
283 | 269 | |
284 | -api.delete('/convs/:conv_id', reqBureau(), getConv, function (req, res) { // Supression d'un conv | |
285 | - req.conv.remove(function (err) { | |
286 | - if (err) // TODO Fonction propre | |
287 | - res.status(500).send(err); | |
288 | - else | |
289 | - res.status(205).end(); | |
290 | - }); | |
270 | +// Supression d'un conv | |
271 | +api.delete('/convs/:_id', reqBureau, getSubject(ConvModl), function (req, res) { | |
272 | + req.subject.remove(giveBack(res, 205)); | |
291 | 273 | }); |
292 | 274 | |
293 | 275 | // Messages |
294 | -api.get('/messs/:conv_id', reqAuth(), function (req, res) { // Liste des messs | |
295 | - MessServ.list(req.params.conv_id, function (err, messs) { | |
296 | - if (err) | |
297 | - res.status(500).send(err); | |
298 | - else | |
299 | - res.json(messs); | |
300 | - }); | |
301 | -}); | |
302 | 276 | |
303 | -// api.get('/messs/:mess_id', reqAuth(), function (req, res) { // Une mess | |
304 | -// MessServ.get(req.params.mess_id, function (err, mess) { | |
305 | -// if (err) | |
306 | -// res.status(500).send(err); | |
307 | -// else | |
308 | -// res.json(mess); | |
309 | -// }); | |
310 | -// }); | |
277 | +api.get('/messs/:conv_id', reqAuth, function (req, res) { // Liste des messs | |
278 | + MessServ.list(req.params.conv_id, giveBackNull(res, 200)); | |
279 | +}); | |
311 | 280 | |
312 | -api.post('/messs', reqMembre(), function (req, res) { // Ajout d'un mess | |
281 | +api.post('/messs', reqMembre, function (req, res) { // Ajout d'un mess | |
313 | 282 | data = req.body; |
314 | 283 | data.login = req.session.data.login; |
315 | - MessServ.add(data, function (err, mess) { | |
316 | - if (err) | |
317 | - res.status(500).send(err); | |
318 | - else | |
319 | - res.json(mess); | |
320 | - }); | |
284 | + MessServ.add(data, giveBack(res, 201)); | |
321 | 285 | }); |
322 | 286 | |
323 | -api.put('/messs', reqMembre(), function (req, res, next) { // Édition d'un mess | |
324 | - MessModl.findById(req.body._id, function (err, mess) { // TODO Fonction propre | |
325 | - // TODO Utiliser req.params | |
326 | - if (err) { | |
327 | - res.status(500).json(err); | |
328 | - } else { | |
329 | - if (mess) { | |
330 | - req.mess = mess; | |
331 | - next(); | |
332 | - } else { | |
333 | - res.status(404).end(); | |
334 | - } | |
335 | - } | |
336 | - }); | |
337 | -}, reqOwn('mess'), function (req, res) { | |
338 | - req.mess.content = req.body.content; | |
287 | +// Édition d'un mess | |
288 | +api.put('/messs/:_id', reqMembre, getSubject(MessModl), reqOwn('mess'), function (req, res) { | |
289 | + req.subject.content = req.body.content; | |
339 | 290 | // TODO Edit date |
340 | - req.mess.save(function (err, mess) { | |
341 | - if (err) // TODO Fonction propre | |
342 | - res.status(500).send(err); | |
343 | - else | |
344 | - res.json(mess); | |
345 | - }); | |
291 | + req.subject.save(giveBack(res, 201)); | |
346 | 292 | }); |
347 | 293 | |
348 | -api.delete('/messs/:mess_id', reqMembre(), function (req, res, next) { // Supression d'un mess | |
349 | - MessModl.findById(req.params.mess_id, function (err, mess) { // TODO Fonction propre | |
350 | - if (err) { | |
351 | - res.status(500).json(err); | |
352 | - } else { | |
353 | - if (mess) { | |
354 | - req.mess = mess; | |
355 | - next(); | |
356 | - } else { | |
357 | - res.status(404).end(); | |
358 | - } | |
359 | - } | |
360 | - }); | |
361 | -}, reqOwn('mess'), function (req, res) { | |
362 | - req.mess.remove(function (err) { | |
363 | - if (err) // TODO Fonction propre | |
364 | - res.status(500).send(err); | |
365 | - else | |
366 | - res.status(205).end(); | |
367 | - }); | |
294 | +// Supression d'un mess | |
295 | +api.delete('/messs/:_id', reqMembre, getSubject(MessModl), reqOwn('mess'), function (req, res) { | |
296 | + req.subject.remove(giveBack(res, 205)); | |
368 | 297 | }); |
369 | 298 | |
370 | 299 | api.all('/coffee', function (req, res) { | ... | ... |
public/js/controllers/ForumConvCtrl.js
... | ... | @@ -8,10 +8,10 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) |
8 | 8 | SessionServ.onChange(function () { |
9 | 9 | $scope.session = SessionServ.cur; |
10 | 10 | }); |
11 | - ApiServ("récupération de la conversation", 'get', 'convs', $routeParams.conv_id, function (err, conv) { | |
11 | + ApiServ("récupération de la conversation", 'get', ['convs', $routeParams.conv_id], null, function (err, conv) { | |
12 | 12 | if (!err) { |
13 | 13 | $scope.conv = conv; |
14 | - ApiServ("récupération des messages", 'get', 'messs', conv._id, function (err, messs) { | |
14 | + ApiServ("récupération des messages", 'get', ['messs', conv._id], null, function (err, messs) { | |
15 | 15 | if (!err) { |
16 | 16 | $scope.messs = messs; |
17 | 17 | } |
... | ... | @@ -33,7 +33,7 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) |
33 | 33 | }; |
34 | 34 | |
35 | 35 | $scope.delMess = function (index) { |
36 | - ApiServ("suppression du message", 'delete', 'messs', $scope.messs[index]._id, function (err) { | |
36 | + ApiServ("suppression du message", 'delete', ['messs', $scope.messs[index]._id], null, function (err) { | |
37 | 37 | if (!err) |
38 | 38 | $scope.messs.splice(index, 1); |
39 | 39 | }); |
... | ... | @@ -42,9 +42,10 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) |
42 | 42 | $scope.editButton = function (index) { |
43 | 43 | mess = $scope.messs[index]; |
44 | 44 | if (mess.editMode) { |
45 | - ApiServ("édition du message", 'put', 'messs', mess, function (err, data) { | |
45 | + ApiServ("édition du message", 'put', ['messs', mess._id], { | |
46 | + content: mess.content | |
47 | + }, function (err, data) { | |
46 | 48 | if (!err) { |
47 | - console.log(data); | |
48 | 49 | mess.content = data.content; |
49 | 50 | mess.editDate = data.editDate; |
50 | 51 | mess.editMode = false; | ... | ... |
public/js/controllers/ForumDirCtrl.js
... | ... | @@ -10,7 +10,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) |
10 | 10 | $scope.session = SessionServ.cur; |
11 | 11 | }); |
12 | 12 | |
13 | - ApiServ("récupération du dossier", 'get', 'dosss', $routeParams.doss_id, function (err, doss) { | |
13 | + ApiServ("récupération du dossier", 'get', ['dosss', $routeParams.doss_id], null, function (err, doss) { | |
14 | 14 | if (err) { |
15 | 15 | console.error(err); |
16 | 16 | } else { |
... | ... | @@ -24,7 +24,6 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) |
24 | 24 | |
25 | 25 | // Dossiers |
26 | 26 | $scope.addDoss = function () { |
27 | - console.log('CALLA'); | |
28 | 27 | $scope.formDoss.parent = $routeParams.doss_id; |
29 | 28 | ApiServ("création du dossier", 'post', 'dosss', $scope.formDoss, function (err, doss) { |
30 | 29 | if (!err) { |
... | ... | @@ -35,7 +34,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) |
35 | 34 | }; |
36 | 35 | |
37 | 36 | $scope.delDoss = function (index) { |
38 | - ApiServ("suppression du dossier", 'delete', 'dosss', $scope.dosss[index]._id, function (err) { | |
37 | + ApiServ("suppression du dossier", 'delete', ['dosss', $scope.dosss[index]._id], null, function (err) { | |
39 | 38 | if (!err) |
40 | 39 | $scope.dosss.splice(index, 1); |
41 | 40 | }); |
... | ... | @@ -53,7 +52,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) |
53 | 52 | }; |
54 | 53 | |
55 | 54 | $scope.delConv = function (index) { |
56 | - ApiServ("suppression de la conversation", 'delete', 'convs', $scope.convs[index]._id, function (err) { | |
55 | + ApiServ("suppression de la conversation", 'delete', ['convs', $scope.convs[index]._id], null, function (err) { | |
57 | 56 | if (!err) |
58 | 57 | $scope.convs.splice(index, 1); |
59 | 58 | }); | ... | ... |
public/js/controllers/MembreCtrl.js
... | ... | @@ -8,7 +8,7 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ', 'ui.sortable']) |
8 | 8 | $scope.session = SessionServ.cur; |
9 | 9 | }); |
10 | 10 | |
11 | - ApiServ("récupération de la liste des membres", 'get', 'membres', function (err, membres) { | |
11 | + ApiServ("récupération de la liste des membres", 'get', 'membres', null, function (err, membres) { | |
12 | 12 | if (!err) |
13 | 13 | $scope.membres = membres; |
14 | 14 | }); |
... | ... | @@ -29,7 +29,7 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ', 'ui.sortable']) |
29 | 29 | }; |
30 | 30 | |
31 | 31 | $scope.deleteMembre = function (index) { |
32 | - ApiServ("création du membre", 'delete', 'membres', $scope.membres[index]._id, function (err, data) { | |
32 | + ApiServ("création du membre", 'delete', ['membres', $scope.membres[index]._id], null, function (err, data) { | |
33 | 33 | if (!err) { |
34 | 34 | $scope.membres.splice(index, 1); |
35 | 35 | } | ... | ... |
public/js/services/ApiServ.js
1 | 1 | angular.module('ApiServ', ['NotifyServ']) |
2 | 2 | .service('ApiServ', function ($http, NotifyServ) { |
3 | - return function (name, method, href) { | |
4 | - var cb; | |
5 | - link = '/api/' + href; | |
6 | - arglen = arguments.length; | |
7 | - if (typeof arguments[arglen - 1] == 'function') { | |
8 | - cb = arguments[arglen - 1]; | |
9 | - arglen--; | |
10 | - } else { | |
3 | + return function (name, method, params, data, cb) { | |
4 | + if (!cb) { | |
11 | 5 | cb = function () { |
12 | 6 | return undefined; |
13 | 7 | }; |
14 | 8 | } |
15 | 9 | |
16 | - if (method == 'get' || method == 'delete') { // TODO url & data en même temps | |
17 | - for (arg = 3; arg < arglen; arg++) { | |
18 | - link += '/' + arguments[arg]; | |
19 | - } | |
20 | - request = $http[method](link); | |
21 | - } else { | |
22 | - request = $http[method](link, arguments[3]); | |
10 | + link = '/api'; | |
11 | + if (typeof params == 'string') { | |
12 | + params = [params]; | |
23 | 13 | } |
24 | - request | |
14 | + for (var param in params) { | |
15 | + link += '/' + params[param]; | |
16 | + } | |
17 | + $http[method](link, data) | |
25 | 18 | .success(function (data) { |
26 | 19 | cb(null, data); |
27 | 20 | }) | ... | ... |
public/views/membres.html
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | <th>Nom</th> |
11 | 11 | <th>Section</th> |
12 | 12 | <th>Rôle</th> |
13 | - <th ng-show="session.canAddMembre || session.canDelMembre">Action</th> | |
13 | + <th ng-show="session.bureau">Action</th> | |
14 | 14 | </tr> |
15 | 15 | </thead> |
16 | 16 | <tbody as-sortable="dragControlListeners" ng-model="membres"> |
... | ... | @@ -18,7 +18,7 @@ |
18 | 18 | <td>{{ membre.nom }}</td> |
19 | 19 | <td>{{ membre.section }}</td> |
20 | 20 | <td>{{ membre.role }}</td> |
21 | - <td ng-show="session.canDelMembre"> | |
21 | + <td ng-show="session.bureau"> | |
22 | 22 | <button type="button" class="btn btn-default" aria-label="Déplacer" data-as-sortable-item-handle> |
23 | 23 | <span class="glyphicon glyphicon-resize-vertical" aria-hidden="true"></span> |
24 | 24 | </button> |
... | ... | @@ -28,7 +28,7 @@ |
28 | 28 | </td> |
29 | 29 | </tr> |
30 | 30 | </tbody> |
31 | - <tfoot id="membre-form" ng-show="session.canAddMembre"> | |
31 | + <tfoot id="membre-form" ng-show="session.bureau"> | |
32 | 32 | <tr class="form-group"> |
33 | 33 | <td> |
34 | 34 | <input type="text" class="form-control input-lg" placeholder="Login Polytech" ng-model="formData.login"> |
... | ... | @@ -46,4 +46,4 @@ |
46 | 46 | </tr> |
47 | 47 | </tfoot> |
48 | 48 | </table> |
49 | 49 | -</div> |
50 | +</div> | |
50 | 51 | \ No newline at end of file | ... | ... |