@platform-mesh/portal-server-lib 0.9.95 → 0.9.97

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 (56) hide show
  1. package/dist/portal-options/index.d.ts +4 -0
  2. package/dist/portal-options/index.js +4 -0
  3. package/dist/portal-options/index.js.map +1 -1
  4. package/dist/portal-options/logout-callback.service.js +16 -8
  5. package/dist/portal-options/logout-callback.service.js.map +1 -1
  6. package/dist/portal-options/service-providers/content-configuration-service-providers.service.d.ts +4 -1
  7. package/dist/portal-options/service-providers/content-configuration-service-providers.service.js +14 -3
  8. package/dist/portal-options/service-providers/content-configuration-service-providers.service.js.map +1 -1
  9. package/dist/portal-options/service-providers/kubernetes-service-providers.service.d.ts +4 -2
  10. package/dist/portal-options/service-providers/kubernetes-service-providers.service.js +10 -4
  11. package/dist/portal-options/service-providers/kubernetes-service-providers.service.js.map +1 -1
  12. package/dist/portal-options/services/kcp-k8s.service.d.ts +0 -1
  13. package/dist/portal-options/services/kcp-k8s.service.js +4 -13
  14. package/dist/portal-options/services/kcp-k8s.service.js.map +1 -1
  15. package/dist/portal-options/services/permissions/adapters/authz-webhook.service.d.ts +14 -0
  16. package/dist/portal-options/services/permissions/adapters/authz-webhook.service.js +183 -0
  17. package/dist/portal-options/services/permissions/adapters/authz-webhook.service.js.map +1 -0
  18. package/dist/portal-options/services/permissions/models/permissions.model.d.ts +51 -0
  19. package/dist/portal-options/services/permissions/models/permissions.model.js +2 -0
  20. package/dist/portal-options/services/permissions/models/permissions.model.js.map +1 -0
  21. package/dist/portal-options/services/permissions/permissions-proxy.service.d.ts +9 -0
  22. package/dist/portal-options/services/permissions/permissions-proxy.service.js +48 -0
  23. package/dist/portal-options/services/permissions/permissions-proxy.service.js.map +1 -0
  24. package/dist/portal-options/services/permissions/permissions.controller.d.ts +9 -0
  25. package/dist/portal-options/services/permissions/permissions.controller.js +49 -0
  26. package/dist/portal-options/services/permissions/permissions.controller.js.map +1 -0
  27. package/dist/portal-options/utils/account-hierarchy-resolver.js +7 -3
  28. package/dist/portal-options/utils/account-hierarchy-resolver.js.map +1 -1
  29. package/dist/portal-options/utils/build-workspace-path.util.d.ts +1 -0
  30. package/dist/portal-options/utils/build-workspace-path.util.js +4 -0
  31. package/dist/portal-options/utils/build-workspace-path.util.js.map +1 -0
  32. package/dist/portal-options/utils/extract-resource-definitions.util.d.ts +7 -0
  33. package/dist/portal-options/utils/extract-resource-definitions.util.js +33 -0
  34. package/dist/portal-options/utils/extract-resource-definitions.util.js.map +1 -0
  35. package/package.json +1 -1
  36. package/src/portal-options/index.ts +4 -0
  37. package/src/portal-options/logout-callback.service.spec.ts +57 -1
  38. package/src/portal-options/logout-callback.service.ts +34 -8
  39. package/src/portal-options/service-providers/content-configuration-service-providers.service.spec.ts +8 -1
  40. package/src/portal-options/service-providers/content-configuration-service-providers.service.ts +17 -6
  41. package/src/portal-options/service-providers/kubernetes-service-providers.service.spec.ts +13 -4
  42. package/src/portal-options/service-providers/kubernetes-service-providers.service.ts +21 -8
  43. package/src/portal-options/services/kcp-k8s.service.ts +4 -15
  44. package/src/portal-options/services/permissions/adapters/authz-webhook.service.spec.ts +500 -0
  45. package/src/portal-options/services/permissions/adapters/authz-webhook.service.ts +238 -0
  46. package/src/portal-options/services/permissions/models/permissions.model.ts +56 -0
  47. package/src/portal-options/services/permissions/permissions-proxy.service.spec.ts +232 -0
  48. package/src/portal-options/services/permissions/permissions-proxy.service.ts +58 -0
  49. package/src/portal-options/services/permissions/permissions.controller.spec.ts +143 -0
  50. package/src/portal-options/services/permissions/permissions.controller.ts +31 -0
  51. package/src/portal-options/utils/account-hierarchy-resolver.ts +13 -8
  52. package/src/portal-options/utils/build-workspace-path.util.spec.ts +59 -0
  53. package/src/portal-options/utils/build-workspace-path.util.ts +21 -0
  54. package/src/portal-options/utils/extract-resource-definitions.util.spec.ts +303 -0
  55. package/src/portal-options/utils/extract-resource-definitions.util.ts +62 -0
  56. package/tsconfig.json +2 -1
