@or-sdk/authorizer 0.10.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.
Files changed (112) hide show
  1. package/dist/cjs/Basic/BasicAuth.js +157 -0
  2. package/dist/cjs/Basic/BasicAuth.js.map +1 -0
  3. package/dist/cjs/Basic/BasicCollection.js +107 -0
  4. package/dist/cjs/Basic/BasicCollection.js.map +1 -0
  5. package/dist/cjs/Basic/types.js +3 -0
  6. package/dist/cjs/Basic/types.js.map +1 -0
  7. package/dist/cjs/Basic/utils/createAuthKey.js +8 -0
  8. package/dist/cjs/Basic/utils/createAuthKey.js.map +1 -0
  9. package/dist/cjs/OAuth/OAuth.js +391 -0
  10. package/dist/cjs/OAuth/OAuth.js.map +1 -0
  11. package/dist/cjs/OAuth/OAuthCollection.js +138 -0
  12. package/dist/cjs/OAuth/OAuthCollection.js.map +1 -0
  13. package/dist/cjs/OAuth/types.js +11 -0
  14. package/dist/cjs/OAuth/types.js.map +1 -0
  15. package/dist/cjs/OAuth/utils/ServiceDefinition.js +175 -0
  16. package/dist/cjs/OAuth/utils/ServiceDefinition.js.map +1 -0
  17. package/dist/cjs/OAuth/utils/createAuthKey.js +8 -0
  18. package/dist/cjs/OAuth/utils/createAuthKey.js.map +1 -0
  19. package/dist/cjs/OAuth/utils/formatScope.js +20 -0
  20. package/dist/cjs/OAuth/utils/formatScope.js.map +1 -0
  21. package/dist/cjs/OAuth/utils/isExpired.js +12 -0
  22. package/dist/cjs/OAuth/utils/isExpired.js.map +1 -0
  23. package/dist/cjs/Token/TokenAuth.js +135 -0
  24. package/dist/cjs/Token/TokenAuth.js.map +1 -0
  25. package/dist/cjs/Token/TokenCollection.js +106 -0
  26. package/dist/cjs/Token/TokenCollection.js.map +1 -0
  27. package/dist/cjs/Token/types.js +3 -0
  28. package/dist/cjs/Token/types.js.map +1 -0
  29. package/dist/cjs/Token/utils/createAuthKey.js +8 -0
  30. package/dist/cjs/Token/utils/createAuthKey.js.map +1 -0
  31. package/dist/cjs/constants.js +16 -0
  32. package/dist/cjs/constants.js.map +1 -0
  33. package/dist/cjs/index.js +27 -0
  34. package/dist/cjs/index.js.map +1 -0
  35. package/dist/cjs/types.js +16 -0
  36. package/dist/cjs/types.js.map +1 -0
  37. package/dist/esm/Basic/BasicAuth.js +86 -0
  38. package/dist/esm/Basic/BasicAuth.js.map +1 -0
  39. package/dist/esm/Basic/BasicCollection.js +56 -0
  40. package/dist/esm/Basic/BasicCollection.js.map +1 -0
  41. package/dist/esm/Basic/types.js +2 -0
  42. package/dist/esm/Basic/types.js.map +1 -0
  43. package/dist/esm/Basic/utils/createAuthKey.js +4 -0
  44. package/dist/esm/Basic/utils/createAuthKey.js.map +1 -0
  45. package/dist/esm/OAuth/OAuth.js +258 -0
  46. package/dist/esm/OAuth/OAuth.js.map +1 -0
  47. package/dist/esm/OAuth/OAuthCollection.js +69 -0
  48. package/dist/esm/OAuth/OAuthCollection.js.map +1 -0
  49. package/dist/esm/OAuth/types.js +8 -0
  50. package/dist/esm/OAuth/types.js.map +1 -0
  51. package/dist/esm/OAuth/utils/ServiceDefinition.js +117 -0
  52. package/dist/esm/OAuth/utils/ServiceDefinition.js.map +1 -0
  53. package/dist/esm/OAuth/utils/createAuthKey.js +4 -0
  54. package/dist/esm/OAuth/utils/createAuthKey.js.map +1 -0
  55. package/dist/esm/OAuth/utils/formatScope.js +16 -0
  56. package/dist/esm/OAuth/utils/formatScope.js.map +1 -0
  57. package/dist/esm/OAuth/utils/isExpired.js +8 -0
  58. package/dist/esm/OAuth/utils/isExpired.js.map +1 -0
  59. package/dist/esm/Token/TokenAuth.js +64 -0
  60. package/dist/esm/Token/TokenAuth.js.map +1 -0
  61. package/dist/esm/Token/TokenCollection.js +55 -0
  62. package/dist/esm/Token/TokenCollection.js.map +1 -0
  63. package/dist/esm/Token/types.js +2 -0
  64. package/dist/esm/Token/types.js.map +1 -0
  65. package/dist/esm/Token/utils/createAuthKey.js +4 -0
  66. package/dist/esm/Token/utils/createAuthKey.js.map +1 -0
  67. package/dist/esm/constants.js +13 -0
  68. package/dist/esm/constants.js.map +1 -0
  69. package/dist/esm/index.js +8 -0
  70. package/dist/esm/index.js.map +1 -0
  71. package/dist/esm/types.js +4 -0
  72. package/dist/esm/types.js.map +1 -0
  73. package/dist/types/Basic/BasicAuth.d.ts +19 -0
  74. package/dist/types/Basic/BasicCollection.d.ts +12 -0
  75. package/dist/types/Basic/types.d.ts +26 -0
  76. package/dist/types/Basic/utils/createAuthKey.d.ts +1 -0
  77. package/dist/types/OAuth/OAuth.d.ts +18 -0
  78. package/dist/types/OAuth/OAuthCollection.d.ts +14 -0
  79. package/dist/types/OAuth/types.d.ts +81 -0
  80. package/dist/types/OAuth/utils/ServiceDefinition.d.ts +36 -0
  81. package/dist/types/OAuth/utils/createAuthKey.d.ts +1 -0
  82. package/dist/types/OAuth/utils/formatScope.d.ts +2 -0
  83. package/dist/types/OAuth/utils/isExpired.d.ts +1 -0
  84. package/dist/types/Token/TokenAuth.d.ts +11 -0
  85. package/dist/types/Token/TokenCollection.d.ts +12 -0
  86. package/dist/types/Token/types.d.ts +25 -0
  87. package/dist/types/Token/utils/createAuthKey.d.ts +1 -0
  88. package/dist/types/constants.d.ts +11 -0
  89. package/dist/types/index.d.ts +7 -0
  90. package/dist/types/types.d.ts +3 -0
  91. package/package.json +33 -0
  92. package/src/Basic/BasicAuth.ts +147 -0
  93. package/src/Basic/BasicCollection.ts +97 -0
  94. package/src/Basic/types.ts +54 -0
  95. package/src/Basic/utils/createAuthKey.ts +3 -0
  96. package/src/OAuth/OAuth.ts +480 -0
  97. package/src/OAuth/OAuthCollection.ts +138 -0
  98. package/src/OAuth/types.ts +131 -0
  99. package/src/OAuth/utils/ServiceDefinition.ts +171 -0
  100. package/src/OAuth/utils/createAuthKey.ts +3 -0
  101. package/src/OAuth/utils/formatScope.ts +20 -0
  102. package/src/OAuth/utils/isExpired.ts +7 -0
  103. package/src/Token/TokenAuth.ts +120 -0
  104. package/src/Token/TokenCollection.ts +97 -0
  105. package/src/Token/types.ts +51 -0
  106. package/src/Token/utils/createAuthKey.ts +3 -0
  107. package/src/constants.ts +14 -0
  108. package/src/index.ts +10 -0
  109. package/src/types.ts +3 -0
  110. package/tsconfig.esm.json +9 -0
  111. package/tsconfig.json +7 -0
  112. package/tsconfig.types.json +9 -0
