@or-sdk/authorizer 0.24.14-beta.944.0 → 0.24.14-beta.971.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/dist/cjs/Basic/BasicCollection.js +112 -23
- package/dist/cjs/Basic/BasicCollection.js.map +1 -1
- package/dist/cjs/Basic/index.js +21 -0
- package/dist/cjs/Basic/index.js.map +1 -0
- package/dist/cjs/OAuth/OAuth.js +4 -1
- package/dist/cjs/OAuth/OAuth.js.map +1 -1
- package/dist/cjs/OAuth/OAuthCollection.js +17 -6
- package/dist/cjs/OAuth/OAuthCollection.js.map +1 -1
- package/dist/cjs/OAuth/index.js +23 -0
- package/dist/cjs/OAuth/index.js.map +1 -0
- package/dist/cjs/OAuth/types.js.map +1 -1
- package/dist/cjs/Token/TokenCollection.js +82 -20
- package/dist/cjs/Token/TokenCollection.js.map +1 -1
- package/dist/cjs/Token/index.js +21 -0
- package/dist/cjs/Token/index.js.map +1 -0
- package/dist/cjs/index.js +8 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/Basic/BasicCollection.js +79 -20
- package/dist/esm/Basic/BasicCollection.js.map +1 -1
- package/dist/esm/Basic/index.js +3 -0
- package/dist/esm/Basic/index.js.map +1 -0
- package/dist/esm/OAuth/OAuth.js +4 -1
- package/dist/esm/OAuth/OAuth.js.map +1 -1
- package/dist/esm/OAuth/OAuthCollection.js +17 -6
- package/dist/esm/OAuth/OAuthCollection.js.map +1 -1
- package/dist/esm/OAuth/index.js +4 -0
- package/dist/esm/OAuth/index.js.map +1 -0
- package/dist/esm/OAuth/types.js.map +1 -1
- package/dist/esm/Token/TokenCollection.js +50 -18
- package/dist/esm/Token/TokenCollection.js.map +1 -1
- package/dist/esm/Token/index.js +3 -0
- package/dist/esm/Token/index.js.map +1 -0
- package/dist/esm/index.js +3 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/types/Basic/BasicCollection.d.ts +15 -6
- package/dist/types/Basic/BasicCollection.d.ts.map +1 -1
- package/dist/types/Basic/index.d.ts +3 -0
- package/dist/types/Basic/index.d.ts.map +1 -0
- package/dist/types/Basic/types.d.ts +3 -1
- package/dist/types/Basic/types.d.ts.map +1 -1
- package/dist/types/OAuth/OAuth.d.ts.map +1 -1
- package/dist/types/OAuth/OAuthCollection.d.ts +6 -4
- package/dist/types/OAuth/OAuthCollection.d.ts.map +1 -1
- package/dist/types/OAuth/index.d.ts +4 -0
- package/dist/types/OAuth/index.d.ts.map +1 -0
- package/dist/types/OAuth/types.d.ts +4 -1
- package/dist/types/OAuth/types.d.ts.map +1 -1
- package/dist/types/Token/TokenCollection.d.ts +7 -7
- package/dist/types/Token/TokenCollection.d.ts.map +1 -1
- package/dist/types/Token/index.d.ts +3 -0
- package/dist/types/Token/index.d.ts.map +1 -0
- package/dist/types/Token/types.d.ts +2 -0
- package/dist/types/Token/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -6
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +33 -2
- package/src/Basic/BasicCollection.ts +138 -28
- package/src/Basic/index.ts +3 -0
- package/src/Basic/types.ts +3 -1
- package/src/OAuth/OAuth.ts +4 -0
- package/src/OAuth/OAuthCollection.ts +39 -10
- package/src/OAuth/index.ts +4 -0
- package/src/OAuth/types.ts +5 -1
- package/src/Token/TokenCollection.ts +94 -25
- package/src/Token/index.ts +3 -0
- package/src/Token/types.ts +2 -0
- package/src/index.ts +3 -8
- package/dist/cjs/Basic/BasicAuth.js +0 -162
- package/dist/cjs/Basic/BasicAuth.js.map +0 -1
- package/dist/cjs/Token/TokenAuth.js +0 -140
- package/dist/cjs/Token/TokenAuth.js.map +0 -1
- package/dist/esm/Basic/BasicAuth.js +0 -88
- package/dist/esm/Basic/BasicAuth.js.map +0 -1
- package/dist/esm/Token/TokenAuth.js +0 -66
- package/dist/esm/Token/TokenAuth.js.map +0 -1
- package/dist/types/Basic/BasicAuth.d.ts +0 -20
- package/dist/types/Basic/BasicAuth.d.ts.map +0 -1
- package/dist/types/Token/TokenAuth.d.ts +0 -12
- package/dist/types/Token/TokenAuth.d.ts.map +0 -1
- package/src/Basic/BasicAuth.ts +0 -130
- package/src/Token/TokenAuth.ts +0 -102
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { List } from '@or-sdk/base';
|
|
2
|
-
import {
|
|
3
|
-
import { TokenCollectionConfig, CreateTokenAuthInCollectionConfig } from './types';
|
|
2
|
+
import { TokenCollectionConfig, CreateTokenAuthInCollectionConfig, TokenAuthData } from './types';
|
|
4
3
|
export declare class TokenCollection {
|
|
5
|
-
private
|
|
4
|
+
private serviceName;
|
|
6
5
|
private readonly keyValueStorage;
|
|
7
|
-
private readonly localToken;
|
|
8
|
-
private readonly localDiscoveryUrl;
|
|
9
6
|
constructor(params: TokenCollectionConfig);
|
|
7
|
+
init(serviceName: string): void;
|
|
10
8
|
listAuthorizations(): Promise<List<string>>;
|
|
11
|
-
getAuthorization(key: string): Promise<
|
|
12
|
-
createAuthorization(params: CreateTokenAuthInCollectionConfig): Promise<
|
|
9
|
+
getAuthorization(key: string): Promise<TokenAuthData>;
|
|
10
|
+
createAuthorization(params: CreateTokenAuthInCollectionConfig): Promise<TokenAuthData>;
|
|
11
|
+
updateAuthorization(tokenAuth: TokenAuthData, newCredentials: Record<string, unknown>): Promise<TokenAuthData>;
|
|
12
|
+
deleteAuthorization(key: string): Promise<void>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=TokenCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenCollection.d.ts","sourceRoot":"","sources":["../../../src/Token/TokenCollection.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"TokenCollection.d.ts","sourceRoot":"","sources":["../../../src/Token/TokenCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EACjC,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAEtC,MAAM,EAAE,qBAAqB;IAelC,IAAI,CAAC,WAAW,EAAE,MAAM;IAUlB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAS3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCrD,mBAAmB,CAC9B,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,aAAa,CAAC;IA2BZ,mBAAmB,CAC9B,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,aAAa,CAAC;IAyBZ,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Token/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,cAAc,SAAS,CAAC"}
|
|
@@ -7,6 +7,7 @@ export declare type TokenAuthConfig = {
|
|
|
7
7
|
};
|
|
8
8
|
export declare type TokenAuthData = {
|
|
9
9
|
auth_name: string;
|
|
10
|
+
key: string;
|
|
10
11
|
date_created: string;
|
|
11
12
|
[credentialKey: string]: string;
|
|
12
13
|
};
|
|
@@ -22,5 +23,6 @@ export declare type TokenCollectionConfig = {
|
|
|
22
23
|
token: Token;
|
|
23
24
|
discoveryUrl: string;
|
|
24
25
|
serviceName: string;
|
|
26
|
+
accountId?: string;
|
|
25
27
|
};
|
|
26
28
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,oBAAY,eAAe,GAAG;IAI5B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,oBAAY,eAAe,GAAG;IAI5B,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IAIZ,YAAY,EAAE,MAAM,CAAC;IAKrB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAKjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAKrC,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,iCAAiC,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC,CAAC;AAEtH,oBAAY,qBAAqB,GAAG;IAIlC,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export { TokenCollection } from './Token/TokenCollection';
|
|
5
|
-
export { OAuth } from './OAuth/OAuth';
|
|
6
|
-
export { OAuthCollection } from './OAuth/OAuthCollection';
|
|
1
|
+
export { BasicCollection } from './Basic/index';
|
|
2
|
+
export { TokenCollection } from './Token/index';
|
|
3
|
+
export { OAuth, OAuthCollection } from './OAuth/index';
|
|
7
4
|
export * from './types';
|
|
8
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEvD,cAAc,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@or-sdk/authorizer",
|
|
3
|
-
"version": "0.24.14-beta.
|
|
3
|
+
"version": "0.24.14-beta.971.0",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"types": "dist/types/index.d.ts",
|
|
7
|
+
"typesVersions": {
|
|
8
|
+
"*": {
|
|
9
|
+
"Basic": [
|
|
10
|
+
"dist/types/Basic/index.d.ts"
|
|
11
|
+
],
|
|
12
|
+
"OAuth": [
|
|
13
|
+
"dist/types/OAuth/index.d.ts"
|
|
14
|
+
],
|
|
15
|
+
"Token": [
|
|
16
|
+
"dist/types/Token/index.d.ts"
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"import": "./dist/esm/index.js",
|
|
23
|
+
"require": "./dist/cjs/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./Basic": {
|
|
26
|
+
"import": "./dist/esm/Basic/index.js",
|
|
27
|
+
"require": "./dist/cjs/Basic/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./OAuth": {
|
|
30
|
+
"import": "./dist/esm/OAuth/index.js",
|
|
31
|
+
"require": "./dist/cjs/OAuth/index.js"
|
|
32
|
+
},
|
|
33
|
+
"./Token": {
|
|
34
|
+
"import": "./dist/esm/Token/index.js",
|
|
35
|
+
"require": "./dist/cjs/Token/index.js"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
7
38
|
"scripts": {
|
|
8
39
|
"build": "pnpm clean && pnpm build:esm && pnpm build:cjs",
|
|
9
40
|
"build:cjs": "tsc --project tsconfig.json",
|
|
@@ -21,7 +52,7 @@
|
|
|
21
52
|
"@or-sdk/discovery": "^1.6.1",
|
|
22
53
|
"@or-sdk/event-manager": "^0.24.8",
|
|
23
54
|
"@or-sdk/key-value-storage": "^0.25.8",
|
|
24
|
-
"@or-sdk/providers": "^0.2.2-beta.
|
|
55
|
+
"@or-sdk/providers": "^0.2.2-beta.971.0",
|
|
25
56
|
"uuid": "^8.3.2"
|
|
26
57
|
},
|
|
27
58
|
"devDependencies": {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { List, makeList } from '@or-sdk/base';
|
|
2
2
|
import { KeyValueStorage } from '@or-sdk/key-value-storage';
|
|
3
|
-
import {
|
|
3
|
+
import { BasicAuthData } from './types';
|
|
4
|
+
import { createAuthKey } from './utils/createAuthKey';
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
4
6
|
|
|
5
7
|
import {
|
|
6
8
|
BasicCollectionConfig,
|
|
@@ -8,23 +10,50 @@ import {
|
|
|
8
10
|
} from './types';
|
|
9
11
|
|
|
10
12
|
export class BasicCollection {
|
|
11
|
-
private
|
|
13
|
+
private serviceName: string;
|
|
12
14
|
private readonly keyValueStorage: KeyValueStorage;
|
|
13
|
-
private readonly localToken: Token;
|
|
14
|
-
private readonly localDiscoveryUrl: string;
|
|
15
15
|
|
|
16
16
|
constructor(params: BasicCollectionConfig) {
|
|
17
|
-
const { token, discoveryUrl, serviceName } = params;
|
|
17
|
+
const { token, discoveryUrl, serviceName, accountId } = params;
|
|
18
18
|
|
|
19
|
-
this.
|
|
20
|
-
this.localDiscoveryUrl = discoveryUrl;
|
|
21
|
-
this.serviceName = serviceName;
|
|
19
|
+
this.serviceName = serviceName || '';
|
|
22
20
|
this.keyValueStorage = new KeyValueStorage({
|
|
23
21
|
token,
|
|
24
22
|
discoveryUrl,
|
|
23
|
+
accountId,
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Allows to explicitly (re-)set authorization service name
|
|
30
|
+
*/
|
|
31
|
+
public init(serviceName: string) {
|
|
32
|
+
if (!serviceName) throw new Error('Service name is required.');
|
|
33
|
+
|
|
34
|
+
this.serviceName = serviceName;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Encodes username and password into Basic authorization token
|
|
40
|
+
*/
|
|
41
|
+
static encodeAccessToken(username: string, password: string): string {
|
|
42
|
+
return btoa(`${username}:${password}`);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Decodes base64 encoded token and parses it to username and password
|
|
47
|
+
*/
|
|
48
|
+
static decodeAccessToken(token: string): {username: string; password: string;} {
|
|
49
|
+
const [username, password] = atob(token).split(':');
|
|
50
|
+
return {
|
|
51
|
+
username,
|
|
52
|
+
password,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
28
57
|
/**
|
|
29
58
|
* Returns array of auth keys from this collection
|
|
30
59
|
*/
|
|
@@ -34,30 +63,42 @@ export class BasicCollection {
|
|
|
34
63
|
return makeList<string>(records.map((record) => record.key).filter(key => key.includes('::basic')));
|
|
35
64
|
}
|
|
36
65
|
|
|
66
|
+
|
|
37
67
|
/**
|
|
38
68
|
* Returns BasicAuth instance for given key
|
|
39
69
|
*/
|
|
40
|
-
public async getAuthorization(key: string): Promise<
|
|
41
|
-
if (!
|
|
70
|
+
public async getAuthorization(key: string): Promise<BasicAuthData> {
|
|
71
|
+
if (!this.serviceName) throw new Error('Service name is not defined.');
|
|
72
|
+
if (!key.includes('::basic')) throw new Error('The basic authorization key should contain "basic" type specifier.');
|
|
73
|
+
|
|
42
74
|
const record = await this.keyValueStorage.getValueByKey(this.serviceName, encodeURIComponent(key));
|
|
75
|
+
|
|
43
76
|
if (!record.value) {
|
|
44
|
-
throw new Error('Authorization does not exist');
|
|
77
|
+
throw new Error('Authorization does not exist.');
|
|
45
78
|
}
|
|
46
79
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
80
|
+
|
|
81
|
+
const authRecord = record.value as Omit<BasicAuthData, 'key'>;
|
|
82
|
+
|
|
83
|
+
if (!authRecord.auth_name || !authRecord.access_token || !authRecord.date_created) {
|
|
84
|
+
throw new Error('Authorization does not exist or invalid.');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
auth_name: authRecord.auth_name,
|
|
89
|
+
access_token: authRecord.access_token,
|
|
90
|
+
date_created: authRecord.date_created,
|
|
91
|
+
key,
|
|
92
|
+
} as BasicAuthData;
|
|
53
93
|
}
|
|
54
94
|
|
|
95
|
+
|
|
55
96
|
/**
|
|
56
97
|
* Creates a new auth record in current collection with the given config.
|
|
57
98
|
* @returns BasicAuth instance connected to created auth
|
|
58
99
|
*
|
|
59
100
|
* ```typescript
|
|
60
|
-
* const
|
|
101
|
+
* const basicAuthData = await basicCollectionInstance.createAuthorization({
|
|
61
102
|
* authName: 'my-auth-name',
|
|
62
103
|
* username: 'user',
|
|
63
104
|
* password: 'pass'
|
|
@@ -66,14 +107,83 @@ export class BasicCollection {
|
|
|
66
107
|
*/
|
|
67
108
|
public async createAuthorization(
|
|
68
109
|
params: CreateBasicAuthInCollectionConfig
|
|
69
|
-
): Promise<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
110
|
+
): Promise<BasicAuthData> {
|
|
111
|
+
|
|
112
|
+
const { authName, password, username } = params;
|
|
113
|
+
|
|
114
|
+
if (!authName || !username || !password) {
|
|
115
|
+
throw new Error('Invalid authorization config passed.');
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (!this.serviceName) throw new Error('Service name is not defined.');
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
const id = uuidv4();
|
|
122
|
+
const authKey = createAuthKey(id, authName);
|
|
123
|
+
|
|
124
|
+
const authData = {
|
|
125
|
+
auth_name: authName,
|
|
126
|
+
access_token: BasicCollection.encodeAccessToken(username, password),
|
|
127
|
+
date_created: new Date().toISOString(),
|
|
128
|
+
} as Omit<BasicAuthData, 'key'>;
|
|
129
|
+
|
|
130
|
+
await this.keyValueStorage.setValueByKey(this.serviceName, encodeURIComponent(authKey), authData);
|
|
131
|
+
|
|
132
|
+
return {
|
|
133
|
+
...authData,
|
|
134
|
+
key: authKey,
|
|
135
|
+
} as BasicAuthData;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Returns array of auth keys from this collection
|
|
141
|
+
*/
|
|
142
|
+
public async updateAuthorization(
|
|
143
|
+
basicAuth: BasicAuthData,
|
|
144
|
+
newCredentials: { username?: string; password?: string; }
|
|
145
|
+
): Promise<BasicAuthData> {
|
|
146
|
+
if (!basicAuth || !basicAuth.key || !basicAuth.access_token) {
|
|
147
|
+
throw new Error('Authorization is invalid.');
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (!this.serviceName) throw new Error('Service name is not defined.');
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
let { username, password } = BasicCollection.decodeAccessToken(basicAuth.access_token);
|
|
154
|
+
|
|
155
|
+
if (newCredentials.username) {
|
|
156
|
+
username = newCredentials.username;
|
|
157
|
+
}
|
|
158
|
+
if (newCredentials.password) {
|
|
159
|
+
password = newCredentials.password;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const access_token = BasicCollection.encodeAccessToken(username, password);
|
|
163
|
+
const response = await this.keyValueStorage.setValueByKey(
|
|
164
|
+
this.serviceName,
|
|
165
|
+
encodeURIComponent(basicAuth.key),
|
|
166
|
+
{
|
|
167
|
+
auth_name: basicAuth.auth_name,
|
|
168
|
+
date_created: basicAuth.date_created,
|
|
169
|
+
access_token,
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
const updatedData = response.value as Omit<BasicAuthData, 'key'>;
|
|
174
|
+
return {
|
|
175
|
+
...updatedData,
|
|
176
|
+
key: basicAuth.key,
|
|
177
|
+
} as BasicAuthData;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Deletes authorization from collection
|
|
183
|
+
*/
|
|
184
|
+
public async deleteAuthorization(authKey: string): Promise<void> {
|
|
185
|
+
if (!this.serviceName) throw new Error('Service name is not defined.');
|
|
186
|
+
await this.keyValueStorage.deleteKey(this.serviceName, encodeURIComponent(authKey));
|
|
78
187
|
}
|
|
79
188
|
}
|
|
189
|
+
|
package/src/Basic/types.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type BasicAuthConfig = {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
export type BasicAuthData = {
|
|
17
|
+
key: string;
|
|
17
18
|
auth_name: string;
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -50,5 +51,6 @@ export type BasicCollectionConfig = {
|
|
|
50
51
|
* function which return token
|
|
51
52
|
*/
|
|
52
53
|
discoveryUrl: string;
|
|
53
|
-
|
|
54
|
+
accountId?: string;
|
|
55
|
+
serviceName?: string;
|
|
54
56
|
};
|
package/src/OAuth/OAuth.ts
CHANGED
|
@@ -39,6 +39,7 @@ export class OAuth {
|
|
|
39
39
|
|
|
40
40
|
constructor(params: OAuthConfig) {
|
|
41
41
|
const {
|
|
42
|
+
accountId,
|
|
42
43
|
authKey,
|
|
43
44
|
discoveryUrl,
|
|
44
45
|
eventManagerUrl,
|
|
@@ -63,6 +64,7 @@ export class OAuth {
|
|
|
63
64
|
this.keyValueStorage = new KeyValueStorage({
|
|
64
65
|
token,
|
|
65
66
|
discoveryUrl,
|
|
67
|
+
accountId,
|
|
66
68
|
});
|
|
67
69
|
|
|
68
70
|
this.providers = new Providers({
|
|
@@ -163,6 +165,7 @@ export class OAuth {
|
|
|
163
165
|
const keyValueStorage = new KeyValueStorage({
|
|
164
166
|
token,
|
|
165
167
|
discoveryUrl,
|
|
168
|
+
accountId,
|
|
166
169
|
});
|
|
167
170
|
|
|
168
171
|
const providers = new Providers({
|
|
@@ -270,6 +273,7 @@ export class OAuth {
|
|
|
270
273
|
const authorizeUrl = authUrl.href;
|
|
271
274
|
|
|
272
275
|
const newOAuth = new OAuth({
|
|
276
|
+
accountId,
|
|
273
277
|
authKey,
|
|
274
278
|
discoveryUrl,
|
|
275
279
|
eventManagerUrl,
|
|
@@ -2,34 +2,60 @@ import { Token, List, makeList } from '@or-sdk/base';
|
|
|
2
2
|
import { KeyValueStorage } from '@or-sdk/key-value-storage';
|
|
3
3
|
import { OAuth } from './OAuth';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
CreateOAuthInCollectionConfig,
|
|
7
|
+
CreateOAuthResult,
|
|
8
|
+
OAuthCollectionConfig,
|
|
9
|
+
OAuthApp,
|
|
10
|
+
OAuthCollectionInitConfig,
|
|
11
|
+
} from './types';
|
|
6
12
|
|
|
7
13
|
export class OAuthCollection {
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
private
|
|
14
|
+
private serviceName: string;
|
|
15
|
+
private keyValueCollection: string;
|
|
16
|
+
private keyValueStorage: KeyValueStorage;
|
|
17
|
+
private localAccountId: string | undefined;
|
|
11
18
|
private readonly localToken: Token;
|
|
12
19
|
private readonly localDiscoveryUrl: string;
|
|
13
20
|
|
|
14
21
|
constructor(params: OAuthCollectionConfig) {
|
|
15
|
-
const { token, discoveryUrl, serviceName, keyValueCollection } = params;
|
|
22
|
+
const { token, discoveryUrl, accountId, serviceName, keyValueCollection } = params;
|
|
16
23
|
|
|
17
24
|
this.localToken = token;
|
|
25
|
+
this.localAccountId = accountId;
|
|
18
26
|
this.localDiscoveryUrl = discoveryUrl;
|
|
19
|
-
this.serviceName = serviceName;
|
|
20
|
-
this.keyValueCollection = keyValueCollection || serviceName;
|
|
27
|
+
this.serviceName = serviceName || '';
|
|
28
|
+
this.keyValueCollection = keyValueCollection || serviceName || '';
|
|
29
|
+
|
|
21
30
|
this.keyValueStorage = new KeyValueStorage({
|
|
22
|
-
token,
|
|
23
|
-
discoveryUrl,
|
|
31
|
+
token: this.localToken,
|
|
32
|
+
discoveryUrl: this.localDiscoveryUrl,
|
|
33
|
+
accountId: this.localAccountId,
|
|
24
34
|
});
|
|
25
35
|
}
|
|
26
36
|
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Allows to explicitly (re)initialize collection parameters
|
|
40
|
+
*/
|
|
41
|
+
public init(params: OAuthCollectionInitConfig): void {
|
|
42
|
+
const { serviceName, keyValueCollection } = params;
|
|
43
|
+
|
|
44
|
+
this.serviceName = serviceName || this.serviceName;
|
|
45
|
+
this.keyValueCollection = keyValueCollection || this.keyValueCollection || this.serviceName;
|
|
46
|
+
|
|
47
|
+
if (!this.serviceName) {
|
|
48
|
+
throw new Error('Service Name is required.');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
27
53
|
/**
|
|
28
54
|
* Returns array of auth keys from this collection
|
|
29
55
|
*/
|
|
30
56
|
public async listAuthorizations(): Promise<List<string>> {
|
|
31
57
|
const { items: records } = await this.keyValueStorage.listKeys(
|
|
32
|
-
this.keyValueCollection
|
|
58
|
+
this.keyValueCollection || ''
|
|
33
59
|
);
|
|
34
60
|
|
|
35
61
|
return makeList<string>(records.map((record) => record.key).filter(key => key.includes('::oauth')));
|
|
@@ -59,6 +85,7 @@ export class OAuthCollection {
|
|
|
59
85
|
})));
|
|
60
86
|
}
|
|
61
87
|
|
|
88
|
+
|
|
62
89
|
/**
|
|
63
90
|
* Returns OAuth instance for given key
|
|
64
91
|
*/
|
|
@@ -81,6 +108,7 @@ export class OAuthCollection {
|
|
|
81
108
|
});
|
|
82
109
|
}
|
|
83
110
|
|
|
111
|
+
|
|
84
112
|
/**
|
|
85
113
|
* Creates a new auth record in current collection with the given config.
|
|
86
114
|
* @returns Object with OAuth instance connected to created auth and authorizerUrl to redirect the user to for completing authorization
|
|
@@ -109,6 +137,7 @@ export class OAuthCollection {
|
|
|
109
137
|
return await OAuth.create({
|
|
110
138
|
discoveryUrl: this.localDiscoveryUrl,
|
|
111
139
|
token: this.localToken,
|
|
140
|
+
accountId: this.localAccountId,
|
|
112
141
|
appId: params.appId,
|
|
113
142
|
keyValueCollection: this.keyValueCollection,
|
|
114
143
|
scope: params.scope,
|
package/src/OAuth/types.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type OAuthConfig = {
|
|
|
10
10
|
serviceName: string;
|
|
11
11
|
keyValueCollection?: string;
|
|
12
12
|
authKey: string;
|
|
13
|
+
accountId?: string;
|
|
13
14
|
eventManagerUrl?: string;
|
|
14
15
|
providersAccountId?: string;
|
|
15
16
|
};
|
|
@@ -120,13 +121,16 @@ export type OAuthCollectionConfig = {
|
|
|
120
121
|
*/
|
|
121
122
|
token: Token;
|
|
122
123
|
discoveryUrl: string;
|
|
123
|
-
|
|
124
|
+
accountId?: string;
|
|
125
|
+
serviceName?: string;
|
|
124
126
|
/**
|
|
125
127
|
* Pass this if your using custom name for key-value collection that differs from serviceName
|
|
126
128
|
*/
|
|
127
129
|
keyValueCollection?: string;
|
|
128
130
|
};
|
|
129
131
|
|
|
132
|
+
export type OAuthCollectionInitConfig = Pick<OAuthCollectionConfig, 'serviceName' | 'keyValueCollection'>;
|
|
133
|
+
|
|
130
134
|
export type ServiceDefinitionConfig = {
|
|
131
135
|
serviceName: string;
|
|
132
136
|
requestDataType: string;
|