Commit 89bc7c99e2f1af1b6316df97ca6d17e4d20dc3fa

Authored by Geoffrey PREUD'HOMME
1 parent 097f26f7

Améliorations diverses

* Correction de certains plantages eventuels si aucune donnée n'était envoyée
* Amélioré l'affichage de certaines erreurs
app/routes/ApiRtes.js
@@ -10,6 +10,9 @@ var api = express(); @@ -10,6 +10,9 @@ var api = express();
10 // Authentication 10 // Authentication
11 reqAuth = function () { 11 reqAuth = function () {
12 return function (req, res, next) { 12 return function (req, res, next) {
  13 + if (!req.cookies) {
  14 + res.status(401).end();
  15 + }
13 SessionsServ.use(req.cookies.session, function (err, session) { 16 SessionsServ.use(req.cookies.session, function (err, session) {
14 if (err) { 17 if (err) {
15 res.status(500).send(err); 18 res.status(500).send(err);
@@ -51,22 +54,32 @@ reqPerm = function (perm) { @@ -51,22 +54,32 @@ reqPerm = function (perm) {
51 54
52 assert = function (test) { 55 assert = function (test) {
53 return function (req, res, next) { 56 return function (req, res, next) {
54 - reqAuth()(req, res, function () {  
55 - test(req, res, function (err, verified) {  
56 - if (err) {  
57 - res.status(500).send(err); 57 + test(req, res, function (err, verified) {
  58 + if (err) {
  59 + res.status(500).send(err);
  60 + } else {
  61 + if (verified) {
  62 + next();
58 } else { 63 } else {
59 - if (verified) {  
60 - next();  
61 - } else {  
62 - res.status(400).end();  
63 - } 64 + res.status(400).end();
64 } 65 }
65 - }); 66 + }
66 }); 67 });
67 }; 68 };
68 }; 69 };
69 70
  71 +decrypt = function () {
  72 + return function (req, res, next) {
  73 + assert(function (req, res, cb) {
  74 + cb(null, req.body && typeof req.body[0] == 'string' && req.body[0] !== '');
  75 + })(req, res, function () {
  76 + DecryptServ.decrypt(req.body[0], function (data) {
  77 + req.body = JSON.parse(data);
  78 + next();
  79 + });
  80 + });
  81 + };
  82 +};
70 83
71 // Sessions 84 // Sessions
72 api.get('/session', function (req, res) { // Informations sur la session 85 api.get('/session', function (req, res) { // Informations sur la session
@@ -84,16 +97,16 @@ api.get('/session', function (req, res) { // Informations sur la session @@ -84,16 +97,16 @@ api.get('/session', function (req, res) { // Informations sur la session
84 } 97 }
85 }); 98 });
86 99
87 -api.post('/session', function (req, res) { // Se connecter  
88 - DecryptServ.decrypt(req.body[0], function (data) {  
89 - SessionsServ.open(JSON.parse(data), function (err, session) {  
90 - if (err) {  
91 - res.status(500).send(err);  
92 - } else {  
93 - res.cookie('session', session._id);  
94 - res.send(session);  
95 - }  
96 - }); 100 +api.post('/session', decrypt(), assert(function (req, res, cb) {
  101 + cb(null, req.body && typeof req.body.login == 'string' && req.body.login !== '' && typeof req.body.pass == 'string' && req.body.pass !== '');
  102 +}), function (req, res) { // Se connecter
  103 + SessionsServ.open(req.body, function (err, session) {
  104 + if (err) {
  105 + res.status(500).send(err);
  106 + } else {
  107 + res.cookie('session', session._id);
  108 + res.send(session);
  109 + }
97 }); 110 });
98 }); 111 });
99 112
app/services/MembresServ.js
@@ -49,10 +49,8 @@ MembresServ.estBureau = function (login, cb) { @@ -49,10 +49,8 @@ MembresServ.estBureau = function (login, cb) {
49 }, function (err, data) { 49 }, function (err, data) {
50 if (!err && data && data.role != 'Membre') { 50 if (!err && data && data.role != 'Membre') {
51 cb(true); 51 cb(true);
52 - console.log(true);  
53 } else { 52 } else {
54 cb(false); 53 cb(false);
55 - console.log(false);  
56 } 54 }
57 }); 55 });
58 }; 56 };
public/js/controllers/ConnectCtrl.js
@@ -7,7 +7,7 @@ angular.module('ConnectCtrl', ['SessionsServ', 'EncryptServ', 'angular-ladda']). @@ -7,7 +7,7 @@ angular.module('ConnectCtrl', ['SessionsServ', 'EncryptServ', 'angular-ladda']).
7 $scope.connect = { 7 $scope.connect = {
8 connect: function () { 8 connect: function () {
9 $scope.connecting = true; 9 $scope.connecting = true;
10 - SessionServ.connect($scope.connect.login, $scope.connect.pass, function(err) { 10 + SessionServ.connect($scope.connect.login, $scope.connect.pass, function (err) {
11 $scope.connecting = false; 11 $scope.connecting = false;
12 if (!err) { 12 if (!err) {
13 window.history.back(); 13 window.history.back();
public/js/controllers/MembreCtrl.js
@@ -14,14 +14,18 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ']).controller('MembreCtrl @@ -14,14 +14,18 @@ angular.module('MembreCtrl', ['SessionsServ', 'ApiServ']).controller('MembreCtrl
14 14
15 $scope.createMembre = function () { 15 $scope.createMembre = function () {
16 ApiServ("création du membre", 'post', 'membres', $scope.formData, function (err, membre) { 16 ApiServ("création du membre", 'post', 'membres', $scope.formData, function (err, membre) {
17 - $scope.formData = {};  
18 - $scope.membres.push(membre); 17 + if (!err) {
  18 + $scope.formData = {};
  19 + $scope.membres.push(membre);
  20 + }
19 }); 21 });
20 }; 22 };
21 23
22 $scope.deleteMembre = function (index) { 24 $scope.deleteMembre = function (index) {
23 ApiServ("création du membre", 'delete', 'membres', $scope.membres[index]._id, function (err, data) { 25 ApiServ("création du membre", 'delete', 'membres', $scope.membres[index]._id, function (err, data) {
24 - $scope.membres.splice(index, 1); 26 + if (!err) {
  27 + $scope.membres.splice(index, 1);
  28 + }
25 }); 29 });
26 }; 30 };
27 } 31 }
public/js/services/ApiServ.js
@@ -26,7 +26,7 @@ angular.module('ApiServ', ['NotifyServ']).service('ApiServ', ['$http', 'NotifySe @@ -26,7 +26,7 @@ angular.module('ApiServ', ['NotifyServ']).service('ApiServ', ['$http', 'NotifySe
26 }) 26 })
27 .error(function (data, status) { 27 .error(function (data, status) {
28 cb(status); 28 cb(status);
29 - NotifyServ.error("Échec : ", name, status + (data ? ' : ' + data : '')); 29 + NotifyServ.error("Échec : ", name, status + (data ? ' : ' + JSON.stringify(data) : ''));
30 // console.error(name, status, data); 30 // console.error(name, status, data);
31 }); 31 });
32 }; 32 };
public/js/services/SessionServ.js
@@ -47,18 +47,17 @@ angular.module('SessionsServ', ['NotifyServ', 'EncryptServ']).service('SessionSe @@ -47,18 +47,17 @@ angular.module('SessionsServ', ['NotifyServ', 'EncryptServ']).service('SessionSe
47 _this.updateSessionInfos(body); 47 _this.updateSessionInfos(body);
48 if (_this.cur) { 48 if (_this.cur) {
49 not.success("Connecté en tant que <strong>" + _this.cur.nom + "</strong>"); 49 not.success("Connecté en tant que <strong>" + _this.cur.nom + "</strong>");
50 - if (cb)  
51 - cb(null); 50 + cb(null);
52 } else { 51 } else {
53 if (body === 'invalid') { 52 if (body === 'invalid') {
54 not.warn("Identifiants invalides"); 53 not.warn("Identifiants invalides");
55 } 54 }
56 - if (cb)  
57 - cb(body); 55 + cb(body);
58 } 56 }
59 - }).error(function (body) {  
60 - not.error("Impossible de se connecter", body);  
61 - cb(body); 57 + }).error(function (data, status) {
  58 + err = status + (data ? ' : ' + JSON.stringify(data) : '');
  59 + not.error("Impossible de se connecter", err);
  60 + cb(err);
62 }); 61 });
63 }); 62 });
64 }, 63 },