Commit 79edca45826435667b18f8691782591c3b4c01cd

Authored by Geoffrey PREUD'HOMME
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  
... ...