@osimatic/helpers-js 1.0.98 → 1.0.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG +5 -0
- package/http_client.js +1 -5
- package/jwt.js +117 -36
- package/network.js +1 -0
- package/package.json +1 -1
package/CHANGELOG
CHANGED
|
@@ -52,3 +52,8 @@ DataTable.displayErrorFromXhr -> DataTable.displayError
|
|
|
52
52
|
|
|
53
53
|
1.0.96
|
|
54
54
|
var intlTelInputUtilsPath = 'xxx'; -> TelephoneNumber.setIntlTelInputUtilsPath('xxx');
|
|
55
|
+
|
|
56
|
+
1.0.99
|
|
57
|
+
JwtSession.isSimulationConnexion() -> JwtSession.simulateLogin() (fonctionnement différent)
|
|
58
|
+
JwtSession.cancelSimulationConnexion() -> JwtSession.cancelSimulatedLogin() (fonctionnement différent)
|
|
59
|
+
HTTPRequest -> HTTPClient
|
package/http_client.js
CHANGED
|
@@ -332,13 +332,9 @@ class HTTPClient {
|
|
|
332
332
|
|
|
333
333
|
HTTPClient.request('POST', HTTPClient.refreshTokenUrl, payload,
|
|
334
334
|
(data) => {
|
|
335
|
-
JwtSession.
|
|
336
|
-
JwtSession.setRefreshToken(data['refresh_token']);
|
|
337
|
-
|
|
335
|
+
JwtSession.updateToken(data['token'], data['refresh_token']);
|
|
338
336
|
HTTPClient.setAuthorizationToken(JwtSession.getToken());
|
|
339
|
-
|
|
340
337
|
onRefreshTokenComplete();
|
|
341
|
-
|
|
342
338
|
},
|
|
343
339
|
() => {
|
|
344
340
|
JwtSession.logout();
|
package/jwt.js
CHANGED
|
@@ -9,15 +9,6 @@ class JwtToken {
|
|
|
9
9
|
return JSON.parse(jsonPayload);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
static hasRole(token, role) {
|
|
13
|
-
if (token == null) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
let payload = JwtToken.parseJwt(token);
|
|
18
|
-
return typeof payload['roles'] != 'undefined' && payload['roles'].indexOf(role) !== -1;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
12
|
static getData(token, key) {
|
|
22
13
|
if (token == null) {
|
|
23
14
|
return null;
|
|
@@ -29,52 +20,81 @@ class JwtToken {
|
|
|
29
20
|
}
|
|
30
21
|
return null;
|
|
31
22
|
}
|
|
32
|
-
}
|
|
33
23
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
roles.forEach(role => {
|
|
39
|
-
if (JwtSession.isGranted(role)) {
|
|
40
|
-
hasRole = true;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
24
|
+
static hasRole(token, role) {
|
|
25
|
+
if (token == null) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
43
28
|
|
|
44
|
-
|
|
29
|
+
let payload = JwtToken.parseJwt(token);
|
|
30
|
+
return typeof payload['roles'] != 'undefined' && payload['roles'].indexOf(role) !== -1;
|
|
45
31
|
}
|
|
32
|
+
}
|
|
46
33
|
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
class JwtSession {
|
|
35
|
+
static setOnNewTokenCallback(callback) {
|
|
36
|
+
JwtSession.onNewTokenCallback = callback;
|
|
37
|
+
}
|
|
38
|
+
static setOnLoginCallback(callback) {
|
|
39
|
+
JwtSession.onLoginCallback = callback;
|
|
40
|
+
}
|
|
41
|
+
static setOnLogoutCallback(callback) {
|
|
42
|
+
JwtSession.onLogoutCallback = callback;
|
|
49
43
|
}
|
|
50
44
|
|
|
51
45
|
static getToken() {
|
|
52
46
|
return localStorage.getItem('access_token');
|
|
53
47
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
localStorage.setItem('refresh_token', token);
|
|
48
|
+
static setToken(token) {
|
|
49
|
+
localStorage.setItem('access_token', token);
|
|
57
50
|
}
|
|
58
51
|
|
|
59
52
|
static getRefreshToken() {
|
|
60
53
|
return localStorage.getItem('refresh_token');
|
|
61
54
|
}
|
|
55
|
+
static setRefreshToken(token) {
|
|
56
|
+
localStorage.setItem('refresh_token', token);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static login(data) {
|
|
60
|
+
console.log('JwtSession.login()');
|
|
61
|
+
JwtSession.setToken(data['access_token'] || data['token']);
|
|
62
|
+
JwtSession.setRefreshToken(data['refresh_token']);
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
localStorage.removeItem('real_users');
|
|
65
|
+
|
|
66
|
+
if (typeof JwtSession.onLoginCallback == 'function') {
|
|
67
|
+
JwtSession.onLoginCallback();
|
|
68
|
+
}
|
|
65
69
|
}
|
|
66
70
|
|
|
67
|
-
static
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
static updateToken(accessToken, refreshToken) {
|
|
72
|
+
console.log('JwtSession.updateToken()');
|
|
73
|
+
JwtSession.setToken(accessToken);
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
if (typeof refreshToken != 'undefined' && null != refreshToken) {
|
|
76
|
+
JwtSession.setRefreshToken(refreshToken);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (typeof JwtSession.onNewTokenCallback == 'function') {
|
|
80
|
+
JwtSession.onNewTokenCallback();
|
|
81
|
+
}
|
|
73
82
|
}
|
|
74
83
|
|
|
75
|
-
static logout() {
|
|
84
|
+
static logout(redirectUrl) {
|
|
85
|
+
console.log('JwtSession.logout()');
|
|
76
86
|
localStorage.removeItem('access_token');
|
|
77
87
|
localStorage.removeItem('refresh_token');
|
|
88
|
+
|
|
89
|
+
localStorage.removeItem('real_users');
|
|
90
|
+
|
|
91
|
+
if (typeof JwtSession.onLogoutCallback == 'function') {
|
|
92
|
+
JwtSession.onLogoutCallback();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (typeof redirectUrl != 'undefined' && null != redirectUrl) {
|
|
96
|
+
window.location.href = redirectUrl;
|
|
97
|
+
}
|
|
78
98
|
}
|
|
79
99
|
|
|
80
100
|
static getData(key) {
|
|
@@ -88,14 +108,12 @@ class JwtSession {
|
|
|
88
108
|
static isGranted(role) {
|
|
89
109
|
return JwtToken.hasRole(JwtSession.getToken(), role);
|
|
90
110
|
}
|
|
91
|
-
}
|
|
92
111
|
|
|
93
|
-
class ApiTokenSession {
|
|
94
112
|
static denyAccessUnlessGranted(roles) {
|
|
95
113
|
let hasRole = false;
|
|
96
114
|
|
|
97
115
|
roles.forEach(role => {
|
|
98
|
-
if (
|
|
116
|
+
if (JwtSession.isGranted(role)) {
|
|
99
117
|
hasRole = true;
|
|
100
118
|
}
|
|
101
119
|
});
|
|
@@ -103,6 +121,57 @@ class ApiTokenSession {
|
|
|
103
121
|
return hasRole;
|
|
104
122
|
}
|
|
105
123
|
|
|
124
|
+
|
|
125
|
+
static getRealLoggedUsers() {
|
|
126
|
+
let realUsers = [];
|
|
127
|
+
if (localStorage.getItem('real_users') != null) {
|
|
128
|
+
realUsers = JSON.parse(localStorage.getItem('real_users'));
|
|
129
|
+
}
|
|
130
|
+
return realUsers;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
static simulateLogin(loginData, onSuccess) {
|
|
134
|
+
console.log('JwtSession.simulateLogin');
|
|
135
|
+
|
|
136
|
+
// on sauvegarde les tokens de l'utilisateur réellement connecté
|
|
137
|
+
let realUsers = JwtSession.getRealLoggedUsers();
|
|
138
|
+
realUsers.push({
|
|
139
|
+
access_token: JwtSession.getToken(),
|
|
140
|
+
refresh_token: JwtSession.getRefreshToken(),
|
|
141
|
+
});
|
|
142
|
+
localStorage.setItem('real_users', JSON.stringify(realUsers));
|
|
143
|
+
|
|
144
|
+
// on enregistre la session de l'utilisateur simulé
|
|
145
|
+
JwtSession.setToken(loginData['access_token'] || loginData['token']);
|
|
146
|
+
JwtSession.setRefreshToken(loginData['refresh_token']);
|
|
147
|
+
|
|
148
|
+
if (typeof onSuccess == 'function') {
|
|
149
|
+
onSuccess();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
static cancelSimulatedLogin(onSuccess) {
|
|
154
|
+
console.log('JwtSession.cancelSimulatedLogin');
|
|
155
|
+
|
|
156
|
+
// on récupère les tokens de l'utilisateur réellement connecté
|
|
157
|
+
let realUsers = JwtSession.getRealLoggedUsers();
|
|
158
|
+
let loginData = realUsers.pop();
|
|
159
|
+
|
|
160
|
+
if (typeof loginData != 'undefined' && null != loginData) {
|
|
161
|
+
localStorage.setItem('real_users', JSON.stringify(realUsers));
|
|
162
|
+
|
|
163
|
+
JwtSession.setToken(loginData['access_token'] || loginData['token']);
|
|
164
|
+
JwtSession.setRefreshToken(loginData['refresh_token']);
|
|
165
|
+
|
|
166
|
+
if (typeof onSuccess == 'function') {
|
|
167
|
+
onSuccess();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
class ApiTokenSession {
|
|
106
175
|
static getToken() {
|
|
107
176
|
return localStorage.getItem('api_token');
|
|
108
177
|
}
|
|
@@ -158,6 +227,18 @@ class ApiTokenSession {
|
|
|
158
227
|
|
|
159
228
|
return roles.indexOf(role) !== -1;
|
|
160
229
|
}
|
|
230
|
+
|
|
231
|
+
static denyAccessUnlessGranted(roles) {
|
|
232
|
+
let hasRole = false;
|
|
233
|
+
|
|
234
|
+
roles.forEach(role => {
|
|
235
|
+
if (ApiTokenSession.isGranted(role)) {
|
|
236
|
+
hasRole = true;
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
return hasRole;
|
|
241
|
+
}
|
|
161
242
|
}
|
|
162
243
|
|
|
163
244
|
module.exports = { JwtToken, JwtSession, ApiTokenSession };
|
package/network.js
CHANGED