Blame view

app/controllers/sessions.js 2.29 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
4
5
  
  var sessions = {}
  
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  sessions.addData = function (session, cb) {
      noms.get(session.login, function (nom) {
          if (typeof nom == 'string') {
              session.nom = nom
          } else {
              session.nom = 'Inconnu'
          }
          cb(session)
      })
  }
  
  sessions.find = function (id, cb) {
      _this = this
      Session.findById(id).lean().exec(function (err, session) {
          if (typeof session == 'object') {
              _this.addData(session, function (session) {
                  cb(err, session)
              })
          } else {
              cb(err, null)
          }
      })
  }
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
30
  sessions.valid = function (session) {
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
31
      return session.started.setSeconds(session.started.getSeconds() + 3600) > new Date()
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
32
33
34
35
36
37
38
39
  }
  
  sessions.delete = function (id, cb) {
      Session.remove({
          _id: id
      }, cb);
  }
  
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
40
  sessions.verify = function (id, cb) {
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
41
      _this = this
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
42
      _this.find(id, function (err, session) {
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
43
44
45
          if (err) {
              cb('error');
          } else {
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
46
47
48
49
50
51
52
              if (session) {
                  if (sessions.valid(session)) {
                      cb(err, session);
                  } else {
                      cb('expired');
                      _this.delete(id)
                  }
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
53
              } else {
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
54
                  cb('unknown')
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
55
56
57
58
59
60
61
62
63
64
65
66
67
              }
          }
      });
  }
  
  sessions.create = function (login, cb) {
      Session.create({
          login: login
      }, cb);
  }
  
  sessions.login = function (data, cb) {
      // DUMMY
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
68
69
70
71
72
73
74
75
76
77
78
      noms.get(data.login, function (nom) {
          if (nom == false) {
              cb(null, false)
          } else {
              if (data.pass == 'cool') {
                  cb(null, true)
              } else {
                  cb(null, false)
              }
          }
      })
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
79
80
81
  }
  
  sessions.open = function (data, cb) {
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
82
83
      _this = this
      _this.login(data, function (err, res) {
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
84
85
86
87
          if (err) {
              cb('error')
          } else {
              if (res) {
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
88
                  _this.create(data.login, function (err, session) {
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
89
90
91
                      if (err) {
                          cb('error');
                      } else {
dafb4eeb   Geoffrey PREUD'HOMME   Affichage des nom...
92
                          _this.find(session._id, cb)
10852373   Geoffrey PREUD'HOMME   Session contrôleu...
93
94
95
96
97
98
99
100
101
102
                      }
                  });
              } else {
                  cb('invalid')
              }
          }
      });
  }
  
  module.exports = sessions;