@cuby-ui/core 0.0.291 → 0.0.293

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.
@@ -1,6 +1,6 @@
1
1
  import { inject, signal } from '@angular/core';
2
+ import { CuiExchangeContextApiService } from '@cuby-ui/api';
2
3
  import { OAuthErrorEvent, OAuthService, OAuthSuccessEvent } from 'angular-oauth2-oidc';
3
- import { CuiActivityTokenExchangeApiService } from '@cuby-ui/api';
4
4
  import { from, map, of, switchMap, tap } from 'rxjs';
5
5
  class CuiToken extends OAuthService {
6
6
  constructor() {
@@ -30,7 +30,8 @@ class CuiToken extends OAuthService {
30
30
  export class CuiTokenBase extends CuiToken {
31
31
  constructor() {
32
32
  super(...arguments);
33
- this.activityTokenExchangeApiService = inject(CuiActivityTokenExchangeApiService);
33
+ this.exchangeContextApiService = inject(CuiExchangeContextApiService);
34
+ this.EXCHANGE_TOKEN_VALUE = 'employee_session';
34
35
  }
35
36
  getAccessTokenData() {
36
37
  const token = this.getAccessToken();
@@ -49,8 +50,8 @@ export class CuiTokenBase extends CuiToken {
49
50
  return currentTime >= expiredTime;
50
51
  }
51
52
  exchangeToken(params) {
52
- return new Promise((resolve, reject) => this.activityTokenExchangeApiService
53
- .tokenExchange(params)
53
+ return new Promise((resolve, reject) => this.exchangeContextApiService
54
+ .exchange(params)
54
55
  .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
55
56
  .subscribe({
56
57
  next: (tokenResponse) => {
@@ -59,14 +60,22 @@ export class CuiTokenBase extends CuiToken {
59
60
  },
60
61
  error: (error) => {
61
62
  this.logger.error('Error exchanging token', error);
63
+ this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));
62
64
  reject(error);
63
65
  }
64
66
  }));
65
67
  }
66
68
  // TODO: override refreshToken with custom refresh token request to the backend
67
69
  refreshToken() {
68
- return new Promise((resolve, reject) => this.activityTokenExchangeApiService
69
- .tokenRefresh()
70
+ const tokenData = this.getAccessTokenData();
71
+ if (this.EXCHANGE_TOKEN_VALUE in tokenData) {
72
+ return this.refreshExchangedToken();
73
+ }
74
+ return super.refreshToken();
75
+ }
76
+ refreshExchangedToken() {
77
+ return new Promise((resolve, reject) => this.exchangeContextApiService
78
+ .refresh(this.getRefreshToken())
70
79
  .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
71
80
  .subscribe({
72
81
  next: (tokenResponse) => {
@@ -94,4 +103,4 @@ export class CuiTokenBase extends CuiToken {
94
103
  return from(this.processIdToken(tokenResponse.id_token, tokenResponse.access_token, true)).pipe(tap((result) => this.storeIdToken(result)), map(() => tokenResponse));
95
104
  }
96
105
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0NBQWtDLEVBQStCLE1BQU0sY0FBYyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpFLE1BQWUsUUFBUyxTQUFRLFlBQVk7SUFBNUM7O1FBQ3FCLGNBQVMsR0FBRyxNQUFNLENBQW1DLEVBQUUsQ0FBQyxDQUFDO0lBMEI5RSxDQUFDO0lBeEJhLHFCQUFxQixDQUFDLEtBQWE7UUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFbEQsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxN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Q0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTZXJ2aWNlLCBPQXV0aFN1Y2Nlc3NFdmVudCwgVG9rZW5SZXNwb25zZSB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHsgQ3VpQWN0aXZpdHlUb2tlbkV4Y2hhbmdlQXBpU2VydmljZSwgQ3VpVG9rZW5FeGNoYW5nZVJlcXVlc3RCb2R5IH0gZnJvbSAnQGN1YnktdWkvYXBpJztcbmltcG9ydCB7IGZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmFic3RyYWN0IGNsYXNzIEN1aVRva2VuIGV4dGVuZHMgT0F1dGhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRva2VuRGF0YSA9IHNpZ25hbDx7IFtrZXk6IHN0cmluZ106IFRva2VuUmVzcG9uc2UgfT4oe30pO1xuXG4gICAgcHJvdGVjdGVkIGdldFRva2VuRGF0YUZyb21TdG9yZSh0b2tlbjogc3RyaW5nKTogVG9rZW5SZXNwb25zZSB7XG4gICAgICAgIGNvbnN0IHRva2VuRGF0YSA9IHRoaXMudG9rZW5EYXRhKClbdG9rZW5dO1xuXG4gICAgICAgIGlmICh0b2tlbkRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbkRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50VG9rZW5EYXRhID0gdGhpcy5wYXJzZVRva2VuKHRva2VuKTtcblxuICAgICAgICB0aGlzLnRva2VuRGF0YS5zZXQoeyBbdG9rZW5dOiBjdXJyZW50VG9rZW5EYXRhIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50VG9rZW5EYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VUb2tlbih0b2tlbjogc3RyaW5nKTogVG9rZW5SZXNwb25zZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gYmFzZTY0VXJsLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XG5cbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IoYmFzZTY0KSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRva2VuJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDdWlUb2tlbkJhc2UgZXh0ZW5kcyBDdWlUb2tlbiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpdml0eVRva2VuRXhjaGFuZ2VBcGlTZXJ2aWNlID0gaW5qZWN0KEN1aUFjdGl2aXR5VG9rZW5FeGNoYW5nZUFwaVNlcnZpY2UpO1xuXG4gICAgcHVibGljIGdldEFjY2Vzc1Rva2VuRGF0YTxUIGV4dGVuZHMgVG9rZW5SZXNwb25zZSA9IFRva2VuUmVzcG9uc2U+KCk6IFQge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKTtcblxuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGFjY2VzcyB0b2tlbiBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5EYXRhRnJvbVN0b3JlKHRva2VuKSBhcyBUO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVja0lzVG9rZW5FeHBpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKTtcblxuICAgICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4cGlyZWRUaW1lID0gdGhpcy5nZXRBY2Nlc3NUb2tlbkV4cGlyYXRpb24oKTtcbiAgICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50VGltZSA+PSBleHBpcmVkVGltZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhjaGFuZ2VUb2tlbihwYXJhbXM6IEN1aVRva2VuRXhjaGFuZ2VSZXF1ZXN0Qm9keSk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aXZpdHlUb2tlbkV4Y2hhbmdlQXBpU2VydmljZVxuICAgICAgICAgICAgICAgIC50b2tlbkV4Y2hhbmdlKHBhcmFtcylcbiAgICAgICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHRva2VuUmVzcG9uc2UpID0+IHRoaXMuc2V0SWRUb2tlbih0b2tlblJlc3BvbnNlKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBleGNoYW5naW5nIHRva2VuJywgZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBvdmVycmlkZSByZWZyZXNoVG9rZW4gd2l0aCBjdXN0b20gcmVmcmVzaCB0b2tlbiByZXF1ZXN0IHRvIHRoZSBiYWNrZW5kXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZnJlc2hUb2tlbigpOiBQcm9taXNlPFRva2VuUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5VG9rZW5FeGNoYW5nZUFwaVNlcnZpY2VcbiAgICAgICAgICAgICAgICAudG9rZW5SZWZyZXNoKClcbiAgICAgICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHRva2VuUmVzcG9uc2UpID0+IHRoaXMuc2V0SWRUb2tlbih0b2tlblJlc3BvbnNlKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciByZWZyZXNoaW5nIHRva2VuJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoRXJyb3JFdmVudCgndG9rZW5fcmVmcmVzaF9lcnJvcicsIGVycm9yKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VG9rZW5SZXNwb25zZSh0b2tlblJlc3BvbnNlOiBUb2tlblJlc3BvbnNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNJbiA9IHRva2VuUmVzcG9uc2UuZXhwaXJlc19pbiB8fCB0aGlzLmZhbGxiYWNrQWNjZXNzVG9rZW5FeHBpcmF0aW9uVGltZUluU2VjITtcblxuICAgICAgICB0aGlzLmRlYnVnKCd0b2tlblJlc3BvbnNlJywgdG9rZW5SZXNwb25zZSk7XG4gICAgICAgIHRoaXMuc3RvcmVBY2Nlc3NUb2tlblJlc3BvbnNlKFxuICAgICAgICAgICAgdG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4sXG4gICAgICAgICAgICB0b2tlblJlc3BvbnNlLnJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgICBleHBpcmVzSW4sXG4gICAgICAgICAgICB0b2tlblJlc3BvbnNlLnNjb3BlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoU3VjY2Vzc0V2ZW50KCd0b2tlbl9yZWNlaXZlZCcpKTtcbiAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoU3VjY2Vzc0V2ZW50KCd0b2tlbl9yZWZyZXNoZWQnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJZFRva2VuKHRva2VuUmVzcG9uc2U6IFRva2VuUmVzcG9uc2UpOiBPYnNlcnZhYmxlPFRva2VuUmVzcG9uc2U+IHtcbiAgICAgICAgaWYgKCF0aGlzLm9pZGMgfHwgIXRva2VuUmVzcG9uc2UuaWRfdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0b2tlblJlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMucHJvY2Vzc0lkVG9rZW4odG9rZW5SZXNwb25zZS5pZF90b2tlbiwgdG9rZW5SZXNwb25zZS5hY2Nlc3NfdG9rZW4sIHRydWUpKS5waXBlKFxuICAgICAgICAgICAgdGFwKChyZXN1bHQpID0+IHRoaXMuc3RvcmVJZFRva2VuKHJlc3VsdCkpLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRva2VuUmVzcG9uc2UpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsNEJBQTRCLEVBQStCLE1BQU0sY0FBYyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsTUFBZSxRQUFTLFNBQVEsWUFBWTtJQUE1Qzs7UUFDcUIsY0FBUyxHQUFHLE1BQU0sQ0FBbUMsRUFBRSxDQUFDLENBQUM7SUEwQjlFLENBQUM7SUF4QmEscUJBQXFCLENBQUMsS0FBYTtRQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUVsRCxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1B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SSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDMUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUMzQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEN1aUV4Y2hhbmdlQ29udGV4dEFwaVNlcnZpY2UsIEN1aVRva2VuRXhjaGFuZ2VSZXF1ZXN0Qm9keSB9IGZyb20gJ0BjdWJ5LXVpL2FwaSc7XG5pbXBvcnQgdHlwZSB7IFRva2VuUmVzcG9uc2UgfSBmcm9tICdhbmd1bGFyLW9hdXRoMi1vaWRjJztcbmltcG9ydCB7IE9BdXRoRXJyb3JFdmVudCwgT0F1dGhTZXJ2aWNlLCBPQXV0aFN1Y2Nlc3NFdmVudCB9IGZyb20gJ2FuZ3VsYXItb2F1dGgyLW9pZGMnO1xuaW1wb3J0IHR5cGUgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmcm9tLCBtYXAsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5hYnN0cmFjdCBjbGFzcyBDdWlUb2tlbiBleHRlbmRzIE9BdXRoU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2tlbkRhdGEgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiBUb2tlblJlc3BvbnNlIH0+KHt9KTtcblxuICAgIHByb3RlY3RlZCBnZXRUb2tlbkRhdGFGcm9tU3RvcmUodG9rZW46IHN0cmluZyk6IFRva2VuUmVzcG9uc2Uge1xuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSB0aGlzLnRva2VuRGF0YSgpW3Rva2VuXTtcblxuICAgICAgICBpZiAodG9rZW5EYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW5EYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFRva2VuRGF0YSA9IHRoaXMucGFyc2VUb2tlbih0b2tlbik7XG5cbiAgICAgICAgdGhpcy50b2tlbkRhdGEuc2V0KHsgW3Rva2VuXTogY3VycmVudFRva2VuRGF0YSB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudFRva2VuRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlVG9rZW4odG9rZW46IHN0cmluZyk6IFRva2VuUmVzcG9uc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgYmFzZTY0VXJsID0gdG9rZW4uc3BsaXQoJy4nKVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGJhc2U2NFVybC5yZXBsYWNlKC8tL2csICcrJykucmVwbGFjZSgvXy9nLCAnLycpO1xuXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKGJhc2U2NCkpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbicpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3VpVG9rZW5CYXNlIGV4dGVuZHMgQ3VpVG9rZW4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhjaGFuZ2VDb250ZXh0QXBpU2VydmljZSA9IGluamVjdChDdWlFeGNoYW5nZUNvbnRleHRBcGlTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRVhDSEFOR0VfVE9LRU5fVkFMVUUgPSAnZW1wbG95ZWVfc2Vzc2lvbic7XG5cbiAgICBwdWJsaWMgZ2V0QWNjZXNzVG9rZW5EYXRhPFQgZXh0ZW5kcyBUb2tlblJlc3BvbnNlID0gVG9rZW5SZXNwb25zZT4oKTogVCB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYWNjZXNzIHRva2VuIGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUb2tlbkRhdGFGcm9tU3RvcmUodG9rZW4pIGFzIFQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrSXNUb2tlbkV4cGlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhwaXJlZFRpbWUgPSB0aGlzLmdldEFjY2Vzc1Rva2VuRXhwaXJhdGlvbigpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUaW1lID49IGV4cGlyZWRUaW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGNoYW5nZVRva2VuKHBhcmFtczogQ3VpVG9rZW5FeGNoYW5nZVJlcXVlc3RCb2R5KTogUHJvbWlzZTxUb2tlblJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgICAgICAgICAgdGhpcy5leGNoYW5nZUNvbnRleHRBcGlTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmV4Y2hhbmdlKHBhcmFtcylcbiAgICAgICAgICAgICAgICAucGlwZShzd2l0Y2hNYXAoKHRva2VuUmVzcG9uc2UpID0+IHRoaXMuc2V0SWRUb2tlbih0b2tlblJlc3BvbnNlKSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6ICh0b2tlblJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRva2VuUmVzcG9uc2UodG9rZW5SZXNwb25zZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodG9rZW5SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFcnJvciBleGNoYW5naW5nIHRva2VuJywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQobmV3IE9BdXRoRXJyb3JFdmVudCgndG9rZW5fcmVmcmVzaF9lcnJvcicsIGVycm9yKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IG92ZXJyaWRlIHJlZnJlc2hUb2tlbiB3aXRoIGN1c3RvbSByZWZyZXNoIHRva2VuIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmRcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVmcmVzaFRva2VuKCk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4ge1xuICAgICAgICBjb25zdCB0b2tlbkRhdGEgPSB0aGlzLmdldEFjY2Vzc1Rva2VuRGF0YSgpO1xuXG4gICAgICAgIGlmICh0aGlzLkVYQ0hBTkdFX1RPS0VOX1ZBTFVFIGluIHRva2VuRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaEV4Y2hhbmdlZFRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwZXIucmVmcmVzaFRva2VuKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZnJlc2hFeGNoYW5nZWRUb2tlbigpOiBQcm9taXNlPFRva2VuUmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+XG4gICAgICAgICAgICB0aGlzLmV4Y2hhbmdlQ29udGV4dEFwaVNlcnZpY2VcbiAgICAgICAgICAgICAgICAucmVmcmVzaCh0aGlzLmdldFJlZnJlc2hUb2tlbigpKVxuICAgICAgICAgICAgICAgIC5waXBlKHN3aXRjaE1hcCgodG9rZW5SZXNwb25zZSkgPT4gdGhpcy5zZXRJZFRva2VuKHRva2VuUmVzcG9uc2UpKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogKHRva2VuUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VG9rZW5SZXNwb25zZSh0b2tlblJlc3BvbnNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0b2tlblJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0Vycm9yIHJlZnJlc2hpbmcgdG9rZW4nLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50c1N1YmplY3QubmV4dChuZXcgT0F1dGhFcnJvckV2ZW50KCd0b2tlbl9yZWZyZXNoX2Vycm9yJywgZXJyb3IpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUb2tlblJlc3BvbnNlKHRva2VuUmVzcG9uc2U6IFRva2VuUmVzcG9uc2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwaXJlc0luID0gdG9rZW5SZXNwb25zZS5leHBpcmVzX2luIHx8IHRoaXMuZmFsbGJhY2tBY2Nlc3NUb2tlbkV4cGlyYXRpb25UaW1lSW5TZWMhO1xuXG4gICAgICAgIHRoaXMuZGVidWcoJ3Rva2VuUmVzcG9uc2UnLCB0b2tlblJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5zdG9yZUFjY2Vzc1Rva2VuUmVzcG9uc2UoXG4gICAgICAgICAgICB0b2tlblJlc3BvbnNlLmFjY2Vzc190b2tlbixcbiAgICAgICAgICAgIHRva2VuUmVzcG9uc2UucmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNJbixcbiAgICAgICAgICAgIHRva2VuUmVzcG9uc2Uuc2NvcGVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmV2ZW50c1N1YmplY3QubmV4dChuZXcgT0F1dGhTdWNjZXNzRXZlbnQoJ3Rva2VuX3JlY2VpdmVkJykpO1xuICAgICAgICB0aGlzLmV2ZW50c1N1YmplY3QubmV4dChuZXcgT0F1dGhTdWNjZXNzRXZlbnQoJ3Rva2VuX3JlZnJlc2hlZCcpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElkVG9rZW4odG9rZW5SZXNwb25zZTogVG9rZW5SZXNwb25zZSk6IE9ic2VydmFibGU8VG9rZW5SZXNwb25zZT4ge1xuICAgICAgICBpZiAoIXRoaXMub2lkYyB8fCAhdG9rZW5SZXNwb25zZS5pZF90b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRva2VuUmVzcG9uc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5wcm9jZXNzSWRUb2tlbih0b2tlblJlc3BvbnNlLmlkX3Rva2VuLCB0b2tlblJlc3BvbnNlLmFjY2Vzc190b2tlbiwgdHJ1ZSkpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3VsdCkgPT4gdGhpcy5zdG9yZUlkVG9rZW4ocmVzdWx0KSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gdG9rZW5SZXNwb25zZSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -9,7 +9,7 @@ import { cuiIsIcon, CUI_ICONS } from '@cuby-ui/icons';
9
9
  import { BehaviorSubject, takeUntil, Observable, merge, distinctUntilChanged, startWith, map, finalize, switchMap, of, from, tap, filter, timer, Subject, delay, repeat, takeWhile, fromEvent, debounce, skip, take, forkJoin, throttleTime, concatMap, toArray, catchError, throwError, pairwise, debounceTime } from 'rxjs';
10
10
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
11
  import { OAuthService, OAuthErrorEvent, OAuthSuccessEvent, OAuthInfoEvent, provideOAuthClient } from 'angular-oauth2-oidc';
12
- import { CuiActivityTokenExchangeApiService, CuiTreeStructNavigatorApiService, CuiFrameApiService, CuiNodeChecklistApiService, CuiTreeStructApiService } from '@cuby-ui/api';
12
+ import { CuiExchangeContextApiService, CuiTreeStructNavigatorApiService, CuiFrameApiService, CuiNodeChecklistApiService, CuiTreeStructApiService } from '@cuby-ui/api';
13
13
  import { trigger, transition, query, animateChild, style, animate, stagger } from '@angular/animations';
14
14
  import * as i2 from '@taiga-ui/polymorpheus';
15
15
  import { PolymorpheusOutlet, PolymorpheusTemplate, PolymorpheusComponent, injectContext } from '@taiga-ui/polymorpheus';
@@ -889,7 +889,8 @@ class CuiToken extends OAuthService {
889
889
  class CuiTokenBase extends CuiToken {
890
890
  constructor() {
891
891
  super(...arguments);
892
- this.activityTokenExchangeApiService = inject(CuiActivityTokenExchangeApiService);
892
+ this.exchangeContextApiService = inject(CuiExchangeContextApiService);
893
+ this.EXCHANGE_TOKEN_VALUE = 'employee_session';
893
894
  }
894
895
  getAccessTokenData() {
895
896
  const token = this.getAccessToken();
@@ -908,8 +909,8 @@ class CuiTokenBase extends CuiToken {
908
909
  return currentTime >= expiredTime;
909
910
  }
910
911
  exchangeToken(params) {
911
- return new Promise((resolve, reject) => this.activityTokenExchangeApiService
912
- .tokenExchange(params)
912
+ return new Promise((resolve, reject) => this.exchangeContextApiService
913
+ .exchange(params)
913
914
  .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
914
915
  .subscribe({
915
916
  next: (tokenResponse) => {
@@ -918,14 +919,22 @@ class CuiTokenBase extends CuiToken {
918
919
  },
919
920
  error: (error) => {
920
921
  this.logger.error('Error exchanging token', error);
922
+ this.eventsSubject.next(new OAuthErrorEvent('token_refresh_error', error));
921
923
  reject(error);
922
924
  }
923
925
  }));
924
926
  }
925
927
  // TODO: override refreshToken with custom refresh token request to the backend
926
928
  refreshToken() {
927
- return new Promise((resolve, reject) => this.activityTokenExchangeApiService
928
- .tokenRefresh()
929
+ const tokenData = this.getAccessTokenData();
930
+ if (this.EXCHANGE_TOKEN_VALUE in tokenData) {
931
+ return this.refreshExchangedToken();
932
+ }
933
+ return super.refreshToken();
934
+ }
935
+ refreshExchangedToken() {
936
+ return new Promise((resolve, reject) => this.exchangeContextApiService
937
+ .refresh(this.getRefreshToken())
929
938
  .pipe(switchMap((tokenResponse) => this.setIdToken(tokenResponse)))
930
939
  .subscribe({
931
940
  next: (tokenResponse) => {