Blame view

public/js/services/SessionServ.js 2.47 KB
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
1
  angular.module('SessionsServ', []).service('SessionService', ['$http', 'EncryptService',
2f593328   Geoffrey PREUD'HOMME   Linting
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
      function ($http, EncryptService) {
          a = {
              cur: false,
              status: 0,
              changeHandlers: [],
              onChange: function (fun) {
                  this.changeHandlers.push(fun);
              },
              triggerChange: function () {
                  for (var fun in this.changeHandlers) {
                      this.changeHandlers[fun]();
                  }
              },
              updateSessionInfos: function (data) {
                  console.log("Connection:", data);
                  if (typeof data === 'object') {
                      this.cur = data;
                  } else {
                      this.cur = false;
                  }
                  this.triggerChange();
              },
              get: function (cb) { // Fetch infos if needed
                  if (status === 0) {
                      this.status = 1; // Fetching
                      _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);
                              }
                          }
                      });
                  } else {
                      console.warn("Unnecessary get() call");
                  }
              },
              connect: function (login, pass, cb) {
                  _this = this;
                  data = JSON.stringify({
                      login: login,
                      pass: pass
                  });
                  EncryptService.encrypt(data, function (dataCrypt) {
                      $http.post('/api/session', [dataCrypt]).success(function (body) {
                          _this.updateSessionInfos(body);
                          if (cb) {
                              if (this.logged) {
                                  cb(null);
                              } else {
                                  cb(body);
                              }
                          }
                      });
                  });
              },
              disconnect: function () {
                  this.updateSessionInfos(false);
                  $http.delete('/api/session');
8bb442a5   Geoffrey PREUD'HOMME   Possibilité de se...
65
              }
2f593328   Geoffrey PREUD'HOMME   Linting
66
67
68
69
          };
          a.get();
          return a;
      }
2201e360   Geoffrey PREUD'HOMME   Le login se fait ...
70
  ]);