@@ -0,0 +1,86 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { KeyValueStorage } from '@or-sdk/key-value-storage';
11
+ import { v4 as uuidv4 } from 'uuid';
12
+ import { createAuthKey } from './utils/createAuthKey';
13
+ export class BasicAuth {
14
+ constructor(params) {
15
+ const { token, discoveryUrl, authKey, serviceName } = params;
16
+ this.authKey = authKey;
17
+ this.serviceName = serviceName;
18
+ this.keyValueStorage = new KeyValueStorage({
19
+ token,
20
+ discoveryUrl,
21
+ });
22
+ }
23
+ static encodeAccessToken(username, password) {
24
+ return btoa(`${username}:${password}`);
25
+ }
26
+ static decodeAccessToken(token) {
27
+ const [username, password] = atob(token).split(':');
28
+ return {
29
+ username,
30
+ password,
31
+ };
32
+ }
33
+ static create(params) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ if (!(params.serviceName && params.authName && params.username && params.password && params.discoveryUrl && params.token)) {
36
+ throw new Error('Invalid config passed');
37
+ }
38
+ const { serviceName, authName, username, password, discoveryUrl, token } = params;
39
+ const keyValueStorage = new KeyValueStorage({
40
+ token,
41
+ discoveryUrl,
42
+ });
43
+ const id = uuidv4();
44
+ const authKey = createAuthKey(id, authName);
45
+ const authData = {
46
+ auth_name: authName,
47
+ access_token: BasicAuth.encodeAccessToken(username, password),
48
+ date_created: new Date().toISOString(),
49
+ };
50
+ yield keyValueStorage.setValueByKey(serviceName, authKey, authData);
51
+ return new BasicAuth({ serviceName,
52
+ authKey,
53
+ discoveryUrl,
54
+ token });
55
+ });
56
+ }
57
+ update(newCredentials) {
58
+ return __awaiter(this, void 0, void 0, function* () {
59
+ const data = yield this.getAuthData();
60
+ let { username, password } = BasicAuth.decodeAccessToken(data.access_token);
61
+ if (newCredentials.username) {
62
+ username = newCredentials.username;
63
+ }
64
+ if (newCredentials.password) {
65
+ password = newCredentials.password;
66
+ }
67
+ const updatedAccessToken = BasicAuth.encodeAccessToken(username, password);
68
+ const updatedData = Object.assign(Object.assign({}, data), { access_token: updatedAccessToken });
69
+ const response = yield this.keyValueStorage.setValueByKey(this.serviceName, this.authKey, updatedData);
70
+ const updatedRecord = response.value;
71
+ return updatedRecord;
72
+ });
73
+ }
74
+ getAuthData() {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ const { value } = yield this.keyValueStorage.getValueByKey(this.serviceName, this.authKey);
77
+ return value;
78
+ });
79
+ }
80
+ delete() {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ yield this.keyValueStorage.deleteKey(this.serviceName, this.authKey);
83
+ });
84
+ }
85
+ }
86
+ //# sourceMappingURL=BasicAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicAuth.js","sourceRoot":"","sources":["../../../src/Basic/BasicAuth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { KeyValueStorage } from '@or-sdk/key-value-storage';
11
+ import { BasicAuth } from './BasicAuth';
12
+ export class BasicCollection {
13
+ constructor(params) {
14
+ const { token, discoveryUrl, serviceName } = params;
15
+ this.localToken = token;
16
+ this.localDiscoveryUrl = discoveryUrl;
17
+ this.serviceName = serviceName;
18
+ this.keyValueStorage = new KeyValueStorage({
19
+ token,
20
+ discoveryUrl,
21
+ });
22
+ }
23
+ listAuthorizations() {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const records = yield this.keyValueStorage.listKeys(this.serviceName);
26
+ return records.map((record) => record.key);
27
+ });
28
+ }
29
+ getAuthorization(key) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ const record = yield this.keyValueStorage.getValueByKey(this.serviceName, key);
32
+ if (!record.value) {
33
+ throw new Error('Authorization does not exist');
34
+ }
35
+ return new BasicAuth({
36
+ serviceName: this.serviceName,
37
+ authKey: key,
38
+ discoveryUrl: this.localDiscoveryUrl,
39
+ token: this.localToken,
40
+ });
41
+ });
42
+ }
43
+ createAuthorization(params) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ return yield BasicAuth.create({
46
+ discoveryUrl: this.localDiscoveryUrl,
47
+ token: this.localToken,
48
+ serviceName: this.serviceName,
49
+ authName: params.authName,
50
+ password: params.password,
51
+ username: params.username,
52
+ });
53
+ });
54
+ }
55
+ }
56
+ //# sourceMappingURL=BasicCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasicCollection.js","sourceRoot":"","sources":["../../../src/Basic/BasicCollection.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAcxC,MAAM,OAAO,eAAe;IAkB1B,YAAY,MAA6B;QACvC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAEpD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;YACzC,KAAK;YACL,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAKY,kBAAkB;;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEtE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;KAAA;IAKY,gBAAgB,CAAC,GAAW;;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACjD;YAED,OAAO,IAAI,SAAS,CAAC;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,GAAG;gBACZ,YAAY,EAAE,IAAI,CAAC,iBAAiB;gBACpC,KAAK,EAAE,IAAI,CAAC,UAAU;aACvB,CAAC,CAAC;QACL,CAAC;KAAA;IAcY,mBAAmB,CAC9B,MAAyC;;YAEzC,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC;gBAC5B,YAAY,EAAE,IAAI,CAAC,iBAAiB;gBACpC,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC;KAAA;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Basic/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export const createAuthKey = (id, authName) => {
2
+ return `${id}::basic::${authName}`;
3
+ };
4
+ //# sourceMappingURL=createAuthKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAuthKey.js","sourceRoot":"","sources":["../../../../src/Basic/utils/createAuthKey.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAU,EAAE,QAAgB,EAAU,EAAE;IACpE,OAAO,GAAG,EAAE,YAAY,QAAQ,EAAE,CAAC;AACrC,CAAC,CAAC"}
@@ -0,0 +1,258 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { KeyValueStorage } from '@or-sdk/key-value-storage';
11
+ import { EventManager } from '@or-sdk/event-manager';
12
+ import { timeout } from '@or-sdk/base';
13
+ import { v4 as uuidv4 } from 'uuid';
14
+ import { SERVICE_PROVIDER_PATH, OAUTH_REDIRECT_PROVIDER_PATH, PREDEFINED_APP, TEMPORARY_DATA_EXPIRATION_TIME, AuthStatus, } from '../constants';
15
+ import { formatScope } from './utils/formatScope';
16
+ import { isExpired } from './utils/isExpired';
17
+ import { ServiceDefinition } from './utils/ServiceDefinition';
18
+ import { createAuthKey } from './utils/createAuthKey';
19
+ export class OAuth {
20
+ constructor(params) {
21
+ this.status = AuthStatus.READY;
22
+ const { token, discoveryUrl, authKey, serviceName, keyValueCollection } = params;
23
+ this.authKey = authKey;
24
+ this.serviceName = serviceName;
25
+ this.keyValueCollection = keyValueCollection || serviceName;
26
+ this.keyValueStorage = new KeyValueStorage({
27
+ token,
28
+ discoveryUrl,
29
+ });
30
+ this.eventManager = new EventManager({
31
+ token,
32
+ discoveryUrl,
33
+ requestAccountId: true,
34
+ requestProvidersAccountId: true,
35
+ });
36
+ }
37
+ static create(params) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ if (!(params.serviceName &&
40
+ params.authName &&
41
+ params.discoveryUrl &&
42
+ params.token &&
43
+ params.appId)) {
44
+ throw new Error('Invalid config passed');
45
+ }
46
+ const { serviceName, authName, discoveryUrl, token, appId, scope } = params;
47
+ const keyValueCollection = params.keyValueCollection || serviceName;
48
+ const keyValueStorage = new KeyValueStorage({
49
+ token,
50
+ discoveryUrl,
51
+ });
52
+ const eventManager = new EventManager({
53
+ token,
54
+ discoveryUrl,
55
+ requestAccountId: true,
56
+ requestProvidersAccountId: true,
57
+ });
58
+ yield eventManager.init();
59
+ const serviceDefinitionProviderRoute = `http/${eventManager.providersAccountId}${SERVICE_PROVIDER_PATH}`;
60
+ const services = yield eventManager.makeRequest({
61
+ method: 'GET',
62
+ route: serviceDefinitionProviderRoute,
63
+ params: {
64
+ type: 'list',
65
+ },
66
+ });
67
+ const currentServiceData = services[serviceName];
68
+ const apps = yield keyValueStorage.getValueByKey(keyValueCollection, '__authorizer_apps');
69
+ const currentApp = apps.value.find((app) => app.value.appId === appId).value;
70
+ const serviceDefinition = new ServiceDefinition(currentServiceData, currentApp.authLinkParams, currentApp.environment);
71
+ const id = uuidv4();
72
+ const authKey = createAuthKey(id, authName, keyValueCollection, eventManager.currentAccountId);
73
+ const additionalBodyData = {};
74
+ const additionalHeaders = {};
75
+ const emUrl = eventManager.serviceUrl;
76
+ const redirectProviderUrl = `${emUrl}/http/${eventManager.providersAccountId}${OAUTH_REDIRECT_PROVIDER_PATH}`;
77
+ const authConfigs = Object.assign(Object.assign({}, additionalBodyData), { grant_type: 'authorization_code', redirect_uri: redirectProviderUrl, appId });
78
+ if (scope) {
79
+ const formattedScope = formatScope(scope, serviceDefinition.scopeType);
80
+ authConfigs.scope = formattedScope;
81
+ }
82
+ const configs = {
83
+ [serviceDefinition.requestDataType]: authConfigs,
84
+ };
85
+ const tempAuthData = {
86
+ expiresInDefaultValue: serviceDefinition.expiresInDefaultValue,
87
+ urlToExchangeToken: serviceDefinition.exchangeTokenUri,
88
+ refreshUri: serviceDefinition.refreshUri,
89
+ additionalHeaders,
90
+ configs,
91
+ isCustomApp: appId !== PREDEFINED_APP,
92
+ requestDataType: serviceDefinition.requestDataType,
93
+ service: keyValueCollection,
94
+ serviceConfigName: serviceName,
95
+ name: authName,
96
+ displayServiceName: serviceDefinition.displayServiceName,
97
+ accountId: eventManager.currentAccountId,
98
+ };
99
+ const authDataExpire = Date.now() + TEMPORARY_DATA_EXPIRATION_TIME;
100
+ yield keyValueStorage.setValueByKey('__authorizer_temp-uuid', id, tempAuthData, authDataExpire);
101
+ const authUrl = new URL(serviceDefinition.authorizeUri);
102
+ const additionalParams = JSON.parse(serviceDefinition.authRequestAdditionalParams);
103
+ Object.entries(additionalParams.queryParams).forEach(([key, value]) => {
104
+ authUrl.searchParams.append(key, value);
105
+ });
106
+ authUrl.searchParams.append('response_type', 'code');
107
+ authUrl.searchParams.append('client_id', currentApp.clientId);
108
+ authUrl.searchParams.append('redirect_uri', redirectProviderUrl);
109
+ authUrl.searchParams.append('state', authKey);
110
+ if (scope) {
111
+ const formattedScope = formatScope(scope, serviceDefinition.scopeType);
112
+ authUrl.searchParams.append('scope', formattedScope);
113
+ }
114
+ const authorizeUrl = authUrl.href;
115
+ const newOAuth = new OAuth({
116
+ serviceName,
117
+ authKey,
118
+ discoveryUrl,
119
+ token,
120
+ });
121
+ newOAuth.status = AuthStatus.PENDING;
122
+ return {
123
+ instance: newOAuth,
124
+ authorizeUrl,
125
+ };
126
+ });
127
+ }
128
+ getOAuthAppById(appId) {
129
+ return __awaiter(this, void 0, void 0, function* () {
130
+ const appsStorageRecord = yield this.keyValueStorage.getValueByKey(this.keyValueCollection, '__authorizer_apps');
131
+ const appsRecords = appsStorageRecord.value;
132
+ const currentApp = appsRecords.find(app => app.value.appId === appId);
133
+ if (!currentApp) {
134
+ return;
135
+ }
136
+ return Object.assign({ name: currentApp.label }, currentApp.value);
137
+ });
138
+ }
139
+ getServiceDefinition(currentApp) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ yield this.eventManager.init();
142
+ const serviceDefinitionProviderRoute = `http/${this.eventManager.providersAccountId}${SERVICE_PROVIDER_PATH}`;
143
+ const services = yield this.eventManager.makeRequest({
144
+ method: 'GET',
145
+ route: serviceDefinitionProviderRoute,
146
+ params: {
147
+ type: 'list',
148
+ },
149
+ });
150
+ const currentServiceData = services[this.serviceName];
151
+ return new ServiceDefinition(currentServiceData, currentApp.authLinkParams, currentApp.environment);
152
+ });
153
+ }
154
+ waitForCompletion() {
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ if (this.status === AuthStatus.PENDING) {
157
+ let pollInterval = 3;
158
+ const step = 1;
159
+ const pollTimeout = 300;
160
+ let spentTime = 0;
161
+ let isFinished = false;
162
+ while (spentTime < pollTimeout) {
163
+ const record = yield this.keyValueStorage.getValueByKey(this.keyValueCollection, this.authKey);
164
+ if (record.value) {
165
+ isFinished = true;
166
+ break;
167
+ }
168
+ yield timeout(pollInterval);
169
+ spentTime += pollInterval;
170
+ pollInterval += step;
171
+ }
172
+ if (!isFinished) {
173
+ this.status = AuthStatus.ERROR;
174
+ throw new Error('Authorization was not completed within the allowed time');
175
+ }
176
+ }
177
+ this.status = AuthStatus.READY;
178
+ });
179
+ }
180
+ getAuthData() {
181
+ return __awaiter(this, void 0, void 0, function* () {
182
+ if (this.status !== AuthStatus.READY) {
183
+ throw new Error('This authorization is not ready');
184
+ }
185
+ const { value } = yield this.keyValueStorage.getValueByKey(this.serviceName, this.authKey);
186
+ if (!value) {
187
+ this.status = AuthStatus.ERROR;
188
+ throw new Error('Authorization record does not exist');
189
+ }
190
+ const authData = value;
191
+ if (!authData.expires_in) {
192
+ return authData;
193
+ }
194
+ const expired = isExpired(authData.created_at, authData.expires_in);
195
+ if (!expired) {
196
+ return authData;
197
+ }
198
+ yield this.refresh();
199
+ const { value: refreshedAuthData } = yield this.keyValueStorage.getValueByKey(this.serviceName, this.authKey);
200
+ return refreshedAuthData;
201
+ });
202
+ }
203
+ refresh() {
204
+ return __awaiter(this, void 0, void 0, function* () {
205
+ const { value } = yield this.keyValueStorage.getValueByKey(this.serviceName, this.authKey);
206
+ if (!value) {
207
+ this.status = AuthStatus.ERROR;
208
+ throw new Error('Authorization record does not exist');
209
+ }
210
+ const authData = value;
211
+ const appId = authData.appId;
212
+ const currentApp = yield this.getOAuthAppById(appId);
213
+ if (!currentApp) {
214
+ this.status = AuthStatus.ERROR;
215
+ throw new Error('The application used for this authorization does not exist');
216
+ }
217
+ const serviceDefinition = yield this.getServiceDefinition(currentApp);
218
+ yield this.eventManager.makeRequest({
219
+ method: 'POST',
220
+ route: new URL(authData.redirect_uri).pathname,
221
+ data: {
222
+ refreshTokenUrl: authData.refreshUri,
223
+ sendDataType: serviceDefinition.requestDataType,
224
+ currentUserData: authData,
225
+ service: this.keyValueCollection,
226
+ currentAuth: this.authKey,
227
+ },
228
+ });
229
+ });
230
+ }
231
+ getOAuthApp() {
232
+ return __awaiter(this, void 0, void 0, function* () {
233
+ if (this.status !== AuthStatus.READY) {
234
+ throw new Error('This authorization is not ready');
235
+ }
236
+ const { value } = yield this.keyValueStorage.getValueByKey(this.serviceName, this.authKey);
237
+ if (!value) {
238
+ this.status = AuthStatus.ERROR;
239
+ throw new Error('Authorization record does not exist');
240
+ }
241
+ const authData = value;
242
+ const appId = authData.appId;
243
+ const currentApp = yield this.getOAuthAppById(appId);
244
+ if (!currentApp) {
245
+ this.status = AuthStatus.ERROR;
246
+ throw new Error('The application used for this authorization does not exist');
247
+ }
248
+ return currentApp;
249
+ });
250
+ }
251
+ delete() {
252
+ return __awaiter(this, void 0, void 0, function* () {
253
+ yield this.keyValueStorage.deleteKey(this.serviceName, this.authKey);
254
+ this.status = AuthStatus.DELETED;
255
+ });
256
+ }
257
+ }
258
+ //# sourceMappingURL=OAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuth.js","sourceRoot":"","sources":["../../../src/OAuth/OAuth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { KeyValueStorage } from '@or-sdk/key-value-storage';
11
+ import { OAuth } from './OAuth';
12
+ export class OAuthCollection {
13
+ constructor(params) {
14
+ const { token, discoveryUrl, serviceName, keyValueCollection } = params;
15
+ this.localToken = token;
16
+ this.localDiscoveryUrl = discoveryUrl;
17
+ this.serviceName = serviceName;
18
+ this.keyValueCollection = keyValueCollection || serviceName;
19
+ this.keyValueStorage = new KeyValueStorage({
20
+ token,
21
+ discoveryUrl,
22
+ });
23
+ }
24
+ listAuthorizations() {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const records = yield this.keyValueStorage.listKeys(this.keyValueCollection);
27
+ return records.map((record) => record.key);
28
+ });
29
+ }
30
+ listOAuthApps() {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const appsStorageRecord = yield this.keyValueStorage.getValueByKey(this.keyValueCollection, '__authorizer_apps');
33
+ if (!appsStorageRecord.value) {
34
+ return [];
35
+ }
36
+ const appsRecords = appsStorageRecord.value;
37
+ return appsRecords.map((record) => (Object.assign({ name: record.label }, record.value)));
38
+ });
39
+ }
40
+ getAuthorization(key) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ const record = yield this.keyValueStorage.getValueByKey(this.keyValueCollection, key);
43
+ if (!record.value) {
44
+ throw new Error('This authorization does not exist');
45
+ }
46
+ return new OAuth({
47
+ serviceName: this.serviceName,
48
+ keyValueCollection: this.keyValueCollection,
49
+ authKey: key,
50
+ discoveryUrl: this.localDiscoveryUrl,
51
+ token: this.localToken,
52
+ });
53
+ });
54
+ }
55
+ createAuthorization(params) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ return yield OAuth.create({
58
+ discoveryUrl: this.localDiscoveryUrl,
59
+ token: this.localToken,
60
+ appId: params.appId,
61
+ keyValueCollection: this.keyValueCollection,
62
+ scope: params.scope,
63
+ serviceName: this.serviceName,
64
+ authName: params.authName,
65
+ });
66
+ });
67
+ }
68
+ }
69
+ //# sourceMappingURL=OAuthCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OAuthCollection.js","sourceRoot":"","sources":["../../../src/OAuth/OAuthCollection.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAWhC,MAAM,OAAO,eAAe;IAoB1B,YAAY,MAA6B;QACvC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;QAExE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,IAAI,WAAW,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;YACzC,KAAK;YACL,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAKY,kBAAkB;;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CACjD,IAAI,CAAC,kBAAkB,CACxB,CAAC;YAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;KAAA;IAKY,aAAa;;YACxB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAChE,IAAI,CAAC,kBAAkB,EACvB,mBAAmB,CACpB,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;gBAC5B,OAAO,EAAE,CAAC;aACX;YAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAGpC,CAAC;YAEH,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBACjC,IAAI,EAAE,MAAM,CAAC,KAAK,IACf,MAAM,CAAC,KAAK,EACf,CAAC,CAAC;QACN,CAAC;KAAA;IAKY,gBAAgB,CAAC,GAAW;;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CACrD,IAAI,CAAC,kBAAkB,EACvB,GAAG,CACJ,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACtD;YAED,OAAO,IAAI,KAAK,CAAC;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,OAAO,EAAE,GAAG;gBACZ,YAAY,EAAE,IAAI,CAAC,iBAAiB;gBACpC,KAAK,EAAE,IAAI,CAAC,UAAU;aACvB,CAAC,CAAC;QACL,CAAC;KAAA;IAwBY,mBAAmB,CAC9B,MAAqC;;YAErC,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC;gBACxB,YAAY,EAAE,IAAI,CAAC,iBAAiB;gBACpC,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC;KAAA;CACF"}
@@ -0,0 +1,8 @@
1
+ export var ScopeType;
2
+ (function (ScopeType) {
3
+ ScopeType["SPACE_DELIMITED"] = "SPACE_DELIMITED";
4
+ ScopeType["COMMA_DELIMITED"] = "COMMA_DELIMITED";
5
+ ScopeType["COMMA_DELIMITED_WITHOUT_WHITESPACE"] = "COMMA_DELIMITED_WITHOUT_WHITESPACE";
6
+ ScopeType["JSON_ARRAY"] = "JSON_ARRAY";
7
+ })(ScopeType || (ScopeType = {}));
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/OAuth/types.ts"],"names":[],"mappings":"AA2HA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,gDAAmC,CAAA;IACnC,gDAAmC,CAAA;IACnC,sFAAyE,CAAA;IACzE,sCAAyB,CAAA;AAC3B,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB"}
@@ -0,0 +1,117 @@
1
+ export class ServiceDefinition {
2
+ constructor(params, authLinkAdditionalParamsValues, currentEnvironment) {
3
+ this.currentEnvironment = currentEnvironment || 'default';
4
+ this.authLinkAdditionalParamsValues = authLinkAdditionalParamsValues || {};
5
+ this._serviceName = params.serviceName;
6
+ this._requestDataType = params.requestDataType;
7
+ this._grantType = params.grantType;
8
+ this._authorizeUri = params.authorizeUri;
9
+ this._exchangeTokenUri = params.exchangeTokenUri;
10
+ this._useRefresh = params.useRefresh;
11
+ this._expiresInPropertyName = params.expiresInPropertyName;
12
+ this._expiresInDefaultValue = params.expiresInDefaultValue;
13
+ this._refreshUri = params.refreshUri;
14
+ this._scopeType = params.scopeType;
15
+ this._authRequestAdditionalParams = params.authRequestAdditionalParams;
16
+ this._codeExchangeRequestAdditionalParams =
17
+ params.codeExchangeRequestAdditionalParams;
18
+ this._environments = params.environments;
19
+ this._authLinkAdditionalParams = params.authLinkAdditionalParams;
20
+ }
21
+ isPropertyInEnvironment(environment, prop) {
22
+ if (this._environments === undefined) {
23
+ return false;
24
+ }
25
+ const isEnvironmentExist = Object.keys(this._environments).includes(environment);
26
+ if (!isEnvironmentExist) {
27
+ return false;
28
+ }
29
+ const currentEnv = this._environments[environment];
30
+ if (!currentEnv) {
31
+ return false;
32
+ }
33
+ const isPropExist = Object.keys(currentEnv).includes(prop);
34
+ return isPropExist;
35
+ }
36
+ replaceAuthLinkParamsByValues(url) {
37
+ let template = url;
38
+ const params = this.authLinkAdditionalParamsValues;
39
+ Object.entries(params).forEach(([key, value]) => {
40
+ template = template.replace(new RegExp(`{${key}}`), value);
41
+ });
42
+ return template;
43
+ }
44
+ get requestDataType() {
45
+ return this._requestDataType;
46
+ }
47
+ get grantType() {
48
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'grantType')) {
49
+ return this._environments[this.currentEnvironment].grantType;
50
+ }
51
+ return this._grantType || 'authorization_code';
52
+ }
53
+ get authorizeUri() {
54
+ let url;
55
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'authorizeUri')) {
56
+ url = this._environments[this.currentEnvironment].authorizeUri;
57
+ }
58
+ else {
59
+ url = this._authorizeUri;
60
+ }
61
+ return this.replaceAuthLinkParamsByValues(url);
62
+ }
63
+ get exchangeTokenUri() {
64
+ let url;
65
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'exchangeTokenUri')) {
66
+ url = this._environments[this.currentEnvironment].exchangeTokenUri;
67
+ }
68
+ else {
69
+ url = this._exchangeTokenUri;
70
+ }
71
+ return this.replaceAuthLinkParamsByValues(url);
72
+ }
73
+ get refreshUri() {
74
+ let url;
75
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'refreshUri')) {
76
+ url = this._environments[this.currentEnvironment].refreshUri;
77
+ }
78
+ else {
79
+ url = this._refreshUri;
80
+ }
81
+ return this.replaceAuthLinkParamsByValues(url);
82
+ }
83
+ get useRefresh() {
84
+ return this._useRefresh;
85
+ }
86
+ get expiresInPropertyName() {
87
+ return this._expiresInPropertyName;
88
+ }
89
+ get expiresInDefaultValue() {
90
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'expiresInDefaultValue')) {
91
+ return this._environments[this.currentEnvironment].expiresInDefaultValue;
92
+ }
93
+ return this._expiresInDefaultValue || 0;
94
+ }
95
+ get scopeType() {
96
+ return this._scopeType;
97
+ }
98
+ get authRequestAdditionalParams() {
99
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'authRequestAdditionalParams')) {
100
+ return this._environments[this.currentEnvironment].authRequestAdditionalParams;
101
+ }
102
+ return this._authRequestAdditionalParams;
103
+ }
104
+ get codeExchangeRequestAdditionalParams() {
105
+ if (this.isPropertyInEnvironment(this.currentEnvironment, 'codeExchangeRequestAdditionalParams')) {
106
+ return this._environments[this.currentEnvironment].codeExchangeRequestAdditionalParams;
107
+ }
108
+ return this._codeExchangeRequestAdditionalParams;
109
+ }
110
+ get authLinkAdditionalParams() {
111
+ return this._authLinkAdditionalParams;
112
+ }
113
+ get displayServiceName() {
114
+ return this._displayServiceName || this._serviceName.split('__authorization_service_')[1];
115
+ }
116
+ }
117
+ //# sourceMappingURL=ServiceDefinition.js.map