Blame view

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