Blame view

public/js/services/SessionServ.js 3.03 KB
fa42131e   Geoffrey PREUD'HOMME   Réglage des dépen...
1
  angular.module('SessionsServ', ['NotifyServ', 'EncryptServ']).service('SessionServ', ['$http', 'EncryptServ', 'NotifyServ',
b5dead51   Geoffrey PREUD'HOMME   Notifications
2
      function ($http, EncryptServ, NotifyServ) {
2f593328   Geoffrey PREUD'HOMME   Linting
3
4
          a = {
              cur: false,
2f593328   Geoffrey PREUD'HOMME   Linting
5
6
7
8
9
10
11
12
13
14
              changeHandlers: [],
              onChange: function (fun) {
                  this.changeHandlers.push(fun);
              },
              triggerChange: function () {
                  for (var fun in this.changeHandlers) {
                      this.changeHandlers[fun]();
                  }
              },
              updateSessionInfos: function (data) {
2f593328   Geoffrey PREUD'HOMME   Linting
15
16
                  if (typeof data === 'object') {
                      this.cur = data;
b5dead51   Geoffrey PREUD'HOMME   Notifications
17
                  } else if (data === 'expired') {
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
18
                      NotifyServ.warn("Session expirée");
2f593328   Geoffrey PREUD'HOMME   Linting
19
20
21
22
23
24
                  } else {
                      this.cur = false;
                  }
                  this.triggerChange();
              },
              get: function (cb) { // Fetch infos if needed
338930e1   Geoffrey PREUD'HOMME   La session n'étai...
25
26
27
28
29
30
31
32
33
                  _this = this;
                  // TODO Verify if cookies to prevent uneeded request
                  $http.get('/api/session').success(function (body) {
                      _this.updateSessionInfos(body);
                      if (cb) {
                          if (this.logged) {
                              cb(null);
                          } else {
                              cb(body);
2f593328   Geoffrey PREUD'HOMME   Linting
34
                          }
338930e1   Geoffrey PREUD'HOMME   La session n'étai...
35
36
                      }
                  });
2f593328   Geoffrey PREUD'HOMME   Linting
37
38
39
              },
              connect: function (login, pass, cb) {
                  _this = this;
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
40
                  var not = NotifyServ.promise("Connexion...");
2f593328   Geoffrey PREUD'HOMME   Linting
41
42
43
44
                  data = JSON.stringify({
                      login: login,
                      pass: pass
                  });
7a1fe62d   Geoffrey PREUD'HOMME   Consistence des noms
45
                  EncryptServ.encrypt(data, function (dataCrypt) {
2f593328   Geoffrey PREUD'HOMME   Linting
46
47
                      $http.post('/api/session', [dataCrypt]).success(function (body) {
                          _this.updateSessionInfos(body);
b5dead51   Geoffrey PREUD'HOMME   Notifications
48
                          if (_this.cur) {
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
49
                              not.success("Connecté en tant que <strong>" + _this.cur.nom + "</strong>");
b5dead51   Geoffrey PREUD'HOMME   Notifications
50
                              if (cb)
2f593328   Geoffrey PREUD'HOMME   Linting
51
                                  cb(null);
b5dead51   Geoffrey PREUD'HOMME   Notifications
52
53
                          } else {
                              if (body === 'invalid') {
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
54
                                  not.warn("Identifiants invalides");
2f593328   Geoffrey PREUD'HOMME   Linting
55
                              }
b5dead51   Geoffrey PREUD'HOMME   Notifications
56
57
                              if (cb)
                                  cb(body);
2f593328   Geoffrey PREUD'HOMME   Linting
58
                          }
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
59
60
                      }).error(function (body) {
                          not.error("Impossible de se connecter", body);
2f593328   Geoffrey PREUD'HOMME   Linting
61
62
63
64
                      });
                  });
              },
              disconnect: function () {
b5dead51   Geoffrey PREUD'HOMME   Notifications
65
                  _this = this;
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
66
                  var not = NotifyServ.promise("Déconnexion...");
b5dead51   Geoffrey PREUD'HOMME   Notifications
67
68
                  $http.delete('/api/session').success(function () {
                      _this.updateSessionInfos(false);
501a9b80   Geoffrey PREUD'HOMME   Meilleures notifi...
69
70
71
                      not.success("Déconnecté");
                  }).error(function(body) {
                      not.error("Impossible de se déconnecter", body);
b5dead51   Geoffrey PREUD'HOMME   Notifications
72
                  });
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
73
              }
2f593328   Geoffrey PREUD'HOMME   Linting
74
75
76
77
          };
          a.get();
          return a;
      }
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
78
  ]);