Blame view

app/controllers/sessions.js 2.69 KB
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
1
  var Session = require('../models/session');
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
2
  var noms = require('../controllers/noms');
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
3
  
2f593328   Geoffrey PREUD'HOMME   Linting
4
  var sessions = {};
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
5
  
2f593328   Geoffrey PREUD'HOMME   Linting
6
  sessions.cur = false;
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
7
  
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
8
9
10
  sessions.addData = function (session, cb) {
      noms.get(session.login, function (nom) {
          if (typeof nom == 'string') {
2f593328   Geoffrey PREUD'HOMME   Linting
11
              session.nom = nom;
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
12
          } else {
2f593328   Geoffrey PREUD'HOMME   Linting
13
              session.nom = 'Inconnu';
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
14
          }
2f593328   Geoffrey PREUD'HOMME   Linting
15
16
17
18
19
          session.canAddMembre = session.login == 'gbontoux';
          session.canDelMembre = session.login == 'gbontoux';
          cb(session);
      });
  };
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
20
21
  
  sessions.find = function (id, cb) {
2f593328   Geoffrey PREUD'HOMME   Linting
22
      _this = this;
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
23
24
25
      Session.findById(id).lean().exec(function (err, session) {
          if (typeof session == 'object') {
              _this.addData(session, function (session) {
2f593328   Geoffrey PREUD'HOMME   Linting
26
27
                  cb(err, session);
              });
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
28
          } else {
2f593328   Geoffrey PREUD'HOMME   Linting
29
              cb(err, null);
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
30
          }
2f593328   Geoffrey PREUD'HOMME   Linting
31
32
      });
  };
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
33
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
34
  sessions.valid = function (session) {
2f593328   Geoffrey PREUD'HOMME   Linting
35
36
      return session.started.setSeconds(session.started.getSeconds() + 3600) > new Date();
  };
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
37
38
39
40
41
  
  sessions.delete = function (id, cb) {
      Session.remove({
          _id: id
      }, cb);
2f593328   Geoffrey PREUD'HOMME   Linting
42
  };
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
43
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
44
  sessions.verify = function (id, cb) {
2f593328   Geoffrey PREUD'HOMME   Linting
45
      _this = this;
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
46
      _this.find(id, function (err, session) {
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
47
48
49
          if (err) {
              cb('error');
          } else {
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
50
51
              if (session) {
                  if (sessions.valid(session)) {
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
52
                      cb(null, session);
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
53
54
                  } else {
                      cb('expired');
2f593328   Geoffrey PREUD'HOMME   Linting
55
                      _this.delete(id);
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
56
                  }
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
57
              } else {
2f593328   Geoffrey PREUD'HOMME   Linting
58
                  cb('unknown');
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
59
60
61
              }
          }
      });
2f593328   Geoffrey PREUD'HOMME   Linting
62
  };
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
63
  
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
64
  sessions.use = function (id, cb) {
2f593328   Geoffrey PREUD'HOMME   Linting
65
      _this = this;
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
66
67
      _this.verify(id, function (err, session) {
          if (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
68
              cb(err);
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
69
          } else {
2f593328   Geoffrey PREUD'HOMME   Linting
70
71
              _this.cur = session;
              cb(null);
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
72
          }
2f593328   Geoffrey PREUD'HOMME   Linting
73
74
      });
  };
69695d81   Geoffrey PREUD'HOMME   Serveur: Vérifica...
75
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
76
77
78
79
  sessions.create = function (login, cb) {
      Session.create({
          login: login
      }, cb);
2f593328   Geoffrey PREUD'HOMME   Linting
80
  };
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
81
82
83
  
  sessions.login = function (data, cb) {
      // DUMMY
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
84
      noms.get(data.login, function (nom) {
2f593328   Geoffrey PREUD'HOMME   Linting
85
86
          if (nom === false) {
              cb(null, false);
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
87
88
          } else {
              if (data.pass == 'cool') {
2f593328   Geoffrey PREUD'HOMME   Linting
89
                  cb(null, true);
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
90
              } else {
2f593328   Geoffrey PREUD'HOMME   Linting
91
                  cb(null, false);
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
92
93
              }
          }
2f593328   Geoffrey PREUD'HOMME   Linting
94
95
      });
  };
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
96
97
  
  sessions.open = function (data, cb) {
2f593328   Geoffrey PREUD'HOMME   Linting
98
      _this = this;
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
99
      _this.login(data, function (err, res) {
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
100
          if (err) {
2f593328   Geoffrey PREUD'HOMME   Linting
101
              cb('error');
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
102
103
          } else {
              if (res) {
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
104
                  _this.create(data.login, function (err, session) {
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
105
106
107
                      if (err) {
                          cb('error');
                      } else {
2f593328   Geoffrey PREUD'HOMME   Linting
108
                          _this.use(session._id, cb);
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
109
110
111
                      }
                  });
              } else {
2f593328   Geoffrey PREUD'HOMME   Linting
112
                  cb('invalid');
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
113
114
115
              }
          }
      });
2f593328   Geoffrey PREUD'HOMME   Linting
116
  };
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
117
  
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
118
  module.exports = sessions;