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,30 +18,75 @@ var api = express(); | ||
18 | // Connection à la BDD | 18 | // Connection à la BDD |
19 | mongoose.connect(require('../../config/db').url); | 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 | } else { | 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 | reqVerified = function (verify) { // Assert mais pour les droits (d'où le 403) | 82 | reqVerified = function (verify) { // Assert mais pour les droits (d'où le 403) |
33 | return function (req, res, next) { | 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,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 | assert = function (test) { | 109 | assert = function (test) { |
69 | return function (req, res, next) { | 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,6 +127,7 @@ decrypt = function () { | ||
94 | }; | 127 | }; |
95 | }; | 128 | }; |
96 | 129 | ||
130 | + | ||
97 | // Sessions | 131 | // Sessions |
98 | 132 | ||
99 | sessionData = function (session, cb) { | 133 | sessionData = function (session, cb) { |
@@ -130,241 +164,136 @@ api.get('/session', function (req, res) { // Informations sur la session | @@ -130,241 +164,136 @@ api.get('/session', function (req, res) { // Informations sur la session | ||
130 | api.post('/session', decrypt(), assert(function (req, res, cb) { | 164 | api.post('/session', decrypt(), assert(function (req, res, cb) { |
131 | cb(null, req.body && typeof req.body.login == 'string' && req.body.login !== '' && typeof req.body.pass == 'string' && req.body.pass !== ''); | 165 | cb(null, req.body && typeof req.body.login == 'string' && req.body.login !== '' && typeof req.body.pass == 'string' && req.body.pass !== ''); |
132 | }), function (req, res) { // Se connecter | 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 | if (err) { | 174 | if (err) { |
153 | - res.status(500).end(err); | 175 | + res.status(500).json(err); |
154 | } else { | 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 | api.delete('/session', function (req, res) { // Se déconnecter | 189 | api.delete('/session', function (req, res) { // Se déconnecter |
164 | req.session.destroy(); | 190 | req.session.destroy(); |
165 | - res.status(200).end(); | 191 | + res.status(205).end(); |
166 | }); | 192 | }); |
167 | 193 | ||
168 | 194 | ||
169 | // Membres | 195 | // Membres |
170 | api.get('/membres', function (req, res) { // Liste des membres | 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 | api.post('/membres', assert(function (req, res, cb) { | 200 | api.post('/membres', assert(function (req, res, cb) { |
180 | cb(null, typeof req.body.login == 'string' && req.body.login !== ''); | 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 | // Dossiers | 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 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) | 212 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) |
202 | // TODO Requêtes séparées ? | 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 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) | 227 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) |
230 | DosssServ.getId(req.body.parent, function (parent) { // TODO Async | 228 | DosssServ.getId(req.body.parent, function (parent) { // TODO Async |
231 | req.body.parent = parent; | 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 | // Conversations | 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 | getConv = function (req, res, next) { | 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 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) | 263 | // TODO Assertion 404 existe, transformer req.body.id avec la vraie id (ou redirect) |
273 | DosssServ.getId(req.body.parent, function (parent) { // TODO Async | 264 | DosssServ.getId(req.body.parent, function (parent) { // TODO Async |
274 | req.body.parent = parent; | 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 | // Messages | 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 | data = req.body; | 282 | data = req.body; |
314 | data.login = req.session.data.login; | 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 | // TODO Edit date | 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 | api.all('/coffee', function (req, res) { | 299 | api.all('/coffee', function (req, res) { |
public/js/controllers/ForumConvCtrl.js
@@ -8,10 +8,10 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) | @@ -8,10 +8,10 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) | ||
8 | SessionServ.onChange(function () { | 8 | SessionServ.onChange(function () { |
9 | $scope.session = SessionServ.cur; | 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 | if (!err) { | 12 | if (!err) { |
13 | $scope.conv = conv; | 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 | if (!err) { | 15 | if (!err) { |
16 | $scope.messs = messs; | 16 | $scope.messs = messs; |
17 | } | 17 | } |
@@ -33,7 +33,7 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) | @@ -33,7 +33,7 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) | ||
33 | }; | 33 | }; |
34 | 34 | ||
35 | $scope.delMess = function (index) { | 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 | if (!err) | 37 | if (!err) |
38 | $scope.messs.splice(index, 1); | 38 | $scope.messs.splice(index, 1); |
39 | }); | 39 | }); |
@@ -42,9 +42,10 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) | @@ -42,9 +42,10 @@ angular.module('ForumConvCtrl', ['SessionsServ', 'ApiServ', 'MessEditDrct']) | ||
42 | $scope.editButton = function (index) { | 42 | $scope.editButton = function (index) { |
43 | mess = $scope.messs[index]; | 43 | mess = $scope.messs[index]; |
44 | if (mess.editMode) { | 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 | if (!err) { | 48 | if (!err) { |
47 | - console.log(data); | ||
48 | mess.content = data.content; | 49 | mess.content = data.content; |
49 | mess.editDate = data.editDate; | 50 | mess.editDate = data.editDate; |
50 | mess.editMode = false; | 51 | mess.editMode = false; |
public/js/controllers/ForumDirCtrl.js
@@ -10,7 +10,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | @@ -10,7 +10,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | ||
10 | $scope.session = SessionServ.cur; | 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 | if (err) { | 14 | if (err) { |
15 | console.error(err); | 15 | console.error(err); |
16 | } else { | 16 | } else { |
@@ -24,7 +24,6 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | @@ -24,7 +24,6 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | ||
24 | 24 | ||
25 | // Dossiers | 25 | // Dossiers |
26 | $scope.addDoss = function () { | 26 | $scope.addDoss = function () { |
27 | - console.log('CALLA'); | ||
28 | $scope.formDoss.parent = $routeParams.doss_id; | 27 | $scope.formDoss.parent = $routeParams.doss_id; |
29 | ApiServ("création du dossier", 'post', 'dosss', $scope.formDoss, function (err, doss) { | 28 | ApiServ("création du dossier", 'post', 'dosss', $scope.formDoss, function (err, doss) { |
30 | if (!err) { | 29 | if (!err) { |
@@ -35,7 +34,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | @@ -35,7 +34,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | ||
35 | }; | 34 | }; |
36 | 35 | ||
37 | $scope.delDoss = function (index) { | 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 | if (!err) | 38 | if (!err) |
40 | $scope.dosss.splice(index, 1); | 39 | $scope.dosss.splice(index, 1); |
41 | }); | 40 | }); |
@@ -53,7 +52,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | @@ -53,7 +52,7 @@ angular.module('ForumDirCtrl', ['SessionsServ', 'ApiServ']) | ||
53 | }; | 52 | }; |
54 | 53 | ||
55 | $scope.delConv = function (index) { | 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 | if (!err) | 56 | if (!err) |
58 | $scope.convs.splice(index, 1); | 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,7 +8,7 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ', 'ui.sortable']) | ||
8 | $scope.session = SessionServ.cur; | 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 | if (!err) | 12 | if (!err) |
13 | $scope.membres = membres; | 13 | $scope.membres = membres; |
14 | }); | 14 | }); |
@@ -29,7 +29,7 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ', 'ui.sortable']) | @@ -29,7 +29,7 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ', 'ui.sortable']) | ||
29 | }; | 29 | }; |
30 | 30 | ||
31 | $scope.deleteMembre = function (index) { | 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 | if (!err) { | 33 | if (!err) { |
34 | $scope.membres.splice(index, 1); | 34 | $scope.membres.splice(index, 1); |
35 | } | 35 | } |
public/js/services/ApiServ.js
1 | angular.module('ApiServ', ['NotifyServ']) | 1 | angular.module('ApiServ', ['NotifyServ']) |
2 | .service('ApiServ', function ($http, NotifyServ) { | 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 | cb = function () { | 5 | cb = function () { |
12 | return undefined; | 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 | .success(function (data) { | 18 | .success(function (data) { |
26 | cb(null, data); | 19 | cb(null, data); |
27 | }) | 20 | }) |
public/views/membres.html
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | <th>Nom</th> | 10 | <th>Nom</th> |
11 | <th>Section</th> | 11 | <th>Section</th> |
12 | <th>Rôle</th> | 12 | <th>Rôle</th> |
13 | - <th ng-show="session.canAddMembre || session.canDelMembre">Action</th> | 13 | + <th ng-show="session.bureau">Action</th> |
14 | </tr> | 14 | </tr> |
15 | </thead> | 15 | </thead> |
16 | <tbody as-sortable="dragControlListeners" ng-model="membres"> | 16 | <tbody as-sortable="dragControlListeners" ng-model="membres"> |
@@ -18,7 +18,7 @@ | @@ -18,7 +18,7 @@ | ||
18 | <td>{{ membre.nom }}</td> | 18 | <td>{{ membre.nom }}</td> |
19 | <td>{{ membre.section }}</td> | 19 | <td>{{ membre.section }}</td> |
20 | <td>{{ membre.role }}</td> | 20 | <td>{{ membre.role }}</td> |
21 | - <td ng-show="session.canDelMembre"> | 21 | + <td ng-show="session.bureau"> |
22 | <button type="button" class="btn btn-default" aria-label="Déplacer" data-as-sortable-item-handle> | 22 | <button type="button" class="btn btn-default" aria-label="Déplacer" data-as-sortable-item-handle> |
23 | <span class="glyphicon glyphicon-resize-vertical" aria-hidden="true"></span> | 23 | <span class="glyphicon glyphicon-resize-vertical" aria-hidden="true"></span> |
24 | </button> | 24 | </button> |
@@ -28,7 +28,7 @@ | @@ -28,7 +28,7 @@ | ||
28 | </td> | 28 | </td> |
29 | </tr> | 29 | </tr> |
30 | </tbody> | 30 | </tbody> |
31 | - <tfoot id="membre-form" ng-show="session.canAddMembre"> | 31 | + <tfoot id="membre-form" ng-show="session.bureau"> |
32 | <tr class="form-group"> | 32 | <tr class="form-group"> |
33 | <td> | 33 | <td> |
34 | <input type="text" class="form-control input-lg" placeholder="Login Polytech" ng-model="formData.login"> | 34 | <input type="text" class="form-control input-lg" placeholder="Login Polytech" ng-model="formData.login"> |
@@ -46,4 +46,4 @@ | @@ -46,4 +46,4 @@ | ||
46 | </tr> | 46 | </tr> |
47 | </tfoot> | 47 | </tfoot> |
48 | </table> | 48 | </table> |
49 | -</div> | 49 | -</div> |
50 | +</div> | ||
50 | \ No newline at end of file | 51 | \ No newline at end of file |