@arsedizioni/ars-utils 20.2.13 → 20.2.15

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.
@@ -197,7 +197,6 @@ interface ClipperLoginInfo {
197
197
  context: ClipperUserInfo;
198
198
  complianceContext?: any;
199
199
  channels?: ClipperChannelSettings[];
200
- credentials?: string;
201
200
  oauth?: LoginOAuthType;
202
201
  }
203
202
  declare class ClipperSearchParams {
@@ -1050,14 +1049,18 @@ declare class ClipperService implements OnDestroy {
1050
1049
  */
1051
1050
  private setToken;
1052
1051
  /**
1053
- * Return current JWT token
1052
+ * Return current auth token
1054
1053
  * @param refresh: true to get the refresh token. Default is false.
1055
1054
  */
1056
- getToken(refresh?: boolean): string;
1055
+ getAuthToken(refresh?: boolean): string;
1057
1056
  /**
1058
1057
  * Get the two form factor authentication token
1059
1058
  */
1060
- getMFAToken(): string | null;
1059
+ getRememberToken(): string | null;
1060
+ /**
1061
+ * Get the two form factor authentication token
1062
+ */
1063
+ getMfaToken(): string | null;
1061
1064
  /**
1062
1065
  * Store context
1063
1066
  */
@@ -1100,8 +1103,9 @@ declare class ClipperService implements OnDestroy {
1100
1103
  /**
1101
1104
  * Confirm MFA procedure
1102
1105
  * @param code: the confirm code
1106
+ * @param remember: true to remember credentials. Default is false.
1103
1107
  */
1104
- confirmIdentity(code: string): rxjs.Observable<ApiResult<ClipperLoginResult>>;
1108
+ confirmIdentity(code: string, remember?: boolean): rxjs.Observable<ApiResult<ClipperLoginResult>>;
1105
1109
  /**
1106
1110
  * Perform logout
1107
1111
  */
@@ -1039,7 +1039,7 @@ declare class ClipperDocumentMenuComponent implements OnInit, OnDestroy {
1039
1039
  private changeDetector;
1040
1040
  private clipperService;
1041
1041
  readonly useSelections: _angular_core.InputSignal<boolean>;
1042
- readonly selectionSource: _angular_core.InputSignal<"bag" | "selection" | "none">;
1042
+ readonly selectionSource: _angular_core.InputSignal<"none" | "selection" | "bag">;
1043
1043
  protected selection: () => ClipperDocumentInfo[];
1044
1044
  readonly parent: _angular_core.InputSignal<ClipperSearchResultManager>;
1045
1045
  readonly item: _angular_core.InputSignal<ClipperDocumentInfo>;
package/core/index.d.ts CHANGED
@@ -566,6 +566,7 @@ interface LoginResult<T> extends ApiResult<boolean> {
566
566
  context: T;
567
567
  token: string;
568
568
  refreshToken?: string;
569
+ rememberToken?: string;
569
570
  requiresMFA?: boolean;
570
571
  mfaToken?: string;
571
572
  }
@@ -2131,7 +2131,7 @@ class ClipperService {
2131
2131
  * Get access token expiration date
2132
2132
  */
2133
2133
  getTokenExpirationDate() {
2134
- const token = this.getToken();
2134
+ const token = this.getAuthToken();
2135
2135
  if (!token)
2136
2136
  return undefined;
2137
2137
  // Parse json object from base64 encoded jwt token
@@ -2180,16 +2180,23 @@ class ClipperService {
2180
2180
  * @param value : the login result
2181
2181
  */
2182
2182
  setToken(value) {
2183
- sessionStorage.setItem('clipper_jwt', value.token);
2184
- sessionStorage.setItem('clipper_jwt_refresh', value.refreshToken ?? '');
2185
- localStorage.setItem('clipper_mfa', value.mfaToken ?? '');
2183
+ sessionStorage.setItem('clipper_auth', value.token);
2184
+ if (value.refreshToken) {
2185
+ sessionStorage.setItem('clipper_refresh', value.refreshToken);
2186
+ }
2187
+ if (value.rememberToken) {
2188
+ localStorage.setItem('clipper_remember', value.rememberToken);
2189
+ }
2190
+ if (value.mfaToken) {
2191
+ localStorage.setItem('clipper_mfa', value.mfaToken);
2192
+ }
2186
2193
  }
2187
2194
  /**
2188
- * Return current JWT token
2195
+ * Return current auth token
2189
2196
  * @param refresh: true to get the refresh token. Default is false.
2190
2197
  */
2191
- getToken(refresh = false) {
2192
- let token = sessionStorage.getItem(refresh ? 'clipper_jwt_refresh' : 'clipper_jwt');
2198
+ getAuthToken(refresh = false) {
2199
+ let token = sessionStorage.getItem(refresh ? 'clipper_refresh' : 'clipper_auth');
2193
2200
  if (token && token[0] === '"') {
2194
2201
  return token.substring(1, token.length - 1);
2195
2202
  }
@@ -2198,7 +2205,13 @@ class ClipperService {
2198
2205
  /**
2199
2206
  * Get the two form factor authentication token
2200
2207
  */
2201
- getMFAToken() {
2208
+ getRememberToken() {
2209
+ return localStorage.getItem("clipper_remember");
2210
+ }
2211
+ /**
2212
+ * Get the two form factor authentication token
2213
+ */
2214
+ getMfaToken() {
2202
2215
  return localStorage.getItem("clipper_mfa");
2203
2216
  }
2204
2217
  /**
@@ -2285,19 +2298,21 @@ class ClipperService {
2285
2298
  .post(this._serviceUri + '/login2', {
2286
2299
  user: oauth ? null : email,
2287
2300
  password: oauth ? null : password,
2301
+ remember: remember,
2288
2302
  clientId: localStorage.getItem("clipper_client_id"),
2289
2303
  OAUTH: oauth
2290
2304
  }, {
2291
2305
  headers: !oauth || !oauthAccessToken
2292
2306
  ? new HttpHeaders()
2293
- .set("X-MFA", this.getMFAToken() ?? '')
2307
+ .set("X-MFA", this.getMfaToken() ?? '')
2294
2308
  : new HttpHeaders()
2295
- .set("Authorization", oauthAccessToken)
2309
+ .set("Authorization", 'Bearer ' + oauthAccessToken)
2296
2310
  })
2297
2311
  .pipe(catchError(err => {
2298
2312
  this.loggingIn.set(false);
2299
2313
  localStorage.removeItem('clipper_context');
2300
2314
  localStorage.removeItem('clipper_mfa');
2315
+ localStorage.removeItem('clipper_remember');
2301
2316
  return throwError(() => err);
2302
2317
  }), map((r) => {
2303
2318
  if (r.success) {
@@ -2305,19 +2320,9 @@ class ClipperService {
2305
2320
  this._loginInfo.context = r.value.context;
2306
2321
  this._loginInfo.channels = r.value.settings;
2307
2322
  this._loginInfo.oauth = oauth;
2308
- if (!this._loginInfo.oauth) {
2309
- this._loginInfo.credentials = SystemUtils.cipher(JSON.stringify({
2310
- email: email,
2311
- password: password,
2312
- remember: remember
2313
- }), r.value.context?.userId?.toString() ?? '');
2314
- }
2315
- else {
2316
- this._loginInfo.credentials = undefined;
2317
- }
2318
2323
  if (!oauth && r.value.requiresMFA) {
2319
2324
  // Notify login is pending
2320
- this.broadcastService.sendMessage(ClipperMessages.LOGIN_PENDING);
2325
+ this.broadcastService.sendMessage(ClipperMessages.LOGIN_PENDING, { remember: remember });
2321
2326
  }
2322
2327
  else {
2323
2328
  // Complete login
@@ -2346,13 +2351,15 @@ class ClipperService {
2346
2351
  /**
2347
2352
  * Confirm MFA procedure
2348
2353
  * @param code: the confirm code
2354
+ * @param remember: true to remember credentials. Default is false.
2349
2355
  */
2350
- confirmIdentity(code) {
2356
+ confirmIdentity(code, remember = false) {
2351
2357
  return this.httpClient
2352
- .post(this._serviceUri + '/login/confirm/' + code, {})
2358
+ .post(this._serviceUri + '/login/confirm/' + code + '/?remember=' + remember, {})
2353
2359
  .pipe(catchError((err) => {
2354
2360
  localStorage.removeItem('clipper_context');
2355
2361
  localStorage.removeItem('clipper_mfa');
2362
+ localStorage.removeItem('clipper_remember');
2356
2363
  this.loggingIn.set(false);
2357
2364
  return throwError(() => err);
2358
2365
  }), map((r) => {
@@ -2373,6 +2380,7 @@ class ClipperService {
2373
2380
  // Remove credentials
2374
2381
  localStorage.removeItem('clipper_context');
2375
2382
  localStorage.removeItem('clipper_mfa');
2383
+ localStorage.removeItem('clipper_remember');
2376
2384
  }), catchError((_e) => {
2377
2385
  return of([]);
2378
2386
  }));
@@ -2396,8 +2404,8 @@ class ClipperService {
2396
2404
  */
2397
2405
  clear(clearOAuthToken = false) {
2398
2406
  // Clear local storage
2399
- sessionStorage.removeItem('clipper_jwt');
2400
- sessionStorage.removeItem('clipper_jwt_refresh');
2407
+ sessionStorage.removeItem('clipper_auth');
2408
+ sessionStorage.removeItem('clipper_refresh');
2401
2409
  sessionStorage.removeItem('clipper_oauth');
2402
2410
  if (clearOAuthToken) {
2403
2411
  sessionStorage.removeItem('clipper_oauth_token');
@@ -2409,7 +2417,7 @@ class ClipperService {
2409
2417
  * Perform token refresh
2410
2418
  */
2411
2419
  refresh() {
2412
- return this.httpClient.get(this._serviceUri + '/refresh2/?token=' + this.getToken(true)).pipe(map((r) => {
2420
+ return this.httpClient.get(this._serviceUri + '/refresh2/?token=' + this.getAuthToken(true)).pipe(map((r) => {
2413
2421
  // Update token
2414
2422
  this.setToken(r.value);
2415
2423
  return r;
@@ -3217,12 +3225,11 @@ class ClipperAuthInterceptor {
3217
3225
  if (request.url.startsWith(this.clipperService.serviceUri)) {
3218
3226
  if (this.clipperService.loggedIn()) {
3219
3227
  if (!token)
3220
- token = this.clipperService.getToken();
3228
+ token = this.clipperService.getAuthToken();
3221
3229
  if (token) {
3222
3230
  return request.clone({
3223
3231
  setHeaders: {
3224
3232
  Authorization: 'Bearer ' + token,
3225
- 'X-MFA': this.clipperService.getMFAToken() ?? '',
3226
3233
  'ngsw-bypass': 'ngsw-bypass'
3227
3234
  },
3228
3235
  });