@osimatic/helpers-js 1.0.62 → 1.0.65
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/index.js +2 -2
- package/jwt.js +71 -1
- package/network.js +23 -8
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -32,7 +32,7 @@ const { ShoppingCart } = require('./shopping_cart');
|
|
|
32
32
|
const { FlashMessage } = require('./flash_message');
|
|
33
33
|
const { CountDown } = require('./count_down');
|
|
34
34
|
const { ImportFromCsv } = require('./import_from_csv');
|
|
35
|
-
const { JwtToken, JwtSession } = require('./jwt');
|
|
35
|
+
const { JwtToken, JwtSession, ApiTokenSession } = require('./jwt');
|
|
36
36
|
const { ListBox } = require('./list_box');
|
|
37
37
|
const { WebRTC } = require('./web_rtc');
|
|
38
38
|
const { EventBus } = require('./event_bus');
|
|
@@ -47,7 +47,7 @@ const { WebSocket } = require('./web_socket');
|
|
|
47
47
|
module.exports = {
|
|
48
48
|
Array, Object, Number, String,
|
|
49
49
|
HTTPRequest, Cookie, UrlAndQueryString, IBAN, BankCard, AudioMedia, UserMedia, PersonName, Email, TelephoneNumber, DateTime, TimestampUnix, SqlDate, SqlTime, SqlDateTime, Duration, File, CSV, Img, FormHelper, Country, PostalAddress, GeographicCoordinates, SocialNetwork,
|
|
50
|
-
Browser, DataTable, Pagination, Navigation, DetailsSubArray, SelectAll, MultipleActionInTable, FormDate, InputPeriod, ShoppingCart, FlashMessage, CountDown, ImportFromCsv, JwtToken, JwtSession, ListBox, WebRTC, WebSocket, EventBus,
|
|
50
|
+
Browser, DataTable, Pagination, Navigation, DetailsSubArray, SelectAll, MultipleActionInTable, FormDate, InputPeriod, ShoppingCart, FlashMessage, CountDown, ImportFromCsv, JwtToken, JwtSession, ApiTokenSession, ListBox, WebRTC, WebSocket, EventBus,
|
|
51
51
|
sleep, refresh, chr, ord, trim, empty,
|
|
52
52
|
GoogleCharts, GoogleRecaptcha, GoogleMap, OpenStreetMap
|
|
53
53
|
};
|
package/jwt.js
CHANGED
|
@@ -93,4 +93,74 @@ class JwtSession {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
class ApiTokenSession {
|
|
97
|
+
static denyAccessUnlessGranted(roles) {
|
|
98
|
+
let hasRole = false;
|
|
99
|
+
|
|
100
|
+
roles.forEach(role => {
|
|
101
|
+
if (ApiTokenSession.isGranted(role)) {
|
|
102
|
+
hasRole = true;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
return hasRole;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
static getToken() {
|
|
110
|
+
return localStorage.getItem('api_token');
|
|
111
|
+
}
|
|
112
|
+
static setToken(token) {
|
|
113
|
+
localStorage.setItem('api_token', token);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static getTokenData() {
|
|
117
|
+
let tokenData = localStorage.getItem('token_data');
|
|
118
|
+
if (null == tokenData) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
return JSON.parse(tokenData);
|
|
122
|
+
}
|
|
123
|
+
static setTokenData(data) {
|
|
124
|
+
localStorage.setItem('token_data', JSON.stringify(data));
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
static logout() {
|
|
128
|
+
localStorage.removeItem('api_token');
|
|
129
|
+
localStorage.removeItem('token_data');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
static getData(key) {
|
|
133
|
+
let tokenData = ApiTokenSession.getTokenData();
|
|
134
|
+
if (tokenData == null) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (typeof tokenData[key] != 'undefined') {
|
|
139
|
+
return tokenData[key];
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static isAnonymous() {
|
|
145
|
+
return ApiTokenSession.getToken() == null;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
static isGranted(role) {
|
|
149
|
+
if (ApiTokenSession.getToken() == null) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
let roles = [];
|
|
154
|
+
if (null !== ApiTokenSession.getData('role')) {
|
|
155
|
+
roles = ApiTokenSession.getData('role');
|
|
156
|
+
}
|
|
157
|
+
if (null !== ApiTokenSession.getData('roles')) {
|
|
158
|
+
roles = ApiTokenSession.getData('roles');
|
|
159
|
+
}
|
|
160
|
+
roles = Array.isArray(roles) ? roles : [roles];
|
|
161
|
+
|
|
162
|
+
return roles.indexOf(role) !== -1;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
module.exports = { JwtToken, JwtSession, ApiTokenSession };
|
package/network.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
class HTTPRequest {
|
|
3
2
|
static init() {
|
|
4
3
|
require('whatwg-fetch'); //fetch polyfill loaded in window.fetch
|
|
@@ -123,6 +122,21 @@ class HTTPRequest {
|
|
|
123
122
|
console.error('Request failure. Status: '+status+' ; HTTP Code: '+jqxhr.responseJSON.code+(null!=errorThrown && ''!==errorThrown ? ' ; Error message: '+errorThrown : ''), jqxhr.responseJSON);
|
|
124
123
|
}
|
|
125
124
|
|
|
125
|
+
static isExpiredToken(response, json) {
|
|
126
|
+
if (response.status !== 401) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return (
|
|
131
|
+
response.statusText === 'Expired JWT Token'
|
|
132
|
+
|| (typeof json['message'] != 'undefined' && json['message'] === 'Expired JWT Token')
|
|
133
|
+
|| (typeof json['error'] != 'undefined' && json['error'] === 'expired_token')
|
|
134
|
+
|| (typeof json['error'] != 'undefined' && json['error'] === 'authentification_failure')
|
|
135
|
+
|| (json === 'expired_token')
|
|
136
|
+
|| (json === 'authentification_failure')
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
126
140
|
static async get(url, data, successCallback, errorCallback) {
|
|
127
141
|
url += (!url.includes('?') ? '?' : '') + this.formatQueryString(data);
|
|
128
142
|
data = null;
|
|
@@ -138,10 +152,8 @@ class HTTPRequest {
|
|
|
138
152
|
let jsonData = {};
|
|
139
153
|
try {
|
|
140
154
|
jsonData = await response.json();
|
|
141
|
-
//console.log(url, jsonData);
|
|
142
|
-
//console.log(response.status, response.statusText, jsonData['error']);
|
|
143
155
|
|
|
144
|
-
if (
|
|
156
|
+
if (HTTPRequest.isExpiredToken(response, jsonData)) {
|
|
145
157
|
HTTPRequest.refreshToken(() => HTTPRequest.get(url, data, successCallback, errorCallback));
|
|
146
158
|
return;
|
|
147
159
|
}
|
|
@@ -179,7 +191,7 @@ class HTTPRequest {
|
|
|
179
191
|
}
|
|
180
192
|
},
|
|
181
193
|
error: (jqxhr, status, errorThrown) => {
|
|
182
|
-
if (
|
|
194
|
+
if (HTTPRequest.isExpiredToken(jqxhr, jqxhr.responseJSON)) {
|
|
183
195
|
HTTPRequest.refreshToken(() => HTTPRequest.get(url, data, successCallback, errorCallback));
|
|
184
196
|
return;
|
|
185
197
|
}
|
|
@@ -266,7 +278,7 @@ class HTTPRequest {
|
|
|
266
278
|
$.ajax(Object.assign({...ajaxOptions}, {
|
|
267
279
|
success: (data, status, jqxhr) => File.download(data, jqxhr.getResponseHeader('Content-Type'), jqxhr.getResponseHeader('Content-Disposition')),
|
|
268
280
|
error: (jqxhr, status, errorThrown) => {
|
|
269
|
-
if (
|
|
281
|
+
if (HTTPRequest.isExpiredToken(jqxhr, jqxhr.responseJSON)) {
|
|
270
282
|
HTTPRequest.refreshToken(() => HTTPRequest.download(url, data, errorCallback, completeCallback, method));
|
|
271
283
|
return;
|
|
272
284
|
}
|
|
@@ -303,7 +315,7 @@ class HTTPRequest {
|
|
|
303
315
|
}
|
|
304
316
|
//console.log(url, jsonData);
|
|
305
317
|
|
|
306
|
-
if (
|
|
318
|
+
if (url !== HTTPRequest.refreshTokenUrl && HTTPRequest.isExpiredToken(response, jsonData)) {
|
|
307
319
|
HTTPRequest.refreshToken(() => HTTPRequest.post(url, formData, successCallback, errorCallback, formErrorCallback));
|
|
308
320
|
return;
|
|
309
321
|
}
|
|
@@ -351,7 +363,7 @@ class HTTPRequest {
|
|
|
351
363
|
}
|
|
352
364
|
},
|
|
353
365
|
error: (jqxhr, status, errorThrown) => {
|
|
354
|
-
if (url !== HTTPRequest.refreshTokenUrl &&
|
|
366
|
+
if (url !== HTTPRequest.refreshTokenUrl && HTTPRequest.isExpiredToken(jqxhr, jqxhr.responseJSON)) {
|
|
355
367
|
HTTPRequest.refreshToken(() => HTTPRequest.post(url, formData, successCallback, errorCallback, formErrorCallback));
|
|
356
368
|
return;
|
|
357
369
|
}
|
|
@@ -386,6 +398,9 @@ class HTTPRequest {
|
|
|
386
398
|
(data) => {
|
|
387
399
|
JwtSession.setToken(data.token);
|
|
388
400
|
JwtSession.setRefreshToken(data.refresh_token);
|
|
401
|
+
|
|
402
|
+
HTTPRequest.setAuthorizationHeader(JwtSession.getToken());
|
|
403
|
+
|
|
389
404
|
onCompleteCallback();
|
|
390
405
|
},
|
|
391
406
|
() => {
|