@or-sdk/auth 0.24.9-beta.995.0 → 0.24.9
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.md +8 -0
- package/dist/cjs/Auth.js +616 -0
- package/dist/cjs/Auth.js.map +1 -1
- package/dist/cjs/index.js +3 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/Auth.js +449 -1
- package/dist/esm/Auth.js.map +1 -1
- package/dist/esm/index.js +1 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/types/Auth.d.ts +56 -0
- package/dist/types/Auth.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +2 -20
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/Auth.ts +763 -763
- package/src/index.ts +1 -6
- package/src/types.ts +4 -22
- package/dist/cjs/AuthBase.js +0 -97
- package/dist/cjs/AuthBase.js.map +0 -1
- package/dist/cjs/AuthCookieStorage.js +0 -217
- package/dist/cjs/AuthCookieStorage.js.map +0 -1
- package/dist/cjs/AuthForBackend.js +0 -28
- package/dist/cjs/AuthForBackend.js.map +0 -1
- package/dist/cjs/AuthForClient.js +0 -402
- package/dist/cjs/AuthForClient.js.map +0 -1
- package/dist/esm/AuthBase.js +0 -42
- package/dist/esm/AuthBase.js.map +0 -1
- package/dist/esm/AuthCookieStorage.js +0 -145
- package/dist/esm/AuthCookieStorage.js.map +0 -1
- package/dist/esm/AuthForBackend.js +0 -7
- package/dist/esm/AuthForBackend.js.map +0 -1
- package/dist/esm/AuthForClient.js +0 -257
- package/dist/esm/AuthForClient.js.map +0 -1
- package/dist/types/AuthBase.d.ts +0 -14
- package/dist/types/AuthBase.d.ts.map +0 -1
- package/dist/types/AuthCookieStorage.d.ts +0 -40
- package/dist/types/AuthCookieStorage.d.ts.map +0 -1
- package/dist/types/AuthForBackend.d.ts +0 -6
- package/dist/types/AuthForBackend.d.ts.map +0 -1
- package/dist/types/AuthForClient.d.ts +0 -30
- package/dist/types/AuthForClient.d.ts.map +0 -1
- package/src/AuthBase.ts +0 -44
- package/src/AuthCookieStorage.ts +0 -307
- package/src/AuthForBackend.ts +0 -8
- package/src/AuthForClient.ts +0 -426
package/src/AuthForClient.ts
DELETED
|
@@ -1,426 +0,0 @@
|
|
|
1
|
-
import { AuthBase } from './AuthBase';
|
|
2
|
-
import {
|
|
3
|
-
AuthBaseConfig, AuthDataStorage,
|
|
4
|
-
AuthResponse,
|
|
5
|
-
MultiUserLoginUserArgs,
|
|
6
|
-
MultiUserResponse,
|
|
7
|
-
MultiUserUpdateTwoFactorArgs,
|
|
8
|
-
MultiUserUploadIconArgs,
|
|
9
|
-
MultiUserUploadIconResponse,
|
|
10
|
-
SignInArgs,
|
|
11
|
-
User,
|
|
12
|
-
} from './types';
|
|
13
|
-
import _ from 'lodash';
|
|
14
|
-
import { generateFingerPrint } from './utils';
|
|
15
|
-
import { isNode } from 'browser-or-node';
|
|
16
|
-
import axios from 'axios';
|
|
17
|
-
|
|
18
|
-
export class AuthForClient extends AuthBase {
|
|
19
|
-
readonly dataStorage: AuthDataStorage;
|
|
20
|
-
constructor(params: AuthBaseConfig & {dataStorage: AuthDataStorage;}) {
|
|
21
|
-
super(params);
|
|
22
|
-
this.dataStorage = params.dataStorage;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Sign in
|
|
27
|
-
* ```typescript
|
|
28
|
-
* const user = await instance.signIn({
|
|
29
|
-
* credentials: {
|
|
30
|
-
* username: 'username',
|
|
31
|
-
* password: 'password'
|
|
32
|
-
* },
|
|
33
|
-
* long: true,
|
|
34
|
-
* captchaToken: 'captchaToken'
|
|
35
|
-
* });
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
async signIn({
|
|
39
|
-
credentials,
|
|
40
|
-
long = false,
|
|
41
|
-
allowGuestLogin = false,
|
|
42
|
-
captchaToken,
|
|
43
|
-
isCaptchaV2Checkbox,
|
|
44
|
-
verificationCode,
|
|
45
|
-
userToken,
|
|
46
|
-
rememberTwoFactor,
|
|
47
|
-
}: SignInArgs): Promise<AuthResponse> {
|
|
48
|
-
const fingerPrint = await generateFingerPrint();
|
|
49
|
-
|
|
50
|
-
const options = {
|
|
51
|
-
...credentials,
|
|
52
|
-
captchaToken,
|
|
53
|
-
isCaptchaV2Checkbox,
|
|
54
|
-
verificationCode,
|
|
55
|
-
fingerPrint,
|
|
56
|
-
rememberTwoFactor,
|
|
57
|
-
... userToken ? { userToken } : {},
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const user = await this.sdkApi.makeRequest<AuthResponse>({
|
|
61
|
-
method: 'POST',
|
|
62
|
-
route: '/auth/token',
|
|
63
|
-
data: options,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
this.validateGuest(user.role, allowGuestLogin);
|
|
67
|
-
|
|
68
|
-
if (!user.twoFactorCheck && !user.captchaCheck) {
|
|
69
|
-
if (user.tokenType === 'multi-user') {
|
|
70
|
-
this.dataStorage.saveMultiUser(user, long);
|
|
71
|
-
} else {
|
|
72
|
-
await this.dataStorage.saveUser({
|
|
73
|
-
long,
|
|
74
|
-
user,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return user;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Sign in with token
|
|
84
|
-
* ```typescript
|
|
85
|
-
* const user = await instance.signInWithToken({
|
|
86
|
-
* token: 'token'
|
|
87
|
-
* });
|
|
88
|
-
* ```
|
|
89
|
-
*/
|
|
90
|
-
async signInWithToken(
|
|
91
|
-
token: string | { token: string; allowGuestLogin?: boolean; shouldNotSaveCookies?: boolean; },
|
|
92
|
-
allowGuestLogin = false,
|
|
93
|
-
shouldNotSaveCookies = false
|
|
94
|
-
): Promise<User> {
|
|
95
|
-
let userInfo = {};
|
|
96
|
-
if (_.isObject(token)) {
|
|
97
|
-
allowGuestLogin = _.get(token, 'allowGuestLogin', false);
|
|
98
|
-
shouldNotSaveCookies = _.get(token, 'shouldNotSaveCookies', false);
|
|
99
|
-
userInfo = _.get(token, 'userInfo', {});
|
|
100
|
-
token = token.token;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (!token) {
|
|
104
|
-
return Promise.reject(new Error('No token given'));
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
this.dataStorage.checkDeprecatedData();
|
|
108
|
-
|
|
109
|
-
const user = await this.validateToken(token, allowGuestLogin);
|
|
110
|
-
|
|
111
|
-
_.assign(user, { token });
|
|
112
|
-
|
|
113
|
-
const allow = _.get(user, 'allow', false);
|
|
114
|
-
if (!allow) {
|
|
115
|
-
throw Error('Invalid Token');
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (!shouldNotSaveCookies) {
|
|
119
|
-
this.dataStorage.setItem({
|
|
120
|
-
...userInfo,
|
|
121
|
-
...user,
|
|
122
|
-
}, this.dataStorage.getCurrentExpire());
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
return user;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Sign out
|
|
130
|
-
* ```typescript
|
|
131
|
-
* await instance.signOut('token');
|
|
132
|
-
* ```
|
|
133
|
-
*/
|
|
134
|
-
async signOut(token?: string, multiuserToken?: string): Promise<void> {
|
|
135
|
-
try {
|
|
136
|
-
const promises = [];
|
|
137
|
-
if (token) {
|
|
138
|
-
promises.push(this.sdkApi.makeRequest<void>({
|
|
139
|
-
method: 'DELETE',
|
|
140
|
-
route: '/auth/fingerprint-token',
|
|
141
|
-
customHeaders: {
|
|
142
|
-
...this.addTokenToHeaders(token),
|
|
143
|
-
},
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
if (multiuserToken) {
|
|
147
|
-
promises.push(this.sdkApi.makeRequest<void>({
|
|
148
|
-
method: 'DELETE',
|
|
149
|
-
route: '/multi-user/fingerprint-token',
|
|
150
|
-
...this.addTokenToHeaders(multiuserToken),
|
|
151
|
-
}));
|
|
152
|
-
}
|
|
153
|
-
await Promise.all(promises);
|
|
154
|
-
} catch (error) {
|
|
155
|
-
// eslint-disable-next-line no-console
|
|
156
|
-
console.log('Logout failed: ', error);
|
|
157
|
-
}
|
|
158
|
-
this.dataStorage.removeItem();
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Validate user
|
|
163
|
-
* ```typescript
|
|
164
|
-
* const user = await instance.validateUser();
|
|
165
|
-
* ```
|
|
166
|
-
*/
|
|
167
|
-
async validateUser(allowGuestLogin = false): Promise<User> {
|
|
168
|
-
this.dataStorage.checkDeprecatedData();
|
|
169
|
-
const userParams = this.dataStorage.user;
|
|
170
|
-
|
|
171
|
-
if (!userParams) {
|
|
172
|
-
return Promise.reject(new Error('No cached user params are available'));
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const user = await this.validateToken(userParams.token || '', allowGuestLogin);
|
|
176
|
-
|
|
177
|
-
if (!user.identityProvider && userParams.identityProvider) {
|
|
178
|
-
user.identityProvider = userParams.identityProvider;
|
|
179
|
-
}
|
|
180
|
-
_.assign(user, { token: userParams.token });
|
|
181
|
-
|
|
182
|
-
const allow = _.get(user, 'allow', false);
|
|
183
|
-
if (!allow) {
|
|
184
|
-
throw Error('Invalid Token');
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return user;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Get users list of a multi-user
|
|
192
|
-
* ```typescript
|
|
193
|
-
* const result = await instance.multiUserGetUsersList();
|
|
194
|
-
* ```
|
|
195
|
-
*/
|
|
196
|
-
async multiUserGetUsersList(): Promise<any> {
|
|
197
|
-
if (!this.multiUserToken) return false;
|
|
198
|
-
|
|
199
|
-
return this.sdkApi.makeRequest<any>({
|
|
200
|
-
method: 'GET',
|
|
201
|
-
route: '/multi-user/list-users',
|
|
202
|
-
customHeaders: {
|
|
203
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Log in user of a multi-user
|
|
210
|
-
* ```typescript
|
|
211
|
-
* const result = await instance.multiUserLoginUser({
|
|
212
|
-
* accountId: 'account-id',
|
|
213
|
-
* id: 'id',
|
|
214
|
-
* long: true
|
|
215
|
-
* });
|
|
216
|
-
* ```
|
|
217
|
-
*/
|
|
218
|
-
async multiUserLoginUser({ accountId, id, long }: MultiUserLoginUserArgs): Promise<User> {
|
|
219
|
-
const user = await this.sdkApi.makeRequest<User>({
|
|
220
|
-
method: 'POST',
|
|
221
|
-
route: '/multi-user/user-token',
|
|
222
|
-
data: {
|
|
223
|
-
accountId,
|
|
224
|
-
id,
|
|
225
|
-
},
|
|
226
|
-
customHeaders: {
|
|
227
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
228
|
-
},
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
await this.dataStorage.saveUser({
|
|
232
|
-
long,
|
|
233
|
-
user,
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
return user;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Get username for lock screen
|
|
241
|
-
* ```typescript
|
|
242
|
-
* const username = await instance.getUserNameForLockScreen(user);
|
|
243
|
-
* ```
|
|
244
|
-
*/
|
|
245
|
-
async getUserNameForLockScreen(user: Pick<User, 'multiUserId'| 'username'| 'token'>): Promise<string> {
|
|
246
|
-
const multiUserCookie = this.dataStorage.multiUserData;
|
|
247
|
-
if (multiUserCookie.username) return multiUserCookie.username;
|
|
248
|
-
|
|
249
|
-
const { multiUserId, username, token } = user;
|
|
250
|
-
if (multiUserId) {
|
|
251
|
-
const { username } = await this.sdkApi.makeRequest<MultiUserResponse>({
|
|
252
|
-
method: 'GET',
|
|
253
|
-
route: '/user/multi-user',
|
|
254
|
-
customHeaders: {
|
|
255
|
-
...this.addTokenToHeaders(token || ''),
|
|
256
|
-
},
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
return username;
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
return username;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Get profile for multi-user
|
|
267
|
-
* ```typescript
|
|
268
|
-
* const result = await instance.multiUserGetProfile();
|
|
269
|
-
* ```
|
|
270
|
-
*/
|
|
271
|
-
async multiUserGetProfile(): Promise<any> {
|
|
272
|
-
return this.sdkApi.makeRequest<any>({
|
|
273
|
-
method: 'GET',
|
|
274
|
-
route: '/multi-user/profile',
|
|
275
|
-
customHeaders: {
|
|
276
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
277
|
-
},
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Update cookie expiration
|
|
284
|
-
* ```typescript
|
|
285
|
-
* instance.updateCookieExpiration();
|
|
286
|
-
* ```
|
|
287
|
-
*/
|
|
288
|
-
updateCookieExpiration() {
|
|
289
|
-
this.dataStorage.updateExpiration();
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Set profile for multi-user
|
|
294
|
-
* ```typescript
|
|
295
|
-
* const knowledgeModels = await instance.multiUserSetProfile(profile);
|
|
296
|
-
* ```
|
|
297
|
-
*/
|
|
298
|
-
async multiUserSetProfile(profile: unknown): Promise<any> {
|
|
299
|
-
return this.sdkApi.makeRequest<any>({
|
|
300
|
-
method: 'POST',
|
|
301
|
-
route: '/multi-user/profile',
|
|
302
|
-
data: profile,
|
|
303
|
-
customHeaders: {
|
|
304
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
305
|
-
},
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
/**
|
|
310
|
-
* Validate multi-user token
|
|
311
|
-
* ```typescript
|
|
312
|
-
* const result = await instance.validateMultiUserToken();
|
|
313
|
-
* ```
|
|
314
|
-
*/
|
|
315
|
-
async validateMultiUserToken(): Promise<any> {
|
|
316
|
-
return this.sdkApi.makeRequest<any>({
|
|
317
|
-
method: 'GET',
|
|
318
|
-
route: '/multi-user/token',
|
|
319
|
-
customHeaders: {
|
|
320
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
321
|
-
},
|
|
322
|
-
});
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* Upload icon for multi-user
|
|
327
|
-
* ```typescript
|
|
328
|
-
* const downloadUrl = await instance.multiUserUploadIcon({
|
|
329
|
-
* name: 'name',
|
|
330
|
-
* contentType: 'content-type',
|
|
331
|
-
* file: file
|
|
332
|
-
* });
|
|
333
|
-
* ```
|
|
334
|
-
*/
|
|
335
|
-
async multiUserUploadIcon(
|
|
336
|
-
{ name, contentType, cacheControl = 'no-cache', file }: MultiUserUploadIconArgs
|
|
337
|
-
): Promise<string> {
|
|
338
|
-
const data = await this.sdkApi.makeRequest<MultiUserUploadIconResponse>({
|
|
339
|
-
method: 'POST',
|
|
340
|
-
route: '/multi-user/sign-upload-url',
|
|
341
|
-
data: {
|
|
342
|
-
name,
|
|
343
|
-
contentType,
|
|
344
|
-
cacheControl,
|
|
345
|
-
},
|
|
346
|
-
customHeaders: {
|
|
347
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
348
|
-
},
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
const FormDataLib = isNode ? require('form-data') : FormData;
|
|
352
|
-
const formData = new FormDataLib();
|
|
353
|
-
|
|
354
|
-
_.forEach(data.uploadParams.fields, (value, key) => {
|
|
355
|
-
formData.append(key, value);
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
formData.append('cache-control', cacheControl);
|
|
359
|
-
formData.append('content-type', contentType);
|
|
360
|
-
formData.append('File', file, name);
|
|
361
|
-
|
|
362
|
-
if (isNode) {
|
|
363
|
-
await new Promise<void>((resolve, reject) => {
|
|
364
|
-
formData.submit(data.uploadParams.url, (error: any) => {
|
|
365
|
-
if (error) return reject(error);
|
|
366
|
-
resolve();
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
} else {
|
|
370
|
-
await axios.post(data.uploadParams.url, formData);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
return data.downloadUrl;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* Confirm email change
|
|
378
|
-
* ```typescript
|
|
379
|
-
* const result = await instance.confirmEmailChange({ token: 'token' });
|
|
380
|
-
* ```
|
|
381
|
-
*/
|
|
382
|
-
async confirmEmailChange({ token }: { token: string; }): Promise<any> {
|
|
383
|
-
return this.sdkApi.makeRequest<any>({
|
|
384
|
-
method: 'POST',
|
|
385
|
-
route: '/multi-user/change-email-finish',
|
|
386
|
-
data: {
|
|
387
|
-
token,
|
|
388
|
-
},
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
* Update 2fa for multi-user
|
|
394
|
-
* ```typescript
|
|
395
|
-
* const result = await instance.multiUserUpdateTwoFactor({
|
|
396
|
-
* secret: 'secret',
|
|
397
|
-
* enabled: true,
|
|
398
|
-
* codes: codes,
|
|
399
|
-
* verificationCode: 'verification-code'
|
|
400
|
-
* });
|
|
401
|
-
* ```
|
|
402
|
-
*/
|
|
403
|
-
async multiUserUpdateTwoFactor(
|
|
404
|
-
{ secret, enabled, codes, verificationCode }: MultiUserUpdateTwoFactorArgs
|
|
405
|
-
): Promise<any> {
|
|
406
|
-
return this.sdkApi.makeRequest<any>({
|
|
407
|
-
method: 'POST',
|
|
408
|
-
route: '/multi-user/twofactor',
|
|
409
|
-
data: {
|
|
410
|
-
secret,
|
|
411
|
-
enabled,
|
|
412
|
-
codes,
|
|
413
|
-
verificationCode,
|
|
414
|
-
},
|
|
415
|
-
customHeaders: {
|
|
416
|
-
...this.addTokenToHeaders(this.multiUserToken),
|
|
417
|
-
},
|
|
418
|
-
});
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
private get multiUserToken(): string {
|
|
423
|
-
const { token = '' } = this.dataStorage.multiUserData;
|
|
424
|
-
return token;
|
|
425
|
-
}
|
|
426
|
-
}
|