@@ -6,3 +6,7 @@ export * from './pm-request-context-provider.js';
6
6
  export * from './service-providers/content-configuration-service-providers.service.js';
7
7
  export * from './service-providers/kubernetes-service-providers.service.js';
8
8
  export * from './services/kcp-k8s.service.js';
9
+ export * from './services/permissions/adapters/authz-webhook.service.js';
10
+ export * from './services/permissions/models/permissions.model.js';
11
+ export * from './services/permissions/permissions-proxy.service.js';
12
+ export * from './services/permissions/permissions.controller.js';
@@ -6,4 +6,8 @@ export * from './pm-request-context-provider.js';
6
6
  export * from './service-providers/content-configuration-service-providers.service.js';
7
7
  export * from './service-providers/kubernetes-service-providers.service.js';
8
8
  export * from './services/kcp-k8s.service.js';
9
+ export * from './services/permissions/adapters/authz-webhook.service.js';
10
+ export * from './services/permissions/models/permissions.model.js';
11
+ export * from './services/permissions/permissions-proxy.service.js';
12
+ export * from './services/permissions/permissions.controller.js';
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/portal-options/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wEAAwE,CAAC;AACvF,cAAc,6DAA6D,CAAC;AAE5E,cAAc,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/portal-options/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,wEAAwE,CAAC;AACvF,cAAc,6DAA6D,CAAC;AAE5E,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0DAA0D,CAAC;AACzE,cAAc,oDAAoD,CAAC;AACnE,cAAc,qDAAqD,CAAC;AACpE,cAAc,kDAAkD,CAAC"}
@@ -30,26 +30,34 @@ let PMLogoutService = PMLogoutService_1 = class PMLogoutService {
30
30
  try {
31
31
  const refreshToken = this.cookiesService.getAuthCookie(request);
32
32
  const body = new URLSearchParams({
33
- client_id: authConfig.clientId,
34
- client_secret: authConfig.clientSecret,
35
33
  refresh_token: refreshToken,
36
34
  });
37
35
  await firstValueFrom(this.httpService.post(authConfig.endSessionUrl, body, {
38
36
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
37
+ auth: {
38
+ username: authConfig.clientId,
39
+ password: authConfig.clientSecret,
40
+ },
39
41
  }));
40
42
  }
41
43
  catch (error) {
42
44
  this.logger.error('Error during keycloak logout', error?.response?.data || error.message);
43
45
  this.logger.warn('Trying to log out with the id token');
44
- return this.logoutWithIdToken(request, authConfig.endSessionUrl);
46
+ return this.logoutWithIdToken(request, authConfig.endSessionUrl, authConfig.clientId);
45
47
  }
46
48
  }
47
- logoutWithIdToken(request, endSessionUrl) {
49
+ logoutWithIdToken(request, endSessionUrl, clientId) {
48
50
  const { id_token_hint, post_logout_redirect_uri } = request.query;
49
- const params = new URLSearchParams({
50
- id_token_hint: String(id_token_hint || ''),
51
- post_logout_redirect_uri: String(post_logout_redirect_uri || ''),
52
- });
51
+ const params = new URLSearchParams();
52
+ if (id_token_hint) {
53
+ params.set('id_token_hint', String(id_token_hint));
54
+ }
55
+ else {
56
+ params.set('client_id', clientId);
57
+ }
58
+ if (post_logout_redirect_uri) {
59
+ params.set('post_logout_redirect_uri', String(post_logout_redirect_uri));
60
+ }
53
61
  return `${endSessionUrl}?${params}`;
54
62
  }
55
63
  };
@@ -1 +1 @@
1
- {"version":3,"file":"logout-callback.service.js","sourceRoot":"","sources":["../../src/portal-options/logout-callback.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAE3B,cAAc,GAEf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG/B,IAAM,eAAe,uBAArB,MAAM,eAAe;IAKhB;IACA;IACA;IANF,MAAM,GAAW,IAAI,MAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAE1D,YAEU,iBAAoC,EACpC,WAAwB,EACxB,cAA8B;QAF9B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAEG,KAAK,CAAC,YAAY,CACvB,OAAgB,EAChB,QAAkB;QAElB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEhE,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;gBAC/B,SAAS,EAAE,UAAU,CAAC,QAAQ;gBAC9B,aAAa,EAAE,UAAU,CAAC,YAAY;gBACtC,aAAa,EAAE,YAAY;aAC5B,CAAC,CAAC;YAEH,MAAM,cAAc,CAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE;gBACpD,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;aACjE,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8BAA8B,EAC9B,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CACvC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,OAAgB,EAAE,aAAqB;QAC/D,MAAM,EAAE,aAAa,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;YAC1C,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,OAAO,GAAG,aAAa,IAAI,MAAM,EAAE,CAAC;IACtC,CAAC;CACF,CAAA;AA/CY,eAAe;IAD3B,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;6CAEf,WAAW;QACR,cAAc;GAP7B,eAAe,CA+C3B"}
1
+ {"version":3,"file":"logout-callback.service.js","sourceRoot":"","sources":["../../src/portal-options/logout-callback.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAE3B,cAAc,GAEf,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG/B,IAAM,eAAe,uBAArB,MAAM,eAAe;IAKhB;IACA;IACA;IANF,MAAM,GAAW,IAAI,MAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAE1D,YAEU,iBAAoC,EACpC,WAAwB,EACxB,cAA8B;QAF9B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAEG,KAAK,CAAC,YAAY,CACvB,OAAgB,EAChB,QAAkB;QAElB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEhE,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;gBAC/B,aAAa,EAAE,YAAY;aAC5B,CAAC,CAAC;YAMH,MAAM,cAAc,CAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE;gBACpD,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;gBAChE,IAAI,EAAE;oBACJ,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,QAAQ,EAAE,UAAU,CAAC,YAAY;iBAClC;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8BAA8B,EAC9B,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CACvC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,iBAAiB,CAC3B,OAAO,EACP,UAAU,CAAC,aAAa,EACxB,UAAU,CAAC,QAAQ,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,iBAAiB,CACvB,OAAgB,EAChB,aAAqB,EACrB,QAAgB;QAEhB,MAAM,EAAE,aAAa,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAMrC,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,wBAAwB,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,GAAG,aAAa,IAAI,MAAM,EAAE,CAAC;IACtC,CAAC;CACF,CAAA;AAzEY,eAAe;IAD3B,UAAU,EAAE;IAKR,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;6CAEf,WAAW;QACR,cAAc;GAP7B,eAAe,CAyE3B"}
@@ -1,5 +1,8 @@
1
- import { RequestContext } from '../pm-request-context-provider.js';
2
1
  import { ServiceProviderResponse, ServiceProviderService } from '@openmfp/portal-server-lib';
2
+ import { RequestContext } from '../pm-request-context-provider.js';
3
+ import { PermissionsProxyService } from '../services/permissions/permissions-proxy.service.js';
3
4
  export declare class ContentConfigurationServiceProvidersService implements ServiceProviderService {
5
+ private permissionsProxyService;
6
+ constructor(permissionsProxyService: PermissionsProxyService);
4
7
  getServiceProviders(token: string, entities: string[], context: RequestContext): Promise<ServiceProviderResponse>;
5
8
  }
@@ -4,12 +4,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Injectable } from '@nestjs/common';
11
+ import { GraphQLClient } from 'graphql-request';
12
+ import { PermissionsProxyService } from '../services/permissions/permissions-proxy.service.js';
7
13
  import { processContentConfigurationForAccountHierarchy } from '../utils/account-hierarchy-resolver.js';
8
14
  import { contentConfigurationsQuery } from './contentconfigurations-query.js';
9
15
  import { welcomeNodeConfig } from './models/welcome-node-config.js';
10
- import { Injectable } from '@nestjs/common';
11
- import { GraphQLClient } from 'graphql-request';
12
16
  let ContentConfigurationServiceProvidersService = class ContentConfigurationServiceProvidersService {
17
+ permissionsProxyService;
18
+ constructor(permissionsProxyService) {
19
+ this.permissionsProxyService = permissionsProxyService;
20
+ }
13
21
  async getServiceProviders(token, entities, context) {
14
22
  if (!token) {
15
23
  throw new Error('Token is required');
@@ -60,6 +68,7 @@ let ContentConfigurationServiceProvidersService = class ContentConfigurationServ
60
68
  throw new Error(`Invalid JSON in configurationResult for item: ${item.metadata?.name || 'unknown'}`);
61
69
  }
62
70
  });
71
+ const nodesPermissions = await this.permissionsProxyService.resolvePermissions(token, context.organization, accountPath ?? '', contentConfigurations);
63
72
  return {
64
73
  rawServiceProviders: [
65
74
  {
@@ -67,6 +76,7 @@ let ContentConfigurationServiceProvidersService = class ContentConfigurationServ
67
76
  displayName: '',
68
77
  creationTimestamp: '',
69
78
  contentConfiguration: contentConfigurations,
79
+ nodeContext: { nodesPermissions },
70
80
  },
71
81
  ],
72
82
  };
@@ -81,7 +91,8 @@ let ContentConfigurationServiceProvidersService = class ContentConfigurationServ
81
91
  }
82
92
  };
83
93
  ContentConfigurationServiceProvidersService = __decorate([
84
- Injectable()
94
+ Injectable(),
95
+ __metadata("design:paramtypes", [PermissionsProxyService])
85
96
  ], ContentConfigurationServiceProvidersService);
86
97
  export { ContentConfigurationServiceProvidersService };
87
98
  //# sourceMappingURL=content-configuration-service-providers.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-configuration-service-providers.service.js","sourceRoot":"","sources":["../../../src/portal-options/service-providers/content-configuration-service-providers.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-configuration-service-providers.service.js","sourceRoot":"","sources":["../../../src/portal-options/service-providers/content-configuration-service-providers.service.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import { KcpKubernetesService } from '../services/kcp-k8s.service.js';
2
1
  import { ServiceProviderResponse, ServiceProviderService } from '@openmfp/portal-server-lib';
2
+ import { KcpKubernetesService } from '../services/kcp-k8s.service.js';
3
+ import { PermissionsProxyService } from '../services/permissions/permissions-proxy.service.js';
3
4
  export declare class KubernetesServiceProvidersService implements ServiceProviderService {
4
5
  private kcpKubernetesService;
5
- constructor(kcpKubernetesService: KcpKubernetesService);
6
+ private permissionsProxyService;
7
+ constructor(kcpKubernetesService: KcpKubernetesService, permissionsProxyService: PermissionsProxyService);
6
8
  getServiceProviders(token: string, entities: string[], context: Record<string, any>): Promise<ServiceProviderResponse>;
7
9
  private listContentConfigurationsForEntity;
8
10
  }
@@ -7,14 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
+ import { Injectable } from '@nestjs/common';
10
11
  import { KcpKubernetesService } from '../services/kcp-k8s.service.js';
12
+ import { PermissionsProxyService } from '../services/permissions/permissions-proxy.service.js';
11
13
  import { processContentConfigurationForAccountHierarchy } from '../utils/account-hierarchy-resolver.js';
12
14
  import { welcomeNodeConfig } from './models/welcome-node-config.js';
13
- import { Injectable } from '@nestjs/common';
14
15
  let KubernetesServiceProvidersService = class KubernetesServiceProvidersService {
15
16
  kcpKubernetesService;
16
- constructor(kcpKubernetesService) {
17
+ permissionsProxyService;
18
+ constructor(kcpKubernetesService, permissionsProxyService) {
17
19
  this.kcpKubernetesService = kcpKubernetesService;
20
+ this.permissionsProxyService = permissionsProxyService;
18
21
  }
19
22
  async getServiceProviders(token, entities, context) {
20
23
  if (!token) {
@@ -43,6 +46,8 @@ let KubernetesServiceProvidersService = class KubernetesServiceProvidersService
43
46
  processContentConfigurationForAccountHierarchy(contentConfiguration, context);
44
47
  return contentConfiguration;
45
48
  });
49
+ const accountPath = context?.accountPath ?? context?.['core_platform-mesh_io_account'] ?? '';
50
+ const nodesPermissions = await this.permissionsProxyService.resolvePermissions(token, context.organization, accountPath, contentConfigurations);
46
51
  return {
47
52
  rawServiceProviders: [
48
53
  {
@@ -50,6 +55,7 @@ let KubernetesServiceProvidersService = class KubernetesServiceProvidersService
50
55
  displayName: '',
51
56
  creationTimestamp: '',
52
57
  contentConfiguration: contentConfigurations,
58
+ nodeContext: { nodesPermissions },
53
59
  },
54
60
  ],
55
61
  };
@@ -67,7 +73,6 @@ let KubernetesServiceProvidersService = class KubernetesServiceProvidersService
67
73
  console.error(error);
68
74
  if (error.code == 429 || error.statusCode == 429) {
69
75
  await new Promise((resolve) => setTimeout(resolve, 1000));
70
- console.log('Retry after 1 second reading kubernetes resources.');
71
76
  return await this.kcpKubernetesService.listClusterCustomObjectInKcpVirtualWorkspace(gvr, context, token);
72
77
  }
73
78
  }
@@ -76,7 +81,8 @@ let KubernetesServiceProvidersService = class KubernetesServiceProvidersService
76
81
  };
77
82
  KubernetesServiceProvidersService = __decorate([
78
83
  Injectable(),
79
- __metadata("design:paramtypes", [KcpKubernetesService])
84
+ __metadata("design:paramtypes", [KcpKubernetesService,
85
+ PermissionsProxyService])
80
86
  ], KubernetesServiceProvidersService);
81
87
  export { KubernetesServiceProvidersService };
82
88
  //# sourceMappingURL=kubernetes-service-providers.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kubernetes-service-providers.service.js","sourceRoot":"","sources":["../../../src/portal-options/service-providers/kubernetes-service-providers.service.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,8CAA8C,EAAE,MAAM,wCAAwC,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQrC,IAAM,iCAAiC,GAAvC,MAAM,iCAAiC;IACxB;IAApB,YAAoB,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;IAAG,CAAC;IAElE,KAAK,CAAC,mBAAmB,CACvB,KAAa,EACb,QAAkB,EAClB,OAA4B;QAG5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kCAAkC,CAC5D,KAAK,EACL,OAA4B,CAC7B,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO;gBACL,mBAAmB,EAAE,EAAE;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAc,CAAC;QAE9C,MAAM,qBAAqB,GAAG,aAAa;aACxC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;aACnD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CACrC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CACR,CAAC;YAC1B,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;gBAC9B,oBAAoB,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC;YAChE,CAAC;YAED,8CAA8C,CAC5C,oBAAoB,EACpB,OAAO,CACR,CAAC;YAEF,OAAO,oBAAoB,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,mBAAmB,EAAE;gBACnB;oBACE,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE,EAAE;oBACf,iBAAiB,EAAE,EAAE;oBACrB,oBAAoB,EAAE,qBAAqB;iBAC5C;aACF;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kCAAkC,CAC9C,KAAa,EACb,OAA0B;QAE1B,MAAM,GAAG,GAA0B;YACjC,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,uBAAuB;SAChC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,4CAA4C,CACjF,GAAG,EACH,OAAO,EACP,KAAK,CACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAErB,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBACjD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAClE,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,4CAA4C,CACjF,GAAG,EACH,OAAO,EACP,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAA;AAhGY,iCAAiC;IAD7C,UAAU,EAAE;qCAE+B,oBAAoB;GADnD,iCAAiC,CAgG7C"}
1
+ {"version":3,"file":"kubernetes-service-providers.service.js","sourceRoot":"","sources":["../../../src/portal-options/service-providers/kubernetes-service-providers.service.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,6 @@ export declare class KcpKubernetesService {
15
15
  getKcpK8sCustomObjectsApiOIDCUser(): CustomObjectsApi;
16
16
  getKcpK8sCustomObjectsApi(): CustomObjectsApi;
17
17
  getKcpK8sCoreV1Api(): CoreV1Api;
18
- private buildWorkspacePath;
19
18
  getKcpVirtualWorkspaceUrl(organization: string, account: string): URL;
20
19
  getKcpWorkspaceUrl(organization?: string, account?: string, workspacePath?: string): URL;
21
20
  getKcpWorkspacePublicUrl(request: Request): string;
@@ -8,6 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  var KcpKubernetesService_1;
11
+ import { buildWorkspacePath } from '../utils/build-workspace-path.util.js';
11
12
  import { getOrganization } from '../utils/domain.js';
12
13
  import { CoreV1Api, CustomObjectsApi, KubeConfig, } from '@kubernetes/client-node';
13
14
  import { PromiseMiddlewareWrapper } from '@kubernetes/client-node/dist/gen/middleware.js';
@@ -58,28 +59,18 @@ let KcpKubernetesService = KcpKubernetesService_1 = class KcpKubernetesService {
58
59
  getKcpK8sCoreV1Api() {
59
60
  return this.k8sCoreV1Api;
60
61
  }
61
- buildWorkspacePath(organization, account) {
62
- let path = `root:orgs`;
63
- if (organization) {
64
- path += `:${organization}`;
65
- }
66
- if (account) {
67
- path += `:${account}`;
68
- }
69
- return path;
70
- }
71
62
  getKcpVirtualWorkspaceUrl(organization, account) {
72
- const path = this.buildWorkspacePath(organization, account);
63
+ const path = buildWorkspacePath([organization, account]);
73
64
  return new URL(`${this.baseUrl.origin}/services/contentconfigurations/clusters/${path}`);
74
65
  }
75
66
  getKcpWorkspaceUrl(organization, account, workspacePath) {
76
- const path = workspacePath || this.buildWorkspacePath(organization, account);
67
+ const path = workspacePath || buildWorkspacePath([organization, account]);
77
68
  return new URL(`${this.baseUrl.origin}/clusters/${path}`);
78
69
  }
79
70
  getKcpWorkspacePublicUrl(request) {
80
71
  const organization = getOrganization(request);
81
72
  const account = request.query?.['core_platform-mesh_io_account'];
82
- const path = this.buildWorkspacePath(organization, account);
73
+ const path = buildWorkspacePath([organization, account]);
83
74
  const kcpUrl = process.env.KCP_URL || '';
84
75
  if (kcpUrl) {
85
76
  return `${kcpUrl}/clusters/${path}`;
@@ -1 +1 @@
1
- {"version":3,"file":"kcp-k8s.service.js","sourceRoot":"","sources":["../../../src/portal-options/services/kcp-k8s.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kcp-k8s.service.js","sourceRoot":"","sources":["../../../src/portal-options/services/kcp-k8s.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { HttpService } from '@nestjs/axios';
2
+ import { AuthorizationRequest, IAuthzService, Permission } from '../models/permissions.model.js';
3
+ export declare class AuthzWebhookService implements IAuthzService {
4
+ private readonly httpService;
5
+ private readonly logger;
6
+ private readonly webhookUrl;
7
+ constructor(httpService: HttpService);
8
+ checkActionsForResource(req: AuthorizationRequest): Promise<Permission[] | undefined>;
9
+ checkActionsForInstance(req: AuthorizationRequest): Promise<Permission[] | undefined>;
10
+ private extractUserEmail;
11
+ private sendBatch;
12
+ private mapToPermissions;
13
+ private mapToInstancePermissions;
14
+ }
@@ -0,0 +1,183 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var AuthzWebhookService_1;
11
+ import { HttpService } from '@nestjs/axios';
12
+ import { Injectable, Logger } from '@nestjs/common';
13
+ import { randomUUID } from 'crypto';
14
+ import { firstValueFrom } from 'rxjs';
15
+ import { buildWorkspacePath } from '../../../utils/build-workspace-path.util.js';
16
+ const CLUSTER_PATH_KEY = 'authorization.kubernetes.io/cluster-path';
17
+ let AuthzWebhookService = AuthzWebhookService_1 = class AuthzWebhookService {
18
+ httpService;
19
+ logger = new Logger(AuthzWebhookService_1.name);
20
+ webhookUrl;
21
+ constructor(httpService) {
22
+ this.httpService = httpService;
23
+ this.webhookUrl = process.env['OPENMFP_PORTAL_CONTEXT_AUTHZ_WEBHOOK_URL'];
24
+ if (!this.webhookUrl) {
25
+ this.logger.warn('OPENMFP_PORTAL_CONTEXT_AUTHZ_WEBHOOK_URL not set — permissions checks are disabled (fail-open)');
26
+ }
27
+ }
28
+ async checkActionsForResource(req) {
29
+ if (!this.webhookUrl) {
30
+ return undefined;
31
+ }
32
+ const user = this.extractUserEmail(req.token);
33
+ const clusterPath = buildWorkspacePath([req.organization, req.accountPath]);
34
+ const items = [];
35
+ const correlationMap = new Map();
36
+ for (const check of req.checks) {
37
+ for (const verb of check.actions) {
38
+ const id = randomUUID();
39
+ correlationMap.set(id, { resource: check.resource, verb });
40
+ items.push({
41
+ apiVersion: 'authorization.k8s.io/v1',
42
+ kind: 'SubjectAccessReview',
43
+ metadata: { name: id },
44
+ spec: {
45
+ user,
46
+ extra: { [CLUSTER_PATH_KEY]: [clusterPath] },
47
+ resourceAttributes: {
48
+ verb,
49
+ group: check.group,
50
+ resource: check.resource.toLowerCase(),
51
+ },
52
+ },
53
+ });
54
+ }
55
+ }
56
+ if (!items.length) {
57
+ return undefined;
58
+ }
59
+ const results = await this.sendBatch(items);
60
+ if (!results) {
61
+ return undefined;
62
+ }
63
+ const permissions = this.mapToPermissions(results, correlationMap);
64
+ this.logger.log(`permissions resolved for "${user}" "${clusterPath}": ${JSON.stringify(permissions)}`);
65
+ return permissions;
66
+ }
67
+ async checkActionsForInstance(req) {
68
+ if (!this.webhookUrl) {
69
+ return undefined;
70
+ }
71
+ const user = this.extractUserEmail(req.token);
72
+ const clusterPath = buildWorkspacePath([req.organization, req.accountPath]);
73
+ const items = [];
74
+ const correlationMap = new Map();
75
+ for (const check of req.checks) {
76
+ for (const verb of check.actions) {
77
+ const id = randomUUID();
78
+ correlationMap.set(id, {
79
+ resource: check.resource,
80
+ ...(check.namespace ? { namespace: check.namespace } : {}),
81
+ ...(check.name ? { name: check.name } : {}),
82
+ verb,
83
+ });
84
+ items.push({
85
+ apiVersion: 'authorization.k8s.io/v1',
86
+ kind: 'SubjectAccessReview',
87
+ metadata: { name: id },
88
+ spec: {
89
+ user,
90
+ extra: { [CLUSTER_PATH_KEY]: [clusterPath] },
91
+ resourceAttributes: {
92
+ verb,
93
+ group: check.group,
94
+ resource: check.resource.toLowerCase(),
95
+ namespace: check.namespace,
96
+ name: check.name,
97
+ },
98
+ },
99
+ });
100
+ }
101
+ }
102
+ if (!items.length) {
103
+ return undefined;
104
+ }
105
+ const results = await this.sendBatch(items);
106
+ if (!results) {
107
+ return undefined;
108
+ }
109
+ return this.mapToInstancePermissions(results, correlationMap);
110
+ }
111
+ extractUserEmail(token) {
112
+ try {
113
+ const payload = JSON.parse(Buffer.from(token.split('.')[1], 'base64url').toString());
114
+ return payload.email ?? '';
115
+ }
116
+ catch {
117
+ return '';
118
+ }
119
+ }
120
+ async sendBatch(items) {
121
+ try {
122
+ const response = await firstValueFrom(this.httpService.post(`${this.webhookUrl}/batch-authz `, items, {
123
+ headers: { 'Content-Type': 'application/json' },
124
+ }));
125
+ const results = Array.isArray(response.data) ? response.data : [];
126
+ return results.reduce((acc, result) => {
127
+ acc[result.id] = result.allowed;
128
+ return acc;
129
+ }, {});
130
+ }
131
+ catch (err) {
132
+ this.logger.error('authz-webhook batch-authz failed — failing open', err);
133
+ return undefined;
134
+ }
135
+ }
136
+ mapToPermissions(results, correlationMap) {
137
+ const permissionsMap = new Map();
138
+ for (const [id, allowed] of Object.entries(results)) {
139
+ if (!allowed) {
140
+ continue;
141
+ }
142
+ const entry = correlationMap.get(id);
143
+ if (!entry) {
144
+ continue;
145
+ }
146
+ const actions = permissionsMap.get(entry.resource) ?? [];
147
+ actions.push(entry.verb);
148
+ permissionsMap.set(entry.resource, actions);
149
+ }
150
+ return Array.from(permissionsMap.entries()).map(([resource, actions]) => ({
151
+ resource,
152
+ actions,
153
+ }));
154
+ }
155
+ mapToInstancePermissions(results, correlationMap) {
156
+ const permissionsMap = new Map();
157
+ for (const [id, allowed] of Object.entries(results)) {
158
+ if (!allowed) {
159
+ continue;
160
+ }
161
+ const entry = correlationMap.get(id);
162
+ if (!entry) {
163
+ continue;
164
+ }
165
+ const key = `${entry.resource}|${entry.namespace ?? ''}|${entry.name ?? ''}`;
166
+ const permission = permissionsMap.get(key) ?? {
167
+ resource: entry.resource,
168
+ ...(entry.namespace ? { namespace: entry.namespace } : {}),
169
+ ...(entry.name ? { name: entry.name } : {}),
170
+ actions: [],
171
+ };
172
+ permission.actions.push(entry.verb);
173
+ permissionsMap.set(key, permission);
174
+ }
175
+ return Array.from(permissionsMap.values());
176
+ }
177
+ };
178
+ AuthzWebhookService = AuthzWebhookService_1 = __decorate([
179
+ Injectable(),
180
+ __metadata("design:paramtypes", [HttpService])
181
+ ], AuthzWebhookService);
182
+ export { AuthzWebhookService };
183
+ //# sourceMappingURL=authz-webhook.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-webhook.service.js","sourceRoot":"","sources":["../../../../../src/portal-options/services/permissions/adapters/authz-webhook.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export interface PermissionsDefinition {
2
+ group: string;
3
+ resource: string;
4
+ entityActions: string[];
5
+ resourceActions: string[];
6
+ entityContextKey: string;
7
+ }
8
+ export interface AuthorizationRequest {
9
+ token: string;
10
+ organization: string;
11
+ accountPath: string;
12
+ checks: {
13
+ resource: string;
14
+ group: string;
15
+ namespace?: string | null;
16
+ name?: string;
17
+ actions: string[];
18
+ }[];
19
+ }
20
+ export interface Permission {
21
+ resource: string;
22
+ namespace?: string;
23
+ name?: string;
24
+ actions: string[];
25
+ }
26
+ export interface AuthorizationResponse {
27
+ accountPath: string;
28
+ permissions: Permission[];
29
+ }
30
+ export interface SubjectAccessReview {
31
+ apiVersion?: string;
32
+ kind?: string;
33
+ metadata: {
34
+ name: string;
35
+ };
36
+ spec: {
37
+ user: string;
38
+ extra: Record<string, string[]>;
39
+ resourceAttributes: {
40
+ verb: string;
41
+ group: string;
42
+ resource: string;
43
+ namespace?: string | null;
44
+ name?: string | null;
45
+ };
46
+ };
47
+ }
48
+ export interface IAuthzService {
49
+ checkActionsForResource(req: AuthorizationRequest): Promise<Permission[] | undefined>;
50
+ checkActionsForInstance(req: AuthorizationRequest): Promise<Permission[] | undefined>;
51
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=permissions.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.model.js","sourceRoot":"","sources":["../../../../../src/portal-options/services/permissions/models/permissions.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { ContentConfiguration } from '@openmfp/portal-server-lib';
2
+ import { AuthzWebhookService } from './adapters/authz-webhook.service.js';
3
+ import { AuthorizationRequest, Permission } from './models/permissions.model.js';
4
+ export declare class PermissionsProxyService {
5
+ private readonly authzWebhook;
6
+ constructor(authzWebhook: AuthzWebhookService);
7
+ resolvePermissions(token: string, organization: string, accountPath: string, contentConfigurations: ContentConfiguration[]): Promise<Permission[] | undefined>;
8
+ checkResourceInstance(req: AuthorizationRequest): Promise<Permission[] | undefined>;
9
+ }