@emilgroup/auth-sdk 1.13.1-beta.1 → 1.14.1-beta.0
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/README.md +2 -2
- package/base.ts +21 -8
- package/dist/base.d.ts +1 -2
- package/dist/base.js +18 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,11 +17,11 @@ Although this package can be used in both TypeScript and JavaScript, it is inten
|
|
|
17
17
|
Navigate to the folder of your consuming project and run one of the following commands:
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
npm install @emilgroup/auth-sdk@1.
|
|
20
|
+
npm install @emilgroup/auth-sdk@1.14.1-beta.0 --save
|
|
21
21
|
```
|
|
22
22
|
or
|
|
23
23
|
```
|
|
24
|
-
yarn add @emilgroup/auth-sdk@1.
|
|
24
|
+
yarn add @emilgroup/auth-sdk@1.14.1-beta.0
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
And then you can import ``.
|
package/base.ts
CHANGED
|
@@ -34,7 +34,7 @@ export const COLLECTION_FORMATS = {
|
|
|
34
34
|
|
|
35
35
|
export interface LoginClass {
|
|
36
36
|
accessToken: string;
|
|
37
|
-
permissions:
|
|
37
|
+
permissions: string;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export enum Environment {
|
|
@@ -64,6 +64,7 @@ export interface RequestArgs {
|
|
|
64
64
|
interface TokenData {
|
|
65
65
|
accessToken?: string;
|
|
66
66
|
username?: string;
|
|
67
|
+
permissions?: string;
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
const NETWORK_ERROR_MESSAGE = "Network Error";
|
|
@@ -77,7 +78,6 @@ const TOKEN_DATA = 'APP_TOKEN';
|
|
|
77
78
|
export class BaseAPI {
|
|
78
79
|
protected configuration: Configuration | undefined;
|
|
79
80
|
private tokenData?: TokenData;
|
|
80
|
-
private permissions: Array<string> = [];
|
|
81
81
|
|
|
82
82
|
constructor(configuration?: Configuration,
|
|
83
83
|
protected basePath: string = BASE_PATH,
|
|
@@ -111,7 +111,11 @@ export class BaseAPI {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
getPermissions(): Array<string> {
|
|
114
|
-
|
|
114
|
+
if (!this.tokenData?.permissions) {
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return this.tokenData.permissions.split(',');
|
|
115
119
|
}
|
|
116
120
|
|
|
117
121
|
async authorize(username: string, password: string): Promise<void> {
|
|
@@ -134,7 +138,7 @@ export class BaseAPI {
|
|
|
134
138
|
this.configuration.accessToken = `Bearer ${accessToken}`;
|
|
135
139
|
this.tokenData.username = username;
|
|
136
140
|
this.tokenData.accessToken = accessToken;
|
|
137
|
-
this.permissions = permissions;
|
|
141
|
+
this.tokenData.permissions = permissions;
|
|
138
142
|
|
|
139
143
|
this.storeTokenData({
|
|
140
144
|
...this.tokenData
|
|
@@ -148,6 +152,16 @@ export class BaseAPI {
|
|
|
148
152
|
throw new Error('Failed to refresh token.');
|
|
149
153
|
}
|
|
150
154
|
|
|
155
|
+
const refreshTokenAxios = globalAxios.create()
|
|
156
|
+
refreshTokenAxios.interceptors.response.use(response => {
|
|
157
|
+
const { permissions } = response.data;
|
|
158
|
+
|
|
159
|
+
this.tokenData.permissions = permissions;
|
|
160
|
+
this.storeTokenData(this.tokenData);
|
|
161
|
+
|
|
162
|
+
return response;
|
|
163
|
+
})
|
|
164
|
+
|
|
151
165
|
const options: AxiosRequestConfig = {
|
|
152
166
|
method: 'POST',
|
|
153
167
|
url: `${this.configuration.basePath}/authservice/v1/refresh-token`,
|
|
@@ -158,8 +172,7 @@ export class BaseAPI {
|
|
|
158
172
|
withCredentials: true,
|
|
159
173
|
};
|
|
160
174
|
|
|
161
|
-
const response = await
|
|
162
|
-
|
|
175
|
+
const response = await refreshTokenAxios.request<LoginClass>(options);
|
|
163
176
|
return response.data;
|
|
164
177
|
}
|
|
165
178
|
|
|
@@ -196,7 +209,7 @@ export class BaseAPI {
|
|
|
196
209
|
try {
|
|
197
210
|
const { accessToken: tokenString, permissions } = await this.refreshTokenInternal();
|
|
198
211
|
const accessToken = `Bearer ${tokenString}`;
|
|
199
|
-
this.permissions = permissions;
|
|
212
|
+
this.tokenData.permissions = permissions;
|
|
200
213
|
|
|
201
214
|
delete originalConfig.headers['Authorization']
|
|
202
215
|
|
|
@@ -223,7 +236,7 @@ export class BaseAPI {
|
|
|
223
236
|
try {
|
|
224
237
|
const { accessToken: tokenString, permissions } = await this.refreshTokenInternal();
|
|
225
238
|
const accessToken = `Bearer ${tokenString}`;
|
|
226
|
-
this.permissions = permissions;
|
|
239
|
+
this.tokenData.permissions = permissions;
|
|
227
240
|
|
|
228
241
|
_retry = true;
|
|
229
242
|
originalConfig.headers['Authorization'] = accessToken;
|
package/dist/base.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export declare const COLLECTION_FORMATS: {
|
|
|
24
24
|
};
|
|
25
25
|
export interface LoginClass {
|
|
26
26
|
accessToken: string;
|
|
27
|
-
permissions:
|
|
27
|
+
permissions: string;
|
|
28
28
|
}
|
|
29
29
|
export declare enum Environment {
|
|
30
30
|
Production = "https://apiv2.emil.de",
|
|
@@ -52,7 +52,6 @@ export declare class BaseAPI {
|
|
|
52
52
|
protected axios: AxiosInstance;
|
|
53
53
|
protected configuration: Configuration | undefined;
|
|
54
54
|
private tokenData?;
|
|
55
|
-
private permissions;
|
|
56
55
|
constructor(configuration?: Configuration, basePath?: string, axios?: AxiosInstance);
|
|
57
56
|
selectEnvironment(env: Environment): void;
|
|
58
57
|
selectBasePath(path: string): void;
|
package/dist/base.js
CHANGED
|
@@ -121,7 +121,6 @@ var BaseAPI = /** @class */ (function () {
|
|
|
121
121
|
if (axios === void 0) { axios = axios_1.default; }
|
|
122
122
|
this.basePath = basePath;
|
|
123
123
|
this.axios = axios;
|
|
124
|
-
this.permissions = [];
|
|
125
124
|
this.loadTokenData();
|
|
126
125
|
if (configuration) {
|
|
127
126
|
this.configuration = configuration;
|
|
@@ -145,7 +144,11 @@ var BaseAPI = /** @class */ (function () {
|
|
|
145
144
|
this.configuration.basePath = path;
|
|
146
145
|
};
|
|
147
146
|
BaseAPI.prototype.getPermissions = function () {
|
|
148
|
-
|
|
147
|
+
var _a;
|
|
148
|
+
if (!((_a = this.tokenData) === null || _a === void 0 ? void 0 : _a.permissions)) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
return this.tokenData.permissions.split(',');
|
|
149
152
|
};
|
|
150
153
|
BaseAPI.prototype.authorize = function (username, password) {
|
|
151
154
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -171,7 +174,7 @@ var BaseAPI = /** @class */ (function () {
|
|
|
171
174
|
this.configuration.accessToken = "Bearer ".concat(accessToken);
|
|
172
175
|
this.tokenData.username = username;
|
|
173
176
|
this.tokenData.accessToken = accessToken;
|
|
174
|
-
this.permissions = permissions;
|
|
177
|
+
this.tokenData.permissions = permissions;
|
|
175
178
|
this.storeTokenData(__assign({}, this.tokenData));
|
|
176
179
|
return [2 /*return*/];
|
|
177
180
|
}
|
|
@@ -180,7 +183,8 @@ var BaseAPI = /** @class */ (function () {
|
|
|
180
183
|
};
|
|
181
184
|
BaseAPI.prototype.refreshTokenInternal = function () {
|
|
182
185
|
return __awaiter(this, void 0, void 0, function () {
|
|
183
|
-
var username, options, response;
|
|
186
|
+
var username, refreshTokenAxios, options, response;
|
|
187
|
+
var _this = this;
|
|
184
188
|
return __generator(this, function (_a) {
|
|
185
189
|
switch (_a.label) {
|
|
186
190
|
case 0:
|
|
@@ -188,6 +192,13 @@ var BaseAPI = /** @class */ (function () {
|
|
|
188
192
|
if (!username) {
|
|
189
193
|
throw new Error('Failed to refresh token.');
|
|
190
194
|
}
|
|
195
|
+
refreshTokenAxios = axios_1.default.create();
|
|
196
|
+
refreshTokenAxios.interceptors.response.use(function (response) {
|
|
197
|
+
var permissions = response.data.permissions;
|
|
198
|
+
_this.tokenData.permissions = permissions;
|
|
199
|
+
_this.storeTokenData(_this.tokenData);
|
|
200
|
+
return response;
|
|
201
|
+
});
|
|
191
202
|
options = {
|
|
192
203
|
method: 'POST',
|
|
193
204
|
url: "".concat(this.configuration.basePath, "/authservice/v1/refresh-token"),
|
|
@@ -197,7 +208,7 @@ var BaseAPI = /** @class */ (function () {
|
|
|
197
208
|
data: { username: username },
|
|
198
209
|
withCredentials: true,
|
|
199
210
|
};
|
|
200
|
-
return [4 /*yield*/,
|
|
211
|
+
return [4 /*yield*/, refreshTokenAxios.request(options)];
|
|
201
212
|
case 1:
|
|
202
213
|
response = _a.sent();
|
|
203
214
|
return [2 /*return*/, response.data];
|
|
@@ -242,7 +253,7 @@ var BaseAPI = /** @class */ (function () {
|
|
|
242
253
|
case 2:
|
|
243
254
|
_a = _c.sent(), tokenString = _a.accessToken, permissions = _a.permissions;
|
|
244
255
|
accessToken = "Bearer ".concat(tokenString);
|
|
245
|
-
this.permissions = permissions;
|
|
256
|
+
this.tokenData.permissions = permissions;
|
|
246
257
|
delete originalConfig.headers['Authorization'];
|
|
247
258
|
originalConfig.headers['Authorization'] = accessToken;
|
|
248
259
|
this.configuration.accessToken = accessToken;
|
|
@@ -268,7 +279,7 @@ var BaseAPI = /** @class */ (function () {
|
|
|
268
279
|
case 7:
|
|
269
280
|
_b = _c.sent(), tokenString = _b.accessToken, permissions = _b.permissions;
|
|
270
281
|
accessToken = "Bearer ".concat(tokenString);
|
|
271
|
-
this.permissions = permissions;
|
|
282
|
+
this.tokenData.permissions = permissions;
|
|
272
283
|
_retry = true;
|
|
273
284
|
originalConfig.headers['Authorization'] = accessToken;
|
|
274
285
|
this.configuration.accessToken = accessToken;
|