@arsedizioni/ars-utils 18.2.157 → 18.2.158

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.
@@ -52,8 +52,7 @@ class SupportService {
52
52
  this.broadcastServiceSubscription = null;
53
53
  this._loginInfo = null;
54
54
  this._serviceUri = "https://support.arsedizioni.it";
55
- this._servicePrefix = "";
56
- this._unreadNotifications = null;
55
+ this.unreadNotifications = signal(null);
57
56
  this.loggedIn = signal(false);
58
57
  this.loggingIn = signal(false);
59
58
  }
@@ -68,12 +67,6 @@ class SupportService {
68
67
  set serviceUri(value) {
69
68
  this._serviceUri = value;
70
69
  }
71
- get servicePrefix() {
72
- return this._servicePrefix;
73
- }
74
- set servicePrefix(value) {
75
- this._servicePrefix = value;
76
- }
77
70
  get products() {
78
71
  return this._products;
79
72
  }
@@ -86,9 +79,6 @@ class SupportService {
86
79
  set productModules(value) {
87
80
  this._productModules = value;
88
81
  }
89
- get unreadNotifications() {
90
- return this._unreadNotifications;
91
- }
92
82
  ngOnDestroy() {
93
83
  // Clean-up
94
84
  if (this.tokenRefreshTimerSubscription) {
@@ -101,22 +91,20 @@ class SupportService {
101
91
  /**
102
92
  * Initialize service
103
93
  * @param serviceUri : the service uri
104
- * @param servicePrefix : the service prefix used to manage local storage
105
94
  * @param tokenRefreshInterval : the token refresh interval
106
95
  * @param products: the supported products
107
96
  */
108
- initialize(serviceUri = null, servicePrefix = null, tokenRefreshInterval = this.REFRESH_INTERVAL, products = 0) {
97
+ initialize(serviceUri = null, tokenRefreshInterval = this.REFRESH_INTERVAL, products = 0) {
109
98
  // Create unique client id
110
99
  if (!localStorage.getItem('support_client_id'))
111
100
  localStorage.setItem('support_client_id', SystemUtils.generateUUID());
112
101
  // Initialize
113
102
  this._serviceUri = serviceUri;
114
- this._servicePrefix = servicePrefix;
115
103
  this.tokenRefreshInterval = tokenRefreshInterval;
116
104
  this._products = products;
117
105
  // React to message broadcasting
118
106
  if (!this.broadcastServiceSubscription) {
119
- this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message) => {
107
+ this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe(message => {
120
108
  if (message.id === SupportMessages.LOGIN_CHANGED) {
121
109
  setTimeout(() => {
122
110
  this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe(r => {
@@ -145,7 +133,7 @@ class SupportService {
145
133
  });
146
134
  }
147
135
  // Eveluate current session storage in case of page refresh (F5)
148
- if (!this.loggedIn && this.getToken()) {
136
+ if (!this.loggedIn() && this.getToken()) {
149
137
  // Auto login
150
138
  this.loggedIn.set(true);
151
139
  // Start refresh timer
@@ -170,7 +158,7 @@ class SupportService {
170
158
  this.tokenRefreshTimer =
171
159
  timer(this.tokenRefreshInterval, this.tokenRefreshInterval)
172
160
  .pipe(switchMap(() => {
173
- if (this.refreshing || !this.loggedIn)
161
+ if (this.refreshing || !this.loggedIn())
174
162
  return EMPTY;
175
163
  this.refreshing = true;
176
164
  this.refresh().subscribe({
@@ -222,27 +210,12 @@ class SupportService {
222
210
  }), map(r => {
223
211
  this.loggingIn.set(false);
224
212
  if (r.success) {
225
- this.products = this.products;
226
- this.productModules = this.productModules;
227
- return this.handleLoginResult(r);
213
+ this.setToken(r.value.token);
214
+ this._loginInfo = r.value.context;
215
+ this.loggedIn.set(true);
228
216
  }
229
217
  return r;
230
218
  }));
231
- return null;
232
- }
233
- /**
234
- * Handle login result
235
- * @param loginResult : the current login result
236
- * @returns: the final login result
237
- */
238
- handleLoginResult(loginResult) {
239
- if (loginResult.success) {
240
- // Store access token
241
- this.setToken(loginResult.value.token);
242
- this._loginInfo = loginResult.value.context;
243
- this.loggedIn.set(true);
244
- }
245
- return loginResult;
246
219
  }
247
220
  /**
248
221
  * Perform logout
@@ -305,7 +278,7 @@ class SupportService {
305
278
  countUnreadNotifications() {
306
279
  this.httpClient.get(this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + "&modules=" + (this.productModules ?? 0)).subscribe(r => {
307
280
  if (r.success) {
308
- this._unreadNotifications = r.value > 0 ? r.value : null;
281
+ this.unreadNotifications.set(r.value > 0 ? r.value : null);
309
282
  }
310
283
  });
311
284
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-support.common.mjs","sources":["../../../projects/ars-utils/support.common/common/messages.ts","../../../projects/ars-utils/support.common/common/definitions.ts","../../../projects/ars-utils/support.common/common/services/support.service.ts","../../../projects/ars-utils/support.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/support.common/common/common.module.ts","../../../projects/ars-utils/support.common/public_api.ts","../../../projects/ars-utils/support.common/arsedizioni-ars-utils-support.common.ts"],"sourcesContent":["export const SupportMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n // Login\r\n LOGIN_CHANGED: '§support-login-changed',\r\n LOGIN_COMPLETED: '§support-login-completed',\r\n LOGIN_DISCONNECTED: '§support-login-disconnected',\r\n LOGOUT_COMPLETED: '§support-logout-completed',\r\n\r\n // Notifications\r\n NOTIFICATION_READ: '§support-notification-read',\r\n};\r\n","import { LoginResult } from '@arsedizioni/ars-utils/core';\r\n\r\n\r\nexport interface SupportUserInfo {\r\n\r\n id: number;\r\n groups?: number | null;\r\n groupNames?: string | null;\r\n displayName?: string | null;\r\n dashboard?: string | null;\r\n sessionId?: string | null;\r\n email?: string | null;\r\n customerId?: number | null;\r\n companyName?: string | null;\r\n role: number;\r\n scopes?: string[] | null;\r\n sla: number;\r\n isCommercial?: boolean | null;\r\n isAdministrator: boolean;\r\n isGuest: boolean;\r\n isUser: boolean;\r\n isOperator: boolean;\r\n isTemporary: boolean;\r\n}\r\n\r\nexport interface SupportLoginResult extends LoginResult<SupportUserInfo> { } \r\n\r\nexport interface SupportLoginInfo {\r\n context: SupportUserInfo;\r\n token?: string | null;\r\n userCredentials?: string | null;\r\n}\r\n\r\n\r\nexport interface SupportNotificationsSearchParams {\r\n any?: string | null;\r\n products?: number | null;\r\n productModules?: number | null;\r\n first?: number | null;\r\n count?: number | null;\r\n}\r\n\r\nexport interface SupportNotificationsSearchResult {\r\n interval?: string | null;\r\n items?: SupportNotificationInfo[] | null;\r\n total?: number | null;\r\n}\r\n\r\nexport interface SupportNotificationInfo {\r\n id: number;\r\n products: number;\r\n productNames?: string | null;\r\n productModules?: number | null;\r\n productModuleNames?: string | null;\r\n publishingDate?: Date | null;\r\n title: string;\r\n text: string;\r\n state: number;\r\n isPublished: boolean;\r\n isInternal: boolean;\r\n isRead: boolean;\r\n}\r\n\r\nexport interface SupportNotificationsMarkParams {\r\n ids: number[];\r\n unmark: boolean;\r\n}\r\n\r\nexport enum SupportProduct {\r\n Clipper = 1,\r\n Evolution = 1 << 1,\r\n DGInfo = 1 << 2\r\n}\r\n\r\nexport enum SupportProductModule {\r\n EvoFormazione = 1,\r\n EvoDPI = 1 << 1,\r\n EvoSorveglianzaSanitaria = 1 << 2,\r\n EvoRegistroEScadenzario = 1 << 3,\r\n EvoAttrezzatureEImpianti = 1 << 4,\r\n EvoMonitoraggio = 1 << 5,\r\n EvoBollettino = 1 << 6,\r\n DgiADR = 1 << 7,\r\n DgiRID = 1 << 8,\r\n DgiIMDG = 1 << 9,\r\n DgiCLP = 1 << 10,\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, OnDestroy, inject, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { EMPTY, Observable, of, Subscription, throwError, timer } from 'rxjs';\r\nimport { catchError, map, shareReplay, switchMap } from 'rxjs/operators';\r\nimport { SupportMessages } from '../messages';\r\nimport { SupportLoginInfo, SupportLoginResult, SupportNotificationInfo, SupportNotificationsMarkParams, SupportNotificationsSearchParams, SupportNotificationsSearchResult, SupportProduct, SupportProductModule, SupportUserInfo } from '../definitions';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SupportService implements OnDestroy {\r\n\r\n private readonly REFRESH_INTERVAL = 60000 * 50; //50 min\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private refreshing: boolean = false;\r\n private tokenRefreshInterval: number = this.REFRESH_INTERVAL;\r\n private tokenRefreshTimer?: Observable<number | void> | null = null;\r\n private tokenRefreshTimerSubscription?: Subscription | null = null;\r\n private broadcastServiceSubscription?: Subscription | null = null;\r\n\r\n\r\n private _loginInfo: SupportUserInfo = null;\r\n get loginInfo(): SupportUserInfo { return this._loginInfo };\r\n set loginInfo(value: SupportUserInfo) {\r\n this._loginInfo = value;\r\n }\r\n\r\n private _serviceUri: string = \"https://support.arsedizioni.it\"\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n set serviceUri(value: string) {\r\n this._serviceUri = value;\r\n }\r\n private _servicePrefix: string = \"\"\r\n get servicePrefix(): string {\r\n return this._servicePrefix;\r\n }\r\n set servicePrefix(value: string) {\r\n this._servicePrefix = value;\r\n }\r\n\r\n private _products: SupportProduct;\r\n get products(): SupportProduct {\r\n return this._products;\r\n }\r\n set products(value: SupportProduct) {\r\n this._products = value;\r\n }\r\n\r\n private _productModules: SupportProductModule;\r\n get productModules(): SupportProductModule {\r\n return this._productModules;\r\n }\r\n set productModules(value: SupportProductModule) {\r\n this._productModules = value;\r\n }\r\n\r\n private _unreadNotifications: number = null;\r\n get unreadNotifications(): number {\r\n return this._unreadNotifications;\r\n }\r\n\r\n\r\n loggedIn = signal<boolean>(false);\r\n loggingIn = signal<boolean>(false);\r\n\r\n ngOnDestroy() {\r\n // Clean-up\r\n if (this.tokenRefreshTimerSubscription) {\r\n this.tokenRefreshTimerSubscription.unsubscribe();\r\n }\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param servicePrefix : the service prefix used to manage local storage \r\n * @param tokenRefreshInterval : the token refresh interval\r\n * @param products: the supported products\r\n */\r\n initialize(\r\n serviceUri: string = null,\r\n servicePrefix: string = null,\r\n tokenRefreshInterval: number = this.REFRESH_INTERVAL,\r\n products: number = 0) {\r\n\r\n // Create unique client id\r\n if (!localStorage.getItem('support_client_id'))\r\n localStorage.setItem('support_client_id', SystemUtils.generateUUID());\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._servicePrefix = servicePrefix;\r\n this.tokenRefreshInterval = tokenRefreshInterval;\r\n this._products = products;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === SupportMessages.LOGIN_CHANGED) {\r\n setTimeout(() => {\r\n this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe(r => {\r\n if (r.success) {\r\n this.countUnreadNotifications();\r\n }\r\n });\r\n }, 500);\r\n } else if (message.id === SupportMessages.LOGOUT_COMPLETED ||\r\n message.id === SupportMessages.LOGIN_DISCONNECTED) {\r\n if (!this.loggedIn()) {\r\n this.clear();\r\n } else {\r\n this.logout().subscribe({\r\n complete: () => {\r\n this.clear();\r\n }\r\n });\r\n }\r\n } else if (message.id === SupportMessages.NOTIFICATION_READ) {\r\n this.countUnreadNotifications();\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (!this.loggedIn && this.getToken()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n\r\n // Start refresh timer\r\n this.enableTokenRefresh();\r\n }\r\n }\r\n\r\n /**\r\n * Set JWT token\r\n * @param token : The token to store\r\n */\r\n private setToken(token: string) {\r\n sessionStorage.setItem('support_jwt', token);\r\n if (token) {\r\n this.enableTokenRefresh();\r\n }\r\n }\r\n\r\n /**\r\n * Enable JWT token auto refresh\r\n */\r\n private enableTokenRefresh() {\r\n if (!this.tokenRefreshTimerSubscription) {\r\n this.tokenRefreshTimer =\r\n timer(this.tokenRefreshInterval, this.tokenRefreshInterval)\r\n .pipe(\r\n switchMap(() => {\r\n if (this.refreshing || !this.loggedIn) return EMPTY;\r\n this.refreshing = true;\r\n this.refresh().subscribe(\r\n {\r\n error: () => { this.refreshing = false; },\r\n complete: () => { this.refreshing = false; }\r\n });\r\n return EMPTY;\r\n }),\r\n shareReplay(1));\r\n this.tokenRefreshTimerSubscription = this.tokenRefreshTimer.subscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Return current JWT token\r\n * @returns: the string JWT token or string empty if none\r\n */\r\n getToken(): string {\r\n let token = sessionStorage.getItem('support_jwt');\r\n if (token) {\r\n if (token[0] === '\"') token = token.substring(1, token.length - 1);\r\n return token;\r\n }\r\n return '';\r\n }\r\n\r\n\r\n /**\r\n* Perform login \r\n* @param email: the guest email\r\n* @param oauth: the optional open authentication supported\r\n* @param oauthAccessToken: the optional oauth2 access token\r\n* @returns: the login result\r\n*/\r\n login(email: string | null | undefined = null,\r\n oauth: number | null | undefined = null,\r\n oauthAccessToken: string | null | undefined = null) {\r\n this.clear();\r\n this.loggingIn.set(true);\r\n return this.httpClient\r\n .post<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/login',\r\n {\r\n user: oauth > 0 ? null : email,\r\n clientId: localStorage.getItem(\"support_client_id\"),\r\n OAUTH: oauth\r\n },\r\n {\r\n headers:\r\n !oauth\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken)\r\n })\r\n .pipe(\r\n catchError(err => {\r\n this.loggingIn.set(false);\r\n return throwError(() => err);\r\n }),\r\n map(r => {\r\n this.loggingIn.set(false);\r\n if (r.success) {\r\n this.products = this.products;\r\n this.productModules = this.productModules;\r\n return this.handleLoginResult(r);\r\n }\r\n return r;\r\n })\r\n );\r\n\r\n return null;\r\n }\r\n\r\n\r\n /**\r\n * Handle login result\r\n * @param loginResult : the current login result\r\n * @returns: the final login result\r\n */\r\n private handleLoginResult(\r\n loginResult: ApiResult<SupportLoginResult>\r\n ): ApiResult<SupportLoginResult> {\r\n if (loginResult.success) {\r\n // Store access token\r\n this.setToken(loginResult.value.token);\r\n\r\n this._loginInfo = loginResult.value.context;\r\n this.loggedIn.set(true);\r\n }\r\n return loginResult;\r\n }\r\n\r\n /**\r\n * Perform logout\r\n */\r\n logout() {\r\n return this.httpClient\r\n .post<any>(this._serviceUri + '/logout', {}).pipe(\r\n map(r => { return r; }),\r\n catchError((_e) => {\r\n this.clear();\r\n return of([]);\r\n }));\r\n\r\n }\r\n\r\n /**\r\n * Reset login refresh timer and logins state\r\n */\r\n reset() {\r\n // Clear subscriptions\r\n if (this.tokenRefreshTimerSubscription) {\r\n this.tokenRefreshTimerSubscription.unsubscribe();\r\n this.tokenRefreshTimerSubscription = null;\r\n }\r\n this.tokenRefreshTimer = null;\r\n\r\n // Clear login info\r\n this._loginInfo = null;\r\n this.loggedIn.set(false);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n */\r\n clear() {\r\n // Reset login\r\n this.reset();\r\n\r\n // Clear local storage\r\n sessionStorage.removeItem('support_jwt');\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n private refresh() {\r\n return this.httpClient.post<ApiResult<SupportLoginInfo>>(\r\n this._serviceUri + '/refresh', {}\r\n ).pipe(map(r => {\r\n // Update token\r\n this.setToken(r.value.token);\r\n console.log(\"token-refreshed: \" + r.value.token);\r\n }));\r\n }\r\n\r\n /**\r\n * Navigate to support service\r\n */\r\n open() {\r\n let uri = this.serviceUri ?? '';\r\n if (uri.endsWith('/api'))\r\n uri = uri.substring(0, uri.length - 4)\r\n window.open(uri);\r\n }\r\n\r\n ////\r\n // NOTIFICATIONS\r\n ////\r\n\r\n /**\r\n * Count unread notifications\r\n */\r\n countUnreadNotifications() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + \"&modules=\" + (this.productModules ?? 0)\r\n ).subscribe(r => {\r\n if (r.success) {\r\n this._unreadNotifications = r.value > 0 ? r.value : null\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Query notifications\r\n * @param params: query parameters\r\n */\r\n queryNotifications(params: SupportNotificationsSearchParams) {\r\n params.products = this.products ?? 0;\r\n params.productModules = this.productModules ?? 0;\r\n return this.httpClient.post<ApiResult<SupportNotificationsSearchResult>>(\r\n this._serviceUri + '/notifications',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve a notification\r\n * @param id: the notification id\r\n */\r\n getNotification(id: number) {\r\n return this.httpClient.get<ApiResult<SupportNotificationInfo>>(\r\n this._serviceUri +\r\n '/notifications/' +\r\n id\r\n );\r\n }\r\n\r\n /**\r\n * Mark a group of notifications as read\r\n * @param ids: the array of notification's ids to set as read\r\n */\r\n markNotifications(params: SupportNotificationsMarkParams) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/notifications/mark',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Download a notification document\r\n * @param documentId : the notification document id\r\n */\r\n dowloadNotificationDocument(documentId: number) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/download/' + documentId,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { SupportService } from '../services/support.service';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Injectable()\r\nexport class SupportAuthInterceptor implements HttpInterceptor {\r\n\r\n private supportService = inject(SupportService);\r\n private dialogService = inject(DialogService);\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> { \r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n catchError(err => {\r\n // Get the message\r\n let message = err.error?.message || err.message || \"Impossibile eseguire l'operazione richiesta.\";\r\n let invalidSession = err.status === 401;\r\n switch (err.status) {\r\n case 0:\r\n case 500:\r\n case 502:\r\n case 503:\r\n case 504:\r\n message = null; // No messages\r\n break;\r\n case 403:\r\n message = \"<p>Non hai i permessi necessari per eseguire l'operazione richiesta.</p>\";\r\n break;\r\n default:\r\n message = '<p>' + message.replaceAll('\\r\\n', '</p><p>') + '</p>';\r\n break;\r\n }\r\n // Display message\r\n if (message) {\r\n setTimeout(() => {\r\n this.dialogService.error(message, null, 'Errore in ARS Support', 'Ok', 500, invalidSession ? 5000 : null).afterClosed().subscribe(() => {\r\n if (invalidSession) {\r\n if (this.supportService.loggedIn()) {\r\n this.supportService.reset();\r\n }\r\n }\r\n });\r\n }, 250);\r\n }\r\n return throwError(() => err);\r\n }));\r\n } \r\n return next.handle(request); \r\n }\r\n\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token: string = null\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n if (!token) token = this.supportService.getToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsSupportCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/support.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './common/common.module';\r\nexport * from './common/messages';\r\nexport * from './common/definitions';\r\nexport * from './common/services/support.service';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-support.common.mjs","sources":["../../../projects/ars-utils/support.common/common/messages.ts","../../../projects/ars-utils/support.common/common/definitions.ts","../../../projects/ars-utils/support.common/common/services/support.service.ts","../../../projects/ars-utils/support.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/support.common/common/common.module.ts","../../../projects/ars-utils/support.common/public_api.ts","../../../projects/ars-utils/support.common/arsedizioni-ars-utils-support.common.ts"],"sourcesContent":["export const SupportMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n // Login\r\n LOGIN_CHANGED: '§support-login-changed',\r\n LOGIN_COMPLETED: '§support-login-completed',\r\n LOGIN_DISCONNECTED: '§support-login-disconnected',\r\n LOGOUT_COMPLETED: '§support-logout-completed',\r\n\r\n // Notifications\r\n NOTIFICATION_READ: '§support-notification-read',\r\n};\r\n","import { LoginResult } from '@arsedizioni/ars-utils/core';\r\n\r\n\r\nexport interface SupportUserInfo {\r\n\r\n id: number;\r\n groups?: number | null;\r\n groupNames?: string | null;\r\n displayName?: string | null;\r\n dashboard?: string | null;\r\n sessionId?: string | null;\r\n email?: string | null;\r\n customerId?: number | null;\r\n companyName?: string | null;\r\n role: number;\r\n scopes?: string[] | null;\r\n sla: number;\r\n isCommercial?: boolean | null;\r\n isAdministrator: boolean;\r\n isGuest: boolean;\r\n isUser: boolean;\r\n isOperator: boolean;\r\n isTemporary: boolean;\r\n}\r\n\r\nexport interface SupportLoginResult extends LoginResult<SupportUserInfo> { } \r\n\r\nexport interface SupportLoginInfo {\r\n context: SupportUserInfo;\r\n token?: string | null;\r\n userCredentials?: string | null;\r\n}\r\n\r\n\r\nexport interface SupportNotificationsSearchParams {\r\n any?: string | null;\r\n products?: number | null;\r\n productModules?: number | null;\r\n first?: number | null;\r\n count?: number | null;\r\n}\r\n\r\nexport interface SupportNotificationsSearchResult {\r\n interval?: string | null;\r\n items?: SupportNotificationInfo[] | null;\r\n total?: number | null;\r\n}\r\n\r\nexport interface SupportNotificationInfo {\r\n id: number;\r\n products: number;\r\n productNames?: string | null;\r\n productModules?: number | null;\r\n productModuleNames?: string | null;\r\n publishingDate?: Date | null;\r\n title: string;\r\n text: string;\r\n state: number;\r\n isPublished: boolean;\r\n isInternal: boolean;\r\n isRead: boolean;\r\n}\r\n\r\nexport interface SupportNotificationsMarkParams {\r\n ids: number[];\r\n unmark: boolean;\r\n}\r\n\r\nexport enum SupportProduct {\r\n Clipper = 1,\r\n Evolution = 1 << 1,\r\n DGInfo = 1 << 2\r\n}\r\n\r\nexport enum SupportProductModule {\r\n EvoFormazione = 1,\r\n EvoDPI = 1 << 1,\r\n EvoSorveglianzaSanitaria = 1 << 2,\r\n EvoRegistroEScadenzario = 1 << 3,\r\n EvoAttrezzatureEImpianti = 1 << 4,\r\n EvoMonitoraggio = 1 << 5,\r\n EvoBollettino = 1 << 6,\r\n DgiADR = 1 << 7,\r\n DgiRID = 1 << 8,\r\n DgiIMDG = 1 << 9,\r\n DgiCLP = 1 << 10,\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, OnDestroy, inject, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { EMPTY, Observable, of, Subscription, throwError, timer } from 'rxjs';\r\nimport { catchError, map, shareReplay, switchMap } from 'rxjs/operators';\r\nimport { SupportMessages } from '../messages';\r\nimport { SupportLoginInfo, SupportLoginResult, SupportNotificationInfo, SupportNotificationsMarkParams, SupportNotificationsSearchParams, SupportNotificationsSearchResult, SupportProduct, SupportProductModule, SupportUserInfo } from '../definitions';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SupportService implements OnDestroy {\r\n\r\n private readonly REFRESH_INTERVAL = 60000 * 50; //50 min\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private refreshing: boolean = false;\r\n private tokenRefreshInterval: number = this.REFRESH_INTERVAL;\r\n private tokenRefreshTimer?: Observable<number | void> | null = null;\r\n private tokenRefreshTimerSubscription?: Subscription | null = null;\r\n private broadcastServiceSubscription?: Subscription | null = null;\r\n\r\n\r\n private _loginInfo: SupportUserInfo = null;\r\n get loginInfo(): SupportUserInfo { return this._loginInfo };\r\n set loginInfo(value: SupportUserInfo) {\r\n this._loginInfo = value;\r\n }\r\n\r\n private _serviceUri: string = \"https://support.arsedizioni.it\"\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n set serviceUri(value: string) {\r\n this._serviceUri = value;\r\n }\r\n\r\n private _products: SupportProduct;\r\n get products(): SupportProduct {\r\n return this._products;\r\n }\r\n set products(value: SupportProduct) {\r\n this._products = value;\r\n }\r\n\r\n private _productModules: SupportProductModule;\r\n get productModules(): SupportProductModule {\r\n return this._productModules;\r\n }\r\n set productModules(value: SupportProductModule) {\r\n this._productModules = value;\r\n }\r\n\r\n public readonly unreadNotifications = signal<number | null>(null);\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n\r\n ngOnDestroy() {\r\n // Clean-up\r\n if (this.tokenRefreshTimerSubscription) {\r\n this.tokenRefreshTimerSubscription.unsubscribe();\r\n }\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param tokenRefreshInterval : the token refresh interval\r\n * @param products: the supported products\r\n */\r\n initialize(\r\n serviceUri: string = null,\r\n tokenRefreshInterval: number = this.REFRESH_INTERVAL,\r\n products: number = 0) {\r\n\r\n // Create unique client id\r\n if (!localStorage.getItem('support_client_id'))\r\n localStorage.setItem('support_client_id', SystemUtils.generateUUID());\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this.tokenRefreshInterval = tokenRefreshInterval;\r\n this._products = products;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe(message => {\r\n if (message.id === SupportMessages.LOGIN_CHANGED) {\r\n setTimeout(() => {\r\n this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe(r => {\r\n if (r.success) {\r\n this.countUnreadNotifications();\r\n }\r\n });\r\n }, 500);\r\n } else if (message.id === SupportMessages.LOGOUT_COMPLETED ||\r\n message.id === SupportMessages.LOGIN_DISCONNECTED) {\r\n if (!this.loggedIn()) {\r\n this.clear();\r\n } else {\r\n this.logout().subscribe({\r\n complete: () => {\r\n this.clear();\r\n }\r\n });\r\n }\r\n } else if (message.id === SupportMessages.NOTIFICATION_READ) {\r\n this.countUnreadNotifications();\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (!this.loggedIn() && this.getToken()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n\r\n // Start refresh timer\r\n this.enableTokenRefresh();\r\n }\r\n }\r\n\r\n /**\r\n * Set JWT token\r\n * @param token : The token to store\r\n */\r\n private setToken(token: string) {\r\n sessionStorage.setItem('support_jwt', token);\r\n if (token) {\r\n this.enableTokenRefresh();\r\n }\r\n }\r\n\r\n /**\r\n * Enable JWT token auto refresh\r\n */\r\n private enableTokenRefresh() {\r\n if (!this.tokenRefreshTimerSubscription) {\r\n this.tokenRefreshTimer =\r\n timer(this.tokenRefreshInterval, this.tokenRefreshInterval)\r\n .pipe(\r\n switchMap(() => {\r\n if (this.refreshing || !this.loggedIn()) return EMPTY;\r\n this.refreshing = true;\r\n this.refresh().subscribe(\r\n {\r\n error: () => { this.refreshing = false; },\r\n complete: () => { this.refreshing = false; }\r\n });\r\n return EMPTY;\r\n }),\r\n shareReplay(1));\r\n this.tokenRefreshTimerSubscription = this.tokenRefreshTimer.subscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Return current JWT token\r\n * @returns: the string JWT token or string empty if none\r\n */\r\n getToken(): string {\r\n let token = sessionStorage.getItem('support_jwt');\r\n if (token) {\r\n if (token[0] === '\"') token = token.substring(1, token.length - 1);\r\n return token;\r\n }\r\n return '';\r\n }\r\n\r\n\r\n /**\r\n* Perform login \r\n* @param email: the guest email\r\n* @param oauth: the optional open authentication supported\r\n* @param oauthAccessToken: the optional oauth2 access token\r\n* @returns: the login result\r\n*/\r\n login(email: string | null | undefined = null,\r\n oauth: number | null | undefined = null,\r\n oauthAccessToken: string | null | undefined = null) {\r\n this.clear();\r\n this.loggingIn.set(true);\r\n return this.httpClient\r\n .post<ApiResult<SupportLoginResult>>(\r\n this._serviceUri + '/login',\r\n {\r\n user: oauth > 0 ? null : email,\r\n clientId: localStorage.getItem(\"support_client_id\"),\r\n OAUTH: oauth\r\n },\r\n {\r\n headers:\r\n !oauth\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken)\r\n })\r\n .pipe(\r\n catchError(err => {\r\n this.loggingIn.set(false);\r\n return throwError(() => err);\r\n }),\r\n map(r => {\r\n this.loggingIn.set(false);\r\n if (r.success) {\r\n this.setToken(r.value.token);\r\n this._loginInfo = r.value.context;\r\n this.loggedIn.set(true);\r\n }\r\n return r;\r\n })\r\n );\r\n\r\n }\r\n\r\n /**\r\n * Perform logout\r\n */\r\n logout() {\r\n return this.httpClient\r\n .post<any>(this._serviceUri + '/logout', {}).pipe(\r\n map(r => { return r; }),\r\n catchError((_e) => {\r\n this.clear();\r\n return of([]);\r\n }));\r\n\r\n }\r\n\r\n /**\r\n * Reset login refresh timer and logins state\r\n */\r\n reset() {\r\n // Clear subscriptions\r\n if (this.tokenRefreshTimerSubscription) {\r\n this.tokenRefreshTimerSubscription.unsubscribe();\r\n this.tokenRefreshTimerSubscription = null;\r\n }\r\n this.tokenRefreshTimer = null;\r\n\r\n // Clear login info\r\n this._loginInfo = null;\r\n this.loggedIn.set(false);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n */\r\n clear() {\r\n // Reset login\r\n this.reset();\r\n\r\n // Clear local storage\r\n sessionStorage.removeItem('support_jwt');\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n private refresh() {\r\n return this.httpClient.post<ApiResult<SupportLoginInfo>>(\r\n this._serviceUri + '/refresh', {}\r\n ).pipe(map(r => {\r\n // Update token\r\n this.setToken(r.value.token);\r\n console.log(\"token-refreshed: \" + r.value.token);\r\n }));\r\n }\r\n\r\n /**\r\n * Navigate to support service\r\n */\r\n open() {\r\n let uri = this.serviceUri ?? '';\r\n if (uri.endsWith('/api'))\r\n uri = uri.substring(0, uri.length - 4)\r\n window.open(uri);\r\n }\r\n\r\n ////\r\n // NOTIFICATIONS\r\n ////\r\n\r\n /**\r\n * Count unread notifications\r\n */\r\n countUnreadNotifications() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + \"&modules=\" + (this.productModules ?? 0)\r\n ).subscribe(r => {\r\n if (r.success) {\r\n this.unreadNotifications.set(r.value > 0 ? r.value : null)\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Query notifications\r\n * @param params: query parameters\r\n */\r\n queryNotifications(params: SupportNotificationsSearchParams) {\r\n params.products = this.products ?? 0;\r\n params.productModules = this.productModules ?? 0;\r\n return this.httpClient.post<ApiResult<SupportNotificationsSearchResult>>(\r\n this._serviceUri + '/notifications',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve a notification\r\n * @param id: the notification id\r\n */\r\n getNotification(id: number) {\r\n return this.httpClient.get<ApiResult<SupportNotificationInfo>>(\r\n this._serviceUri +\r\n '/notifications/' +\r\n id\r\n );\r\n }\r\n\r\n /**\r\n * Mark a group of notifications as read\r\n * @param ids: the array of notification's ids to set as read\r\n */\r\n markNotifications(params: SupportNotificationsMarkParams) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/notifications/mark',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Download a notification document\r\n * @param documentId : the notification document id\r\n */\r\n dowloadNotificationDocument(documentId: number) {\r\n return this.httpClient.get(\r\n this._serviceUri + '/documents/download/' + documentId,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { SupportService } from '../services/support.service';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\n\r\n@Injectable()\r\nexport class SupportAuthInterceptor implements HttpInterceptor {\r\n\r\n private supportService = inject(SupportService);\r\n private dialogService = inject(DialogService);\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> { \r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n catchError(err => {\r\n // Get the message\r\n let message = err.error?.message || err.message || \"Impossibile eseguire l'operazione richiesta.\";\r\n let invalidSession = err.status === 401;\r\n switch (err.status) {\r\n case 0:\r\n case 500:\r\n case 502:\r\n case 503:\r\n case 504:\r\n message = null; // No messages\r\n break;\r\n case 403:\r\n message = \"<p>Non hai i permessi necessari per eseguire l'operazione richiesta.</p>\";\r\n break;\r\n default:\r\n message = '<p>' + message.replaceAll('\\r\\n', '</p><p>') + '</p>';\r\n break;\r\n }\r\n // Display message\r\n if (message) {\r\n setTimeout(() => {\r\n this.dialogService.error(message, null, 'Errore in ARS Support', 'Ok', 500, invalidSession ? 5000 : null).afterClosed().subscribe(() => {\r\n if (invalidSession) {\r\n if (this.supportService.loggedIn()) {\r\n this.supportService.reset();\r\n }\r\n }\r\n });\r\n }, 250);\r\n }\r\n return throwError(() => err);\r\n }));\r\n } \r\n return next.handle(request); \r\n }\r\n\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token: string = null\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.supportService.serviceUri)) {\r\n if (!token) token = this.supportService.getToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsSupportCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/support.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './common/common.module';\r\nexport * from './common/messages';\r\nexport * from './common/definitions';\r\nexport * from './common/services/support.service';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arsedizioni/ars-utils",
3
- "version": "18.2.157",
3
+ "version": "18.2.158",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -59,18 +59,18 @@
59
59
  "esm": "./esm2022/core/arsedizioni-ars-utils-core.mjs",
60
60
  "default": "./fesm2022/arsedizioni-ars-utils-core.mjs"
61
61
  },
62
- "./support.common": {
63
- "types": "./support.common/index.d.ts",
64
- "esm2022": "./esm2022/support.common/arsedizioni-ars-utils-support.common.mjs",
65
- "esm": "./esm2022/support.common/arsedizioni-ars-utils-support.common.mjs",
66
- "default": "./fesm2022/arsedizioni-ars-utils-support.common.mjs"
67
- },
68
62
  "./support.ui": {
69
63
  "types": "./support.ui/index.d.ts",
70
64
  "esm2022": "./esm2022/support.ui/arsedizioni-ars-utils-support.ui.mjs",
71
65
  "esm": "./esm2022/support.ui/arsedizioni-ars-utils-support.ui.mjs",
72
66
  "default": "./fesm2022/arsedizioni-ars-utils-support.ui.mjs"
73
67
  },
68
+ "./support.common": {
69
+ "types": "./support.common/index.d.ts",
70
+ "esm2022": "./esm2022/support.common/arsedizioni-ars-utils-support.common.mjs",
71
+ "esm": "./esm2022/support.common/arsedizioni-ars-utils-support.common.mjs",
72
+ "default": "./fesm2022/arsedizioni-ars-utils-support.common.mjs"
73
+ },
74
74
  "./tinymce": {
75
75
  "types": "./tinymce/index.d.ts",
76
76
  "esm2022": "./esm2022/tinymce/arsedizioni-ars-utils-tinymce.mjs",
@@ -18,28 +18,23 @@ export declare class SupportService implements OnDestroy {
18
18
  private _serviceUri;
19
19
  get serviceUri(): string;
20
20
  set serviceUri(value: string);
21
- private _servicePrefix;
22
- get servicePrefix(): string;
23
- set servicePrefix(value: string);
24
21
  private _products;
25
22
  get products(): SupportProduct;
26
23
  set products(value: SupportProduct);
27
24
  private _productModules;
28
25
  get productModules(): SupportProductModule;
29
26
  set productModules(value: SupportProductModule);
30
- private _unreadNotifications;
31
- get unreadNotifications(): number;
32
- loggedIn: import("@angular/core").WritableSignal<boolean>;
33
- loggingIn: import("@angular/core").WritableSignal<boolean>;
27
+ readonly unreadNotifications: import("@angular/core").WritableSignal<number>;
28
+ readonly loggedIn: import("@angular/core").WritableSignal<boolean>;
29
+ readonly loggingIn: import("@angular/core").WritableSignal<boolean>;
34
30
  ngOnDestroy(): void;
35
31
  /**
36
32
  * Initialize service
37
33
  * @param serviceUri : the service uri
38
- * @param servicePrefix : the service prefix used to manage local storage
39
34
  * @param tokenRefreshInterval : the token refresh interval
40
35
  * @param products: the supported products
41
36
  */
42
- initialize(serviceUri?: string, servicePrefix?: string, tokenRefreshInterval?: number, products?: number): void;
37
+ initialize(serviceUri?: string, tokenRefreshInterval?: number, products?: number): void;
43
38
  /**
44
39
  * Set JWT token
45
40
  * @param token : The token to store
@@ -62,12 +57,6 @@ export declare class SupportService implements OnDestroy {
62
57
  * @returns: the login result
63
58
  */
64
59
  login(email?: string | null | undefined, oauth?: number | null | undefined, oauthAccessToken?: string | null | undefined): Observable<ApiResult<SupportLoginResult>>;
65
- /**
66
- * Handle login result
67
- * @param loginResult : the current login result
68
- * @returns: the final login result
69
- */
70
- private handleLoginResult;
71
60
  /**
72
61
  * Perform logout
73
62
  */