@forestadmin/forestadmin-client 1.24.2 → 1.24.3

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.
@@ -0,0 +1,8 @@
1
+ import type { errors } from 'openid-client';
2
+ export declare class AuthenticationError extends Error {
3
+ readonly description: string;
4
+ readonly state: string;
5
+ readonly code: string;
6
+ constructor(e: errors.OPError);
7
+ }
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthenticationError = void 0;
4
+ // eslint-disable-next-line import/prefer-default-export
5
+ class AuthenticationError extends Error {
6
+ constructor(e) {
7
+ super(e.message);
8
+ this.description = e.error_description;
9
+ this.state = e.state;
10
+ this.code = e.error;
11
+ this.stack = e.stack;
12
+ }
13
+ }
14
+ exports.AuthenticationError = AuthenticationError;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHdEQUF3RDtBQUN4RCxNQUFhLG1CQUFvQixTQUFRLEtBQUs7SUFLNUMsWUFBWSxDQUFpQjtRQUMzQixLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQWJELGtEQWFDIn0=
@@ -1,10 +1,21 @@
1
- import { Client } from 'openid-client';
2
- import { UserInfo } from './types';
3
- import { ForestAdminClientOptionsWithDefaults } from '../types';
4
- export default class AuthService {
1
+ /// <reference types="node" />
2
+ import { ParsedUrlQuery } from 'querystring';
3
+ import { Tokens, UserInfo } from './types';
4
+ import { ForestAdminAuthServiceInterface, ForestAdminClientOptionsWithDefaults } from '../types';
5
+ export default class AuthService implements ForestAdminAuthServiceInterface {
5
6
  private options;
7
+ private client;
6
8
  constructor(options: ForestAdminClientOptionsWithDefaults);
7
- getOpenIdClient(): Promise<Client>;
9
+ init(): Promise<void>;
8
10
  getUserInfo(renderingId: number, accessToken: string): Promise<UserInfo>;
11
+ generateAuthorizationUrl({ scope, state, }: {
12
+ scope: string;
13
+ state: string;
14
+ }): Promise<string>;
15
+ generateTokens({ query, state, }: {
16
+ query: ParsedUrlQuery;
17
+ state: string;
18
+ }): Promise<Tokens>;
19
+ private handleError;
9
20
  }
10
21
  //# sourceMappingURL=index.d.ts.map
@@ -4,18 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const openid_client_1 = require("openid-client");
7
+ const errors_1 = require("./errors");
7
8
  const server_1 = __importDefault(require("../utils/server"));
8
9
  class AuthService {
9
10
  constructor(options) {
10
11
  this.options = options;
11
12
  }
12
- async getOpenIdClient() {
13
+ async init() {
14
+ if (this.client)
15
+ return;
13
16
  // We can't use 'Issuer.discover' because the oidc config is behind an auth-wall.
14
17
  const url = '/oidc/.well-known/openid-configuration';
15
18
  const config = await server_1.default.query(this.options, 'get', url);
16
19
  const issuer = new openid_client_1.Issuer(config);
17
20
  const registration = { token_endpoint_auth_method: 'none' };
18
- return issuer.Client.register(registration, {
21
+ this.client = await issuer.Client.register(registration, {
19
22
  initialAccessToken: this.options.envSecret,
20
23
  });
21
24
  }
@@ -36,6 +39,34 @@ class AuthService {
36
39
  tags: response.data.attributes.tags?.reduce((memo, { key, value }) => ({ ...memo, [key]: value }), {}),
37
40
  };
38
41
  }
42
+ async generateAuthorizationUrl({ scope, state, }) {
43
+ if (!this.client)
44
+ throw new Error('AuthService not initialized');
45
+ const url = this.client.authorizationUrl({
46
+ scope,
47
+ state,
48
+ });
49
+ return url;
50
+ }
51
+ async generateTokens({ query, state, }) {
52
+ if (!this.client)
53
+ throw new Error('AuthService not initialized');
54
+ try {
55
+ const tokens = await this.client.callback(undefined, query, { state });
56
+ return {
57
+ accessToken: tokens.access_token,
58
+ };
59
+ }
60
+ catch (e) {
61
+ this.handleError(e);
62
+ }
63
+ }
64
+ handleError(e) {
65
+ if (e instanceof openid_client_1.errors.OPError) {
66
+ throw new errors_1.AuthenticationError(e);
67
+ }
68
+ throw e;
69
+ }
39
70
  }
40
71
  exports.default = AuthService;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlEQUFpRjtBQUtqRiw2REFBMEM7QUFFMUMsTUFBcUIsV0FBVztJQUM5QixZQUFvQixPQUE2QztRQUE3QyxZQUFPLEdBQVAsT0FBTyxDQUFzQztJQUFHLENBQUM7SUFFckUsS0FBSyxDQUFDLGVBQWU7UUFDbkIsaUZBQWlGO1FBQ2pGLE1BQU0sR0FBRyxHQUFHLHdDQUF3QyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQVcsQ0FBQyxLQUFLLENBQWlCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxFQUFFLDBCQUEwQixFQUFFLE1BQTBCLEVBQUUsQ0FBQztRQUVoRixPQUFRLE1BQU0sQ0FBQyxNQUFvQixDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDekQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1NBQzNDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQW1CLEVBQUUsV0FBbUI7UUFDeEQsTUFBTSxHQUFHLEdBQUcsd0JBQXdCLFdBQVcsZ0JBQWdCLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFaEQsOERBQThEO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sZ0JBQVcsQ0FBQyxLQUFLLENBQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWpGLE9BQU87WUFDTCxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVCLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO1lBQ3JDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVO1lBQzlDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO1lBQzVDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQ25DLGVBQWUsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDMUQsV0FBVztZQUNYLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUN6QyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDckQsRUFBRSxDQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJDRCw4QkFxQ0MifQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlEQUE2RjtBQUc3RixxQ0FBK0M7QUFJL0MsNkRBQTBDO0FBRTFDLE1BQXFCLFdBQVc7SUFHOUIsWUFBb0IsT0FBNkM7UUFBN0MsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7SUFBRyxDQUFDO0lBRTlELEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFeEIsaUZBQWlGO1FBQ2pGLE1BQU0sR0FBRyxHQUFHLHdDQUF3QyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQVcsQ0FBQyxLQUFLLENBQWlCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLFlBQVksR0FBRyxFQUFFLDBCQUEwQixFQUFFLE1BQTBCLEVBQUUsQ0FBQztRQUVoRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU8sTUFBTSxDQUFDLE1BQW9CLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUN0RSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7U0FDM0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBbUIsRUFBRSxXQUFtQjtRQUN4RCxNQUFNLEdBQUcsR0FBRyx3QkFBd0IsV0FBVyxnQkFBZ0IsQ0FBQztRQUNoRSxNQUFNLE9BQU8sR0FBRyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVoRCw4REFBOEQ7UUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBVyxDQUFDLEtBQUssQ0FBTSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakYsT0FBTztZQUNMLEVBQUUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDNUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7WUFDckMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7WUFDOUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7WUFDNUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDbkMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtZQUMxRCxXQUFXO1lBQ1gsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQ3pDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUNyRCxFQUFFLENBQ0g7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxFQUNwQyxLQUFLLEVBQ0wsS0FBSyxHQUlOO1FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDdkMsS0FBSztZQUNMLEtBQUs7U0FDTixDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQzFCLEtBQUssRUFDTCxLQUFLLEdBSU47UUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFFakUsSUFBSTtZQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFdkUsT0FBTztnQkFDTCxXQUFXLEVBQUUsTUFBTSxDQUFDLFlBQVk7YUFDakMsQ0FBQztTQUNIO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxDQUFRO1FBQzFCLElBQUksQ0FBQyxZQUFZLHNCQUFNLENBQUMsT0FBTyxFQUFFO1lBQy9CLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQztRQUVELE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztDQUNGO0FBdEZELDhCQXNGQyJ9
@@ -11,4 +11,7 @@ export type UserInfo = {
11
11
  };
12
12
  permissionLevel: string;
13
13
  };
14
+ export type Tokens = {
15
+ accessToken: string;
16
+ };
14
17
  //# sourceMappingURL=types.d.ts.map
@@ -1,6 +1,4 @@
1
- import { Client } from 'openid-client';
2
1
  import AuthService from './auth';
3
- import { UserInfo } from './auth/types';
4
2
  import ChartHandler from './charts/chart-handler';
5
3
  import { BaseEventsSubscriptionService, RefreshEventsHandlerService } from './events-subscription/types';
6
4
  import IpWhiteListService from './ip-whitelist';
@@ -20,7 +18,7 @@ export default class ForestAdminClientWithCache implements ForestAdminClient {
20
18
  readonly chartHandler: ChartHandler;
21
19
  protected readonly ipWhitelistService: IpWhiteListService;
22
20
  protected readonly schemaService: SchemaService;
23
- protected readonly authService: AuthService;
21
+ readonly authService: AuthService;
24
22
  readonly modelCustomizationService: ModelCustomizationService;
25
23
  protected readonly eventsSubscription: BaseEventsSubscriptionService;
26
24
  protected readonly eventsHandler: RefreshEventsHandlerService;
@@ -28,8 +26,6 @@ export default class ForestAdminClientWithCache implements ForestAdminClient {
28
26
  verifySignedActionParameters<TSignedParameters>(signedParameters: string): TSignedParameters;
29
27
  getIpWhitelistConfiguration(): Promise<IpWhitelistConfiguration>;
30
28
  postSchema(schema: ForestSchema): Promise<boolean>;
31
- getOpenIdClient(): Promise<Client>;
32
- getUserInfo(renderingId: number, accessToken: string): Promise<UserInfo>;
33
29
  getScope({ renderingId, userId, collectionName, }: {
34
30
  renderingId: number | string;
35
31
  userId: number | string;
@@ -27,12 +27,6 @@ class ForestAdminClientWithCache {
27
27
  async postSchema(schema) {
28
28
  return this.schemaService.postSchema(schema);
29
29
  }
30
- getOpenIdClient() {
31
- return this.authService.getOpenIdClient();
32
- }
33
- getUserInfo(renderingId, accessToken) {
34
- return this.authService.getUserInfo(renderingId, accessToken);
35
- }
36
30
  async getScope({ renderingId, userId, collectionName, }) {
37
31
  return this.renderingPermissionService.getScope({
38
32
  renderingId,
@@ -55,4 +49,4 @@ class ForestAdminClientWithCache {
55
49
  }
56
50
  }
57
51
  exports.default = ForestAdminClientWithCache;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWFkbWluLWNsaWVudC13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1hZG1pbi1jbGllbnQtd2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWNBLG9GQUFxRTtBQVVyRSxNQUFxQiwwQkFBMEI7SUFDN0MsWUFDcUIsT0FBNkMsRUFDaEQsaUJBQW9DLEVBQ2pDLDBCQUFzRCxFQUN6RCw0QkFBMEQsRUFDMUQsWUFBMEIsRUFDdkIsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQzNCLHlCQUFvRCxFQUNqRCxrQkFBaUQsRUFDakQsYUFBMEM7UUFWMUMsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNqQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3pELGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDdkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMzQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ2pELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBK0I7UUFDakQsa0JBQWEsR0FBYixhQUFhLENBQTZCO0lBQzVELENBQUM7SUFFSiw0QkFBNEIsQ0FBb0IsZ0JBQXdCO1FBQ3RFLE9BQU8sSUFBQSx5QkFBd0IsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXLENBQUMsV0FBbUIsRUFBRSxXQUFtQjtRQUNsRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUNwQixXQUFXLEVBQ1gsTUFBTSxFQUNOLGNBQWMsR0FLZjtRQUNDLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxXQUFXO1lBQ1gsY0FBYztZQUNkLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsV0FBNEI7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFDbEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLE9BQW1DO1FBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBbkVELDZDQW1FQyJ9
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWFkbWluLWNsaWVudC13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1hZG1pbi1jbGllbnQtd2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBLG9GQUFxRTtBQVVyRSxNQUFxQiwwQkFBMEI7SUFDN0MsWUFDcUIsT0FBNkMsRUFDaEQsaUJBQW9DLEVBQ2pDLDBCQUFzRCxFQUN6RCw0QkFBMEQsRUFDMUQsWUFBMEIsRUFDdkIsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQy9CLFdBQXdCLEVBQ3hCLHlCQUFvRCxFQUNqRCxrQkFBaUQsRUFDakQsYUFBMEM7UUFWMUMsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNqQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3pELGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDdkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ2pELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBK0I7UUFDakQsa0JBQWEsR0FBYixhQUFhLENBQTZCO0lBQzVELENBQUM7SUFFSiw0QkFBNEIsQ0FBb0IsZ0JBQXdCO1FBQ3RFLE9BQU8sSUFBQSx5QkFBd0IsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQ3BCLFdBQVcsRUFDWCxNQUFNLEVBQ04sY0FBYyxHQUtmO1FBQ0MsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDO1lBQzlDLFdBQVc7WUFDWCxjQUFjO1lBQ2QsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxXQUE0QjtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUI7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLHVCQUF1QjtRQUNsQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsT0FBbUM7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUEzREQsNkNBMkRDIn0=
package/dist/index.d.ts CHANGED
@@ -18,4 +18,5 @@ export { default as ChartHandler } from './charts/chart-handler';
18
18
  export { default as ForestAdminClientWithCache } from './forest-admin-client-with-cache';
19
19
  export { default as buildApplicationServices } from './build-application-services';
20
20
  export { default as SchemaService } from './schema';
21
+ export * from './auth/errors';
21
22
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -55,4 +55,5 @@ Object.defineProperty(exports, "buildApplicationServices", { enumerable: true, g
55
55
  // export is necessary for the agent-generator package
56
56
  var schema_1 = require("./schema");
57
57
  Object.defineProperty(exports, "SchemaService", { enumerable: true, get: function () { return __importDefault(schema_1).default; } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RkFBb0U7QUFDcEUsc0dBQTBFO0FBQzFFLG9GQUEwRDtBQUcxRCx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQUMxQyx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4QyxvRkFBMkY7QUFBbEYsNElBQUEsT0FBTyxPQUFzQjtBQUN0Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQWMxQyx1REFBdUQ7QUFDdkQsNkNBSzZCO0FBSjNCLDhHQUFBLHFCQUFxQixPQUFBO0FBT3ZCLFNBQXdCLHVCQUF1QixDQUM3QyxPQUFpQztJQUVqQyxNQUFNLEVBQ0osbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLElBQUksRUFDSix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLGFBQWEsR0FDZCxHQUFHLElBQUEsb0NBQXdCLEVBQUMsSUFBSSx5QkFBYSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFJLHdDQUEwQixDQUNuQyxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sSUFBSSxFQUNKLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsYUFBYSxDQUNkLENBQUM7QUFDSixDQUFDO0FBOUJELDBDQThCQztBQUVELGlEQUErQjtBQUMvQixpREFBK0I7QUFDL0IsK0RBQTZDO0FBRTdDLGlGQUF5RjtBQUFoRix1SkFBQSxPQUFPLE9BQTRCO0FBQzVDLCtEQUF3RTtBQUEvRCxzSUFBQSxPQUFPLE9BQW9CO0FBQ3BDLHdEQUFpRTtBQUF4RCw4SEFBQSxPQUFPLE9BQWdCO0FBQ2hDLG1GQUF5RjtBQUFoRiw2SkFBQSxPQUFPLE9BQThCO0FBQzlDLDJFQUFtRjtBQUExRSx1SkFBQSxPQUFPLE9BQTRCO0FBRTVDLHNEQUFzRDtBQUN0RCxtQ0FBb0Q7QUFBM0Msd0hBQUEsT0FBTyxPQUFpQiJ9
58
+ __exportStar(require("./auth/errors"), exports);
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RkFBb0U7QUFDcEUsc0dBQTBFO0FBQzFFLG9GQUEwRDtBQUcxRCx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQUMxQyx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4QyxvRkFBMkY7QUFBbEYsNElBQUEsT0FBTyxPQUFzQjtBQUN0Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQWMxQyx1REFBdUQ7QUFDdkQsNkNBSzZCO0FBSjNCLDhHQUFBLHFCQUFxQixPQUFBO0FBT3ZCLFNBQXdCLHVCQUF1QixDQUM3QyxPQUFpQztJQUVqQyxNQUFNLEVBQ0osbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLElBQUksRUFDSix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLGFBQWEsR0FDZCxHQUFHLElBQUEsb0NBQXdCLEVBQUMsSUFBSSx5QkFBYSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFJLHdDQUEwQixDQUNuQyxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sSUFBSSxFQUNKLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsYUFBYSxDQUNkLENBQUM7QUFDSixDQUFDO0FBOUJELDBDQThCQztBQUVELGlEQUErQjtBQUMvQixpREFBK0I7QUFDL0IsK0RBQTZDO0FBRTdDLGlGQUF5RjtBQUFoRix1SkFBQSxPQUFPLE9BQTRCO0FBQzVDLCtEQUF3RTtBQUEvRCxzSUFBQSxPQUFPLE9BQW9CO0FBQ3BDLHdEQUFpRTtBQUF4RCw4SEFBQSxPQUFPLE9BQWdCO0FBQ2hDLG1GQUF5RjtBQUFoRiw2SkFBQSxPQUFPLE9BQThCO0FBQzlDLDJFQUFtRjtBQUExRSx1SkFBQSxPQUFPLE9BQTRCO0FBRTVDLHNEQUFzRDtBQUN0RCxtQ0FBb0Q7QUFBM0Msd0hBQUEsT0FBTyxPQUFpQjtBQUVqQyxnREFBOEIifQ==
package/dist/types.d.ts CHANGED
@@ -1,7 +1,8 @@
1
+ /// <reference types="node" />
1
2
  import type { ChartRequest } from './charts/chart-handler';
2
3
  import type { Chart, QueryChart } from './charts/types';
3
- import type { Client } from 'openid-client';
4
- import { UserInfo } from './auth/types';
4
+ import { ParsedUrlQuery } from 'querystring';
5
+ import { Tokens, UserInfo } from './auth/types';
5
6
  import { IpWhitelistConfiguration } from './ip-whitelist/types';
6
7
  import { ModelCustomization, ModelCustomizationService } from './model-customizations/types';
7
8
  import { HttpOptions } from './permissions/forest-http-api';
@@ -19,16 +20,27 @@ export type ForestAdminClientOptions = {
19
20
  instantCacheRefresh?: boolean;
20
21
  };
21
22
  export type ForestAdminClientOptionsWithDefaults = Required<ForestAdminClientOptions>;
23
+ export type ForestAdminAuthServiceInterface = {
24
+ init: () => Promise<void>;
25
+ getUserInfo: (renderingId: number, accessToken: string) => Promise<UserInfo>;
26
+ generateAuthorizationUrl: (params: {
27
+ scope: string;
28
+ state: string;
29
+ }) => Promise<string>;
30
+ generateTokens: (params: {
31
+ query: ParsedUrlQuery;
32
+ state: string;
33
+ }) => Promise<Tokens>;
34
+ };
22
35
  export interface ForestAdminClient {
23
36
  readonly permissionService: PermissionService;
24
37
  readonly contextVariablesInstantiator: ContextVariablesInstantiatorInterface;
25
38
  readonly chartHandler: ChartHandlerInterface;
26
39
  readonly modelCustomizationService: ModelCustomizationService;
40
+ readonly authService: ForestAdminAuthServiceInterface;
27
41
  verifySignedActionParameters<TSignedParameters>(signedParameters: string): TSignedParameters;
28
42
  getIpWhitelistConfiguration(): Promise<IpWhitelistConfiguration>;
29
43
  postSchema(schema: ForestSchema): Promise<boolean>;
30
- getOpenIdClient(): Promise<Client>;
31
- getUserInfo(renderingId: number, accessToken: string): Promise<UserInfo>;
32
44
  getScope(params: {
33
45
  renderingId: number | string;
34
46
  userId: number | string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/forestadmin-client",
3
- "version": "1.24.2",
3
+ "version": "1.24.3",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {