@rolatech/angular-auth 20.2.8-beta.11 → 20.2.8-beta.12

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.
@@ -17,19 +17,19 @@ import { of, map as map$1, BehaviorSubject, catchError, throwError, NEVER } from
17
17
  import { MatSnackBar } from '@angular/material/snack-bar';
18
18
 
19
19
  class ForbiddenComponent {
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ForbiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: ForbiddenComponent, isStandalone: true, selector: "rolatech-forbidden", ngImport: i0, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n", styles: [""] });
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ForbiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: ForbiddenComponent, isStandalone: true, selector: "rolatech-forbidden", ngImport: i0, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n", styles: [""] });
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ForbiddenComponent, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ForbiddenComponent, decorators: [{
24
24
  type: Component,
25
25
  args: [{ selector: 'rolatech-forbidden', template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n" }]
26
26
  }] });
27
27
 
28
28
  class UnauthorizedComponent {
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: UnauthorizedComponent, isStandalone: true, selector: "rolatech-unauthorized", ngImport: i0, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n", styles: [""] });
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: UnauthorizedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: UnauthorizedComponent, isStandalone: true, selector: "rolatech-unauthorized", ngImport: i0, template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n", styles: [""] });
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: UnauthorizedComponent, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: UnauthorizedComponent, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'rolatech-unauthorized', template: "<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n" }]
35
35
  }] });
@@ -71,14 +71,16 @@ class AuthStore {
71
71
  }
72
72
  updateEmail(email) {
73
73
  this._state.update((state) => {
74
- state.user.email = email;
74
+ if (state.user) {
75
+ state.user = { ...state.user, email };
76
+ }
75
77
  return { ...state };
76
78
  });
77
79
  }
78
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
79
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthStore, providedIn: 'root' });
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
81
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthStore, providedIn: 'root' });
80
82
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthStore, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthStore, decorators: [{
82
84
  type: Injectable,
83
85
  args: [{ providedIn: 'root' }]
84
86
  }] });
@@ -226,10 +228,10 @@ class AuthService {
226
228
  this.authStore.updateAuthenticated(true);
227
229
  }));
228
230
  }
229
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
230
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthService, providedIn: 'root' });
231
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
232
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthService, providedIn: 'root' });
231
233
  }
232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthService, decorators: [{
234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthService, decorators: [{
233
235
  type: Injectable,
234
236
  args: [{ providedIn: 'root' }]
235
237
  }] });
@@ -288,10 +290,10 @@ class FaceidDetectDialogComponent {
288
290
  console.error(err);
289
291
  }
290
292
  }
291
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: FaceidDetectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
292
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: FaceidDetectDialogComponent, isStandalone: true, selector: "rolatech-faceid-detect-dialog", outputs: { output: "output" }, ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "ngmodule", type: MatButtonModule }] });
293
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: FaceidDetectDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
294
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: FaceidDetectDialogComponent, isStandalone: true, selector: "rolatech-faceid-detect-dialog", outputs: { output: "output" }, ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "rolatech-spinner", inputs: ["title"] }, { kind: "ngmodule", type: MatButtonModule }] });
293
295
  }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: FaceidDetectDialogComponent, decorators: [{
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: FaceidDetectDialogComponent, decorators: [{
295
297
  type: Component,
296
298
  args: [{ selector: 'rolatech-faceid-detect-dialog', imports: [SpinnerComponent, MatButtonModule], template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n", styles: ["*{margin:0;padding:0}.normalPanel .panelContent{width:188px;height:188px}.normalPanel .wrp_code{position:relative;width:188px;height:188px;margin:0}.impowerBox .title,.normalPanel .info{display:none}.impowerBox .qrcode{margin-top:0;border:0;width:188px;height:188px}#MAXIM{content:\"veg20170418191511\"}mat-mdc-dialog-content mdc-dialog__content{padding:0}\n"] }]
297
299
  }], ctorParameters: () => [], propDecorators: { output: [{ type: i0.Output, args: ["output"] }] } });
@@ -320,10 +322,10 @@ class AddressComponent {
320
322
  ngDoCheck() {
321
323
  this.output.emit(this.address());
322
324
  }
323
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AddressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
324
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: AddressComponent, isStandalone: true, selector: "rolatech-address", inputs: { address: { classPropertyName: "address", publicName: "address", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { address: "addressChange", output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }] });
325
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AddressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
326
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: AddressComponent, isStandalone: true, selector: "rolatech-address", inputs: { address: { classPropertyName: "address", publicName: "address", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { address: "addressChange", output: "output" }, ngImport: i0, template: "<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }] });
325
327
  }
326
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AddressComponent, decorators: [{
328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AddressComponent, decorators: [{
327
329
  type: Component,
328
330
  args: [{ selector: 'rolatech-address', imports: [AngularCommonModule, AngularComponentsModule], template: "<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
329
331
  }], propDecorators: { address: [{ type: i0.Input, args: [{ isSignal: true, alias: "address", required: false }] }, { type: i0.Output, args: ["addressChange"] }], output: [{ type: i0.Output, args: ["output"] }] } });
@@ -339,8 +341,6 @@ const AuthGuard = (route, state) => {
339
341
  const isContinue = state.url.includes('continue');
340
342
  const continueUrl = route.queryParams['continue'];
341
343
  const isSignInPage = state.url.includes('/signin');
342
- const currentOrigin = window.location.origin;
343
- const shouldAttachContinue = currentOrigin !== environment.accountsUrl; // or compare to env.publicAppUrl origin if you have it
344
344
  return authService.introspect().pipe(map$1(({ roles, authenticated }) => {
345
345
  const routeRoles = route.data['roles'];
346
346
  const passRoled = routeRoles ? roles?.some((r) => routeRoles.indexOf(r) >= 0) : true;
@@ -354,8 +354,9 @@ const AuthGuard = (route, state) => {
354
354
  return false; // Prevent rendering the Sign-in page
355
355
  }
356
356
  // 1. If 'continue' parameter exists, redirect to it immediately
357
- if (isContinue) {
357
+ if (isContinue && continueUrl) {
358
358
  window.location.href = continueUrl;
359
+ return false;
359
360
  }
360
361
  // 2. If already at the accounts domain and NO continue URL, redirect to default account page
361
362
  if (window.location.href.includes(environment.accountsUrl)) {
@@ -372,7 +373,6 @@ const AuthGuard = (route, state) => {
372
373
  }
373
374
  // Redirection for UNAUTHENTICATED users
374
375
  const currentUrl = encodeURIComponent(window.location.href);
375
- console.log(currentUrl);
376
376
  window.location.href = `${environment.accountsUrl}/signin?continue=${currentUrl}`;
377
377
  return false;
378
378
  }
@@ -381,10 +381,10 @@ const AuthGuard = (route, state) => {
381
381
 
382
382
  class AuthDialogComponent {
383
383
  dialogRef = inject(MatDialogRef);
384
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
385
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.0", type: AuthDialogComponent, isStandalone: true, selector: "rolatech-auth-dialog", ngImport: i0, template: "<p>auth-dialog works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }] });
384
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
385
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: AuthDialogComponent, isStandalone: true, selector: "rolatech-auth-dialog", ngImport: i0, template: "<p>auth-dialog works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }] });
386
386
  }
387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthDialogComponent, decorators: [{
387
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthDialogComponent, decorators: [{
388
388
  type: Component,
389
389
  args: [{ selector: 'rolatech-auth-dialog', imports: [CommonModule, MatDialogModule], template: "<p>auth-dialog works!</p>\n" }]
390
390
  }] });
@@ -598,10 +598,10 @@ class AuthUserService {
598
598
  deleteAddressById(id) {
599
599
  return this.http.delete(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });
600
600
  }
601
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthUserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
602
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthUserService, providedIn: 'root' });
601
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthUserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
602
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthUserService, providedIn: 'root' });
603
603
  }
604
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthUserService, decorators: [{
604
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthUserService, decorators: [{
605
605
  type: Injectable,
606
606
  args: [{
607
607
  providedIn: 'root',
@@ -648,10 +648,10 @@ class AuthAgentService {
648
648
  withCredentials: true,
649
649
  });
650
650
  }
651
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthAgentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
652
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthAgentService, providedIn: 'root' });
651
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthAgentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
652
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthAgentService, providedIn: 'root' });
653
653
  }
654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthAgentService, decorators: [{
654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthAgentService, decorators: [{
655
655
  type: Injectable,
656
656
  args: [{
657
657
  providedIn: 'root',
@@ -695,10 +695,10 @@ class LocalStorageService {
695
695
  setItem(key, value) {
696
696
  return this.storage.setItem(key, value);
697
697
  }
698
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
699
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
698
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
699
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
700
700
  }
701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: LocalStorageService, decorators: [{
701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: LocalStorageService, decorators: [{
702
702
  type: Injectable,
703
703
  args: [{
704
704
  providedIn: 'root',
@@ -756,10 +756,10 @@ class ErrorInterceptor {
756
756
  return throwError(() => new Error('系统错误'));
757
757
  // return throwError(() => error.error);
758
758
  }
759
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
760
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ErrorInterceptor });
759
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ErrorInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
760
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ErrorInterceptor });
761
761
  }
762
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: ErrorInterceptor, decorators: [{
762
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: ErrorInterceptor, decorators: [{
763
763
  type: Injectable
764
764
  }] });
765
765
 
@@ -808,10 +808,10 @@ class AuthInterceptor {
808
808
  },
809
809
  });
810
810
  }
811
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
812
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthInterceptor });
811
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
812
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthInterceptor });
813
813
  }
814
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: AuthInterceptor, decorators: [{
814
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: AuthInterceptor, decorators: [{
815
815
  type: Injectable
816
816
  }], ctorParameters: () => [] });
817
817
 
@@ -1 +1 @@
1
- {"version":3,"file":"rolatech-angular-auth.mjs","sources":["../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.ts","../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.html","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.ts","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.html","../../../../packages/angular-auth/src/lib/auth.store.ts","../../../../packages/angular-auth/src/lib/services/auth.service.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.html","../../../../packages/angular-auth/src/lib/interfaces/auth.interface.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.html","../../../../packages/angular-auth/src/lib/guards/auth.guard.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.html","../../../../packages/angular-auth/src/lib/guards/auth-dialog.guard.ts","../../../../packages/angular-auth/src/lib/guards/role.guard.ts","../../../../packages/angular-auth/src/lib/guards/permission.guard.ts","../../../../packages/angular-auth/src/lib/services/auth-user.service.ts","../../../../packages/angular-auth/src/lib/services/auth-agent.service.ts","../../../../packages/angular-auth/src/lib/services/storage.service.ts","../../../../packages/angular-auth/src/lib/interceptors/error.interceptor.ts","../../../../packages/angular-auth/src/lib/interceptors/auth.interceptor.ts","../../../../packages/angular-auth/src/provider.ts","../../../../packages/angular-auth/src/lib/auth.routes.ts","../../../../packages/angular-auth/src/rolatech-angular-auth.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-forbidden',\n templateUrl: './forbidden.component.html',\n styleUrls: ['./forbidden.component.scss'],\n})\nexport class ForbiddenComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-unauthorized',\n templateUrl: './unauthorized.component.html',\n styleUrls: ['./unauthorized.component.scss'],\n})\nexport class UnauthorizedComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n","import { Injectable, computed, signal } from '@angular/core';\nimport { User } from './interfaces/auth.interface';\n\ntype AuthState = {\n userId: string;\n user: User | null;\n roles: string[];\n authenticated: boolean | null;\n loaded: boolean;\n};\n@Injectable({ providedIn: 'root' })\nexport class AuthStore {\n private _state = signal<AuthState>({\n userId: '',\n user: null,\n roles: [],\n authenticated: false,\n loaded: false,\n });\n userId = computed(() => this._state().userId);\n user = computed(() => this._state().user);\n roles = computed(() => this._state().roles);\n authenticated = computed(() => this._state().authenticated);\n loaded = computed(() => this._state().loaded);\n\n update(data: any) {\n this._state.update((state) => {\n state.authenticated = data.authenticated;\n state.userId = data.userId;\n state.roles = data.roles;\n state.loaded = data.loaded;\n state.user = data.user;\n return { ...state };\n });\n }\n updateAuthenticated(authenticated: boolean) {\n this._state.update((state) => {\n state.authenticated = authenticated;\n return { ...state };\n });\n }\n updateUser(user: User) {\n this._state.update((state) => {\n state.user = user;\n return { ...state };\n });\n }\n updateEmail(email: string) {\n this._state.update((state) => {\n state.user!.email = email;\n return { ...state };\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { PasswordChange, APP_CONFIG, PasswordResetConfirmRequest } from '@rolatech/angular-common';\nimport { ActivatedRoute } from '@angular/router';\nimport { IntrospectResponse } from '../interfaces/auth.interface';\nimport { AuthStore } from '../auth.store';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n route = inject(ActivatedRoute);\n authStore = inject(AuthStore);\n authenticated = this.authStore.authenticated;\n userId = this.authStore.userId;\n user = this.authStore.user;\n roles = this.authStore.roles;\n loaded = this.authStore.loaded;\n\n public introspect(): Observable<IntrospectResponse | never> {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/introspect`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.update({\n authenticated: res.authenticated,\n userId: res.userId,\n roles: res.roles,\n loaded: true,\n });\n if (res.authenticated) {\n this.me().subscribe();\n }\n return res;\n }),\n );\n }\n me() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateUser(res.data);\n return res;\n }),\n );\n }\n wechatLogin(code: string, state: string) {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/login?code=${code}&state=${state}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n wechatDisconnect() {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/disconnect`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n requestFaceIdDetect() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id`, {\n withCredentials: true,\n });\n }\n faceIdStatus() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me`, {\n withCredentials: true,\n });\n }\n faceIdStatusByToken(token: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me/by`, {\n params: { token: token },\n withCredentials: true,\n });\n }\n wechatStatus(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/wechat/status/by`, {\n params: options,\n withCredentials: true,\n });\n }\n login(data: any) {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/login`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateAuthenticated(true);\n return res.data;\n }),\n );\n }\n signup(data: any): Observable<any> {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/signup`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateAuthenticated(true);\n return res;\n }),\n );\n }\n logout() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/logout`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateAuthenticated(false);\n return res;\n }),\n );\n }\n requestPasswordReset(email: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset-request`, { email });\n }\n validatePasswordRestToken(token: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/password/reset-tokens/${token}`);\n }\n resetPassword(data: PasswordResetConfirmRequest) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset`, data);\n }\n changePassword(data: PasswordChange) {\n return this.http\n .put<any>(`${this.environment.baseUrl}/auth/users/password`, data, {\n withCredentials: true,\n })\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.updateAuthenticated(true);\n }),\n );\n }\n lookup(account: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/lookup`,\n {\n account,\n next,\n },\n { withCredentials: false },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n );\n }\n challenge(username: string, password: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/challenge`,\n {\n username,\n password,\n next,\n },\n { withCredentials: true },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.updateAuthenticated(true);\n }),\n );\n }\n}\n","import { Component, DoCheck, ElementRef, HostListener, OnDestroy, Renderer2, inject, output } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { SnackBarService } from '@rolatech/angular-services';\nimport QRCode from 'qrcode';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthService } from '../../services/auth.service';\nimport { SpinnerComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-faceid-detect-dialog',\n templateUrl: './faceid-detect-dialog.component.html',\n styleUrls: ['./faceid-detect-dialog.component.scss'],\n imports: [SpinnerComponent, MatButtonModule],\n})\nexport class FaceidDetectDialogComponent implements OnDestroy {\n dialogRef = inject(MatDialogRef);\n environment = inject(APP_CONFIG);\n data = inject(MAT_DIALOG_DATA);\n authService = inject(AuthService);\n snackBarService = inject(SnackBarService);\n output = output<any>();\n loading = false;\n qrcodeUrl = '';\n verified = false;\n interval;\n constructor() {\n this.request();\n }\n ngOnDestroy(): void {\n clearInterval(this.interval);\n }\n request() {\n this.loading = true;\n this.authService.requestFaceIdDetect().subscribe({\n next: ({ data }) => {\n this.genQRCode(data.url);\n this.loop();\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n cancel() {\n clearInterval(this.interval);\n this.dialogRef.close(this.verified);\n }\n loop() {\n this.loading = false;\n this.interval = setInterval(() => {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n if (res.data.verified) {\n clearInterval(this.interval);\n this.dialogRef.close(true);\n }\n },\n });\n }, 2000);\n }\n async genQRCode(url: string) {\n try {\n this.qrcodeUrl = await QRCode.toDataURL(url);\n } catch (err) {\n console.error(err);\n }\n }\n}\n","<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n","export interface User {\n id: string;\n name: string;\n firstName: string;\n lastName: string;\n username: string;\n avatar: string;\n phone: string;\n email: string;\n bio: string;\n roles: Role[];\n gender: string;\n}\nexport interface Role {\n name: string;\n}\n\nexport interface PasswordChange {\n oldPassword: string;\n newPassword: string;\n ne2Password: string;\n}\nexport enum UserStatus {\n ACTIVE = '正常',\n AWAITING = '审核中',\n DELETED = '已删除',\n}\nexport interface IntrospectResponse {\n userId: string;\n roles: string[];\n authenticated: boolean;\n}\nexport interface Address {\n id: string;\n name: string;\n phone: string;\n email: string;\n type: AddressType;\n country: string;\n province: string;\n city: string;\n district: string;\n street: string;\n detail: string;\n latitude: string;\n longitude: string;\n userId: string;\n}\nexport enum AddressType {\n HOME = '住宅地址',\n WORK = '工作地址',\n BILLING = '账单地址',\n SHIPPING = '购物地址',\n OTHER = '其他',\n}\n","import { Component, DoCheck, model, OnInit, output } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { AddressType } from '../../interfaces/auth.interface';\n\n@Component({\n selector: 'rolatech-address',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './address.component.html',\n styleUrl: './address.component.scss',\n})\nexport class AddressComponent implements OnInit, DoCheck {\n addressType = AddressType;\n enumKeys = Object.keys(this.addressType).filter((key) => isNaN(Number(key)));\n address = model<any>();\n output = output<any>();\n\n ngOnInit(): void {}\n\n ngDoCheck(): void {\n this.output.emit(this.address());\n }\n}\n","<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\nexport const AuthGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const router = inject(Router);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n const isSignInPage = state.url.includes('/signin');\n const currentOrigin = window.location.origin;\n\n const shouldAttachContinue = currentOrigin !== environment.accountsUrl; // or compare to env.publicAppUrl origin if you have it\n\n return authService.introspect().pipe(\n map(({ roles, authenticated }) => {\n const routeRoles = route.data['roles'];\n const passRoled = routeRoles ? roles?.some((r) => routeRoles.indexOf(r) >= 0) : true;\n if (authenticated && !passRoled) {\n router.navigate(['/forbidden']);\n return false;\n }\n\n if (authenticated) {\n if (isSignInPage) {\n window.location.href = continueUrl || environment.myaccountUrl;\n return false; // Prevent rendering the Sign-in page\n }\n // 1. If 'continue' parameter exists, redirect to it immediately\n if (isContinue) {\n window.location.href = continueUrl;\n }\n // 2. If already at the accounts domain and NO continue URL, redirect to default account page\n if (window.location.href.includes(environment.accountsUrl)) {\n window.location.href = environment.myaccountUrl;\n return false;\n }\n // 3. Otherwise, if the user is already where they need to be, allow navigation\n return true;\n } else {\n // CASE: Not logged in\n if (isSignInPage) {\n return true; // Allow guest to see the Sign-in page\n }\n\n // Redirection for UNAUTHENTICATED users\n const currentUrl = encodeURIComponent(window.location.href);\n console.log(currentUrl);\n window.location.href = `${environment.accountsUrl}/signin?continue=${currentUrl}`;\n return false;\n }\n }),\n );\n};\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-auth-dialog',\n imports: [CommonModule, MatDialogModule],\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent {\n dialogRef = inject(MatDialogRef);\n}\n","<p>auth-dialog works!</p>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, UrlTree } from '@angular/router';\nimport { APP_CONFIG, WINDOW } from '@rolatech/angular-common';\nimport { last, map, Observable, of, switchMap, take } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { DialogService } from '@rolatech/angular-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthDialogComponent } from '../components/auth-dialog/auth-dialog.component';\n\nexport const AuthDialogGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const dialog = inject(MatDialog);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n return authService.introspect().pipe(\n map(({ roles, authenticated }) => {\n if (!authenticated) {\n if (window.location.href.includes(environment.accountsUrl) && !isContinue) {\n window.location.href = environment.myaccountUrl;\n }\n if (isContinue) {\n window.location.href = continueUrl;\n }\n } else {\n const dialogRef = dialog.open(AuthDialogComponent, {\n data: {},\n });\n dialogRef.afterClosed().subscribe((result) => {});\n return true;\n }\n return authenticated;\n }),\n );\n};\n","import { filter } from 'rxjs/operators';\nimport { PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { isPlatformBrowser } from '@angular/common';\nimport { APP_CONFIG } from '@rolatech/angular-common';\n\nexport const RoleGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const snackBar = inject(MatSnackBar);\n const router = inject(Router);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n const routeRoles = route.data['roles'];\n // if (!routeRoles) {\n // return of(false);\n // }\n return authService.introspect().pipe(\n filter((res) => res.roles !== null && res.roles.length > 0),\n map(({ roles }) => {\n const authed = roles.some((r) => routeRoles?.indexOf(r) >= 0);\n if (!authed) {\n router.navigate(['/forbidden']);\n }\n return authed;\n }),\n );\n};\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const PermissionGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n\n // if (!isPlatformBrowser(platformId)) {\n // return of(false);\n // }\n\n return of(false);\n};\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { User } from '../interfaces/auth.interface';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthUserService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n private userSubject: BehaviorSubject<User | null> = new BehaviorSubject<User | null>(JSON.parse('null'));\n public userInfo$: Observable<User | null> = this.userSubject.asObservable();\n updateUserInfo(userInfo: User | null) {\n this.userSubject.next(userInfo);\n }\n findAll(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users`, {\n params: options,\n withCredentials: true,\n });\n }\n get(id: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${id}`, {\n withCredentials: true,\n });\n }\n findOne(userId: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${userId}`, {\n withCredentials: true,\n });\n }\n me() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n getPublicUserInfo(id: string): Observable<any> {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/${id}/info/public`, {\n withCredentials: false,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n findPublicInfoByIds(ids: Array<string>) {\n const params = { ids: ids.join(',') };\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/by`, {\n params: params,\n });\n }\n sendSMSCode(countryCode: string, phone: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/verification/phone/start`, { countryCode, phone });\n }\n findByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info`, {\n params: { username },\n withCredentials: true,\n });\n }\n findUserInfoByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info/by`, {\n params: { username },\n withCredentials: true,\n });\n }\n findPublicInfoByRole(role: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/public/by`, {\n params: { role: role },\n withCredentials: false,\n });\n }\n changeUsername(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/username`,\n { username },\n {\n withCredentials: true,\n },\n );\n }\n changeName(name: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/me`,\n { name },\n {\n withCredentials: true,\n },\n );\n }\n createUserByAdmin(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/by/admin`, data, {\n withCredentials: true,\n });\n }\n update(data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/users/me`, data, {\n withCredentials: true,\n });\n }\n uploadAvatar(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/avatar`, data, {\n withCredentials: true,\n });\n }\n changePhone(phone: any, code: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/phone`,\n { phone, code },\n {\n withCredentials: true,\n },\n );\n }\n follow(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/following/${username}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n unfollow(username: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, {\n withCredentials: true,\n });\n }\n listFollowingByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following`);\n }\n listFollowersByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/followers`);\n }\n checkIfFollowingSomeone(username: string, target: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following/${target}`);\n }\n isFollowing(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, { withCredentials: true });\n }\n friendships(ids: string[]): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/friendships`, { ids: ids }, { withCredentials: true });\n }\n followersStats(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/followers/stats/by`, { params: { username: username } });\n }\n // Address;\n addAddress(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/addresses`, data, { withCredentials: true });\n }\n updateAddress(id: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, data, { withCredentials: true });\n }\n findAllAddress(options: any): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses`, { params: options, withCredentials: true });\n }\n getAddress(id: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n deleteAddressById(id: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { Observable } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthAgentService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n baseUrl = `${this.environment.baseUrl}/auth/agents`;\n\n public findAllApplications(options: any): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications`, {\n params: options,\n withCredentials: true,\n });\n }\n public getApplication(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}`, {\n withCredentials: true,\n });\n }\n public myApplication(): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/me`, {\n withCredentials: true,\n });\n }\n public apply(data: any): Observable<any> {\n return this.http.post<any>(`${this.baseUrl}/applications`, data, {\n withCredentials: true,\n });\n }\n public approve(id: string): Observable<any> {\n return this.http.put<any>(\n `${this.baseUrl}/applications/${id}/approve`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n public reject(id: any, data: any): Observable<any> {\n return this.http.put<any>(`${this.baseUrl}/applications/${id}/reject`, data, {\n withCredentials: true,\n });\n }\n public findRejections(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}/rejections`, {\n withCredentials: true,\n });\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nclass LocalStorage implements Storage {\n [name: string]: any;\n readonly length = 0;\n clear(): void {}\n getItem(key: string): string | null {\n return null;\n }\n key(index: number): string | null {\n return null;\n }\n removeItem(key: string): void {}\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService implements Storage {\n private storage: Storage;\n platformId = inject(PLATFORM_ID);\n\n constructor() {\n this.storage = new LocalStorage();\n\n if (isPlatformBrowser(this.platformId)) {\n this.storage = localStorage;\n }\n }\n\n [name: string]: any;\n\n length = 0;\n\n clear(): void {\n this.storage.clear();\n }\n\n getItem(key: string): string | null {\n return this.storage.getItem(key);\n }\n\n key(index: number): string | null {\n return this.storage.key(index);\n }\n\n removeItem(key: string): void {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string): void {\n return this.storage.setItem(key, value);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\nimport { BehaviorSubject, catchError, Observable, of, throwError } from 'rxjs';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n tokenSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\n isRefreshingToken = false;\n authService = inject(AuthService);\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError((error) => {\n if (error instanceof HttpErrorResponse) {\n switch (error.status) {\n case 400:\n return this.hand400Error(error);\n case 401:\n return this.hand401Error(error);\n case 403:\n return this.hand403Error(error);\n case 404:\n return this.hand404Error(error);\n case 429:\n return this.hand429Error(error);\n default:\n return this.handleDefaultError(error);\n }\n } else {\n return throwError(() => error);\n }\n }),\n );\n }\n private hand400Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand401Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand403Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand404Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n /**\n *\n * @param error SMS code sent too many\n * @returns\n */\n private hand429Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private handleDefaultError(error: HttpErrorResponse) {\n return throwError(() => new Error('系统错误'));\n // return throwError(() => error.error);\n }\n}\n","import { catchError, filter, map, switchMap, take } from 'rxjs/operators';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { NEVER, Observable, throwError } from 'rxjs';\n\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n authService = inject(AuthService);\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const authRequest = request.clone({\n headers: request.headers.append('Client-Id', this.environment.clientId),\n });\n return next.handle(authRequest).pipe(\n map((res) => {\n // if (res instanceof HttpResponse && isPlatformBrowser(this.platformId)) {\n // // window.location.href = res.headers.get('Location') as string;\n // }\n return res;\n }),\n catchError((error: any) => {\n if (isPlatformBrowser(this.platformId)) {\n if (error.url?.includes('auth/introspect')) {\n // if (window.location.origin !== `${this.environment.accountsUrl}`) {\n // window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n // return NEVER;\n // }\n }\n if (error instanceof HttpErrorResponse && error.error.code === 'G401') {\n window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n return NEVER;\n }\n }\n return throwError(() => error.error || error.message);\n }),\n );\n }\n addClientIdHeader(request: HttpRequest<any>) {\n return request.clone({\n setHeaders: {\n 'Client-id': this.environment.clientId,\n },\n });\n }\n addCookieHeader(request: HttpRequest<any>, cookie: string) {\n return request.clone({\n setHeaders: {\n Cookie: cookie,\n 'Client-id': this.environment.clientId,\n },\n });\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { EnvironmentProviders, InjectionToken, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { ErrorInterceptor, AuthInterceptor } from './lib/interceptors';\n\nexport enum AuthMethod {\n Password = 'PASSWORD',\n OTP = 'OTP',\n Google = 'GOOGLE',\n WeChat = 'WECHAT',\n}\n\nexport const AUTH_METHODS = new InjectionToken<AuthMethod[]>('AUTH_METHODS');\n\nexport interface AuthConfig {\n methods: AuthMethod[]\n}\n\nexport function provideAngularAuth(config?: AuthConfig): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n {\n provide: AUTH_METHODS,\n useValue: config?.methods,\n },\n\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Routes } from '@angular/router';\nimport { UnauthorizedComponent } from './components/unauthorized/unauthorized.component';\nimport { ForbiddenComponent } from './components/forbidden/forbidden.component';\n\nexport const authRoutes: Routes = [\n {\n path: 'unauthorized',\n component: UnauthorizedComponent,\n },\n {\n path: 'forbidden',\n component: ForbiddenComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","catchError"],"mappings":"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"}
1
+ {"version":3,"file":"rolatech-angular-auth.mjs","sources":["../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.ts","../../../../packages/angular-auth/src/lib/components/forbidden/forbidden.component.html","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.ts","../../../../packages/angular-auth/src/lib/components/unauthorized/unauthorized.component.html","../../../../packages/angular-auth/src/lib/auth.store.ts","../../../../packages/angular-auth/src/lib/services/auth.service.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/faceid-detect-dialog/faceid-detect-dialog.component.html","../../../../packages/angular-auth/src/lib/interfaces/auth.interface.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.ts","../../../../packages/angular-auth/src/lib/components/address/address.component.html","../../../../packages/angular-auth/src/lib/guards/auth.guard.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.ts","../../../../packages/angular-auth/src/lib/components/auth-dialog/auth-dialog.component.html","../../../../packages/angular-auth/src/lib/guards/auth-dialog.guard.ts","../../../../packages/angular-auth/src/lib/guards/role.guard.ts","../../../../packages/angular-auth/src/lib/guards/permission.guard.ts","../../../../packages/angular-auth/src/lib/services/auth-user.service.ts","../../../../packages/angular-auth/src/lib/services/auth-agent.service.ts","../../../../packages/angular-auth/src/lib/services/storage.service.ts","../../../../packages/angular-auth/src/lib/interceptors/error.interceptor.ts","../../../../packages/angular-auth/src/lib/interceptors/auth.interceptor.ts","../../../../packages/angular-auth/src/provider.ts","../../../../packages/angular-auth/src/lib/auth.routes.ts","../../../../packages/angular-auth/src/rolatech-angular-auth.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-forbidden',\n templateUrl: './forbidden.component.html',\n styleUrls: ['./forbidden.component.scss'],\n})\nexport class ForbiddenComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>403.</b>\n <p>Forbidden page.</p>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rolatech-unauthorized',\n templateUrl: './unauthorized.component.html',\n styleUrls: ['./unauthorized.component.scss'],\n})\nexport class UnauthorizedComponent {}\n","<div class=\"p-6 max-w-lg h-auto max-h-32\">\n <div class=\"flex flex-col\">\n <b>401.</b>\n <p>Unauthorized page.</p>\n </div>\n</div>\n","import { Injectable, computed, signal } from '@angular/core';\nimport { User } from './interfaces/auth.interface';\n\ntype AuthState = {\n userId: string;\n user: User | null;\n roles: string[];\n authenticated: boolean | null;\n loaded: boolean;\n};\n@Injectable({ providedIn: 'root' })\nexport class AuthStore {\n private _state = signal<AuthState>({\n userId: '',\n user: null,\n roles: [],\n authenticated: false,\n loaded: false,\n });\n userId = computed(() => this._state().userId);\n user = computed(() => this._state().user);\n roles = computed(() => this._state().roles);\n authenticated = computed(() => this._state().authenticated);\n loaded = computed(() => this._state().loaded);\n\n update(data: any) {\n this._state.update((state) => {\n state.authenticated = data.authenticated;\n state.userId = data.userId;\n state.roles = data.roles;\n state.loaded = data.loaded;\n state.user = data.user;\n return { ...state };\n });\n }\n updateAuthenticated(authenticated: boolean) {\n this._state.update((state) => {\n state.authenticated = authenticated;\n return { ...state };\n });\n }\n updateUser(user: User) {\n this._state.update((state) => {\n state.user = user;\n return { ...state };\n });\n }\n updateEmail(email: string) {\n this._state.update((state) => {\n if (state.user) {\n state.user = { ...state.user, email };\n }\n return { ...state };\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { PasswordChange, APP_CONFIG, PasswordResetConfirmRequest } from '@rolatech/angular-common';\nimport { ActivatedRoute } from '@angular/router';\nimport { IntrospectResponse } from '../interfaces/auth.interface';\nimport { AuthStore } from '../auth.store';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n route = inject(ActivatedRoute);\n authStore = inject(AuthStore);\n authenticated = this.authStore.authenticated;\n userId = this.authStore.userId;\n user = this.authStore.user;\n roles = this.authStore.roles;\n loaded = this.authStore.loaded;\n\n public introspect(): Observable<IntrospectResponse | never> {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/introspect`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.update({\n authenticated: res.authenticated,\n userId: res.userId,\n roles: res.roles,\n loaded: true,\n });\n if (res.authenticated) {\n this.me().subscribe();\n }\n return res;\n }),\n );\n }\n me() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateUser(res.data);\n return res;\n }),\n );\n }\n wechatLogin(code: string, state: string) {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/login?code=${code}&state=${state}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n wechatDisconnect() {\n return this.http.post<any>(\n `${this.environment.baseUrl}/auth/wechat/disconnect`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n requestFaceIdDetect() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id`, {\n withCredentials: true,\n });\n }\n faceIdStatus() {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me`, {\n withCredentials: true,\n });\n }\n faceIdStatusByToken(token: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/face-id/status/me/by`, {\n params: { token: token },\n withCredentials: true,\n });\n }\n wechatStatus(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/wechat/status/by`, {\n params: options,\n withCredentials: true,\n });\n }\n login(data: any) {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/login`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateAuthenticated(true);\n return res.data;\n }),\n );\n }\n signup(data: any): Observable<any> {\n return this.http\n .post<any>(`${this.environment.baseUrl}/auth/signup`, data, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateAuthenticated(true);\n return res;\n }),\n );\n }\n logout() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/logout`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n this.authStore.updateAuthenticated(false);\n return res;\n }),\n );\n }\n requestPasswordReset(email: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset-request`, { email });\n }\n validatePasswordRestToken(token: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/password/reset-tokens/${token}`);\n }\n resetPassword(data: PasswordResetConfirmRequest) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/password/reset`, data);\n }\n changePassword(data: PasswordChange) {\n return this.http\n .put<any>(`${this.environment.baseUrl}/auth/users/password`, data, {\n withCredentials: true,\n })\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.updateAuthenticated(true);\n }),\n );\n }\n lookup(account: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/lookup`,\n {\n account,\n next,\n },\n { withCredentials: false },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n );\n }\n challenge(username: string, password: string, next: string) {\n return this.http\n .post<any>(\n `${this.environment.baseUrl}/auth/challenge`,\n {\n username,\n password,\n next,\n },\n { withCredentials: true },\n )\n .pipe(\n map((user) => {\n return user;\n }),\n tap((_) => {\n this.authStore.updateAuthenticated(true);\n }),\n );\n }\n}\n","import { Component, DoCheck, ElementRef, HostListener, OnDestroy, Renderer2, inject, output } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { SnackBarService } from '@rolatech/angular-services';\nimport QRCode from 'qrcode';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AuthService } from '../../services/auth.service';\nimport { SpinnerComponent } from '@rolatech/angular-components';\n\n@Component({\n selector: 'rolatech-faceid-detect-dialog',\n templateUrl: './faceid-detect-dialog.component.html',\n styleUrls: ['./faceid-detect-dialog.component.scss'],\n imports: [SpinnerComponent, MatButtonModule],\n})\nexport class FaceidDetectDialogComponent implements OnDestroy {\n dialogRef = inject(MatDialogRef);\n environment = inject(APP_CONFIG);\n data = inject(MAT_DIALOG_DATA);\n authService = inject(AuthService);\n snackBarService = inject(SnackBarService);\n output = output<any>();\n loading = false;\n qrcodeUrl = '';\n verified = false;\n interval;\n constructor() {\n this.request();\n }\n ngOnDestroy(): void {\n clearInterval(this.interval);\n }\n request() {\n this.loading = true;\n this.authService.requestFaceIdDetect().subscribe({\n next: ({ data }) => {\n this.genQRCode(data.url);\n this.loop();\n },\n error: () => {\n this.loading = false;\n },\n });\n }\n cancel() {\n clearInterval(this.interval);\n this.dialogRef.close(this.verified);\n }\n loop() {\n this.loading = false;\n this.interval = setInterval(() => {\n this.authService.faceIdStatus().subscribe({\n next: (res) => {\n if (res.data.verified) {\n clearInterval(this.interval);\n this.dialogRef.close(true);\n }\n },\n });\n }, 2000);\n }\n async genQRCode(url: string) {\n try {\n this.qrcodeUrl = await QRCode.toDataURL(url);\n } catch (err) {\n console.error(err);\n }\n }\n}\n","<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n @if (loading) {\n <div>\n <rolatech-spinner></rolatech-spinner>\n </div>\n }\n <img [src]=\"qrcodeUrl\" alt />\n </div>\n</div>\n","export interface User {\n id: string;\n name: string;\n firstName: string;\n lastName: string;\n username: string;\n avatar: string;\n phone: string;\n email: string;\n bio: string;\n roles: Role[];\n gender: string;\n}\nexport interface Role {\n name: string;\n}\n\nexport interface PasswordChange {\n oldPassword: string;\n newPassword: string;\n ne2Password: string;\n}\nexport enum UserStatus {\n ACTIVE = '正常',\n AWAITING = '审核中',\n DELETED = '已删除',\n}\nexport interface IntrospectResponse {\n userId: string;\n roles: string[];\n authenticated: boolean;\n}\nexport interface Address {\n id: string;\n name: string;\n phone: string;\n email: string;\n type: AddressType;\n country: string;\n province: string;\n city: string;\n district: string;\n street: string;\n detail: string;\n latitude: string;\n longitude: string;\n userId: string;\n}\nexport enum AddressType {\n HOME = '住宅地址',\n WORK = '工作地址',\n BILLING = '账单地址',\n SHIPPING = '购物地址',\n OTHER = '其他',\n}\n","import { Component, DoCheck, model, OnInit, output } from '@angular/core';\nimport { AngularCommonModule } from '@rolatech/angular-common';\nimport { AngularComponentsModule } from '@rolatech/angular-components';\nimport { AddressType } from '../../interfaces/auth.interface';\n\n@Component({\n selector: 'rolatech-address',\n imports: [AngularCommonModule, AngularComponentsModule],\n templateUrl: './address.component.html',\n styleUrl: './address.component.scss',\n})\nexport class AddressComponent implements OnInit, DoCheck {\n addressType = AddressType;\n enumKeys = Object.keys(this.addressType).filter((key) => isNaN(Number(key)));\n address = model<any>();\n output = output<any>();\n\n ngOnInit(): void {}\n\n ngDoCheck(): void {\n this.output.emit(this.address());\n }\n}\n","<div>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Name </mat-label>\n <input matInput [(ngModel)]=\"address().name\" />\n </mat-form-field>\n @if (address().type === addressType.BILLING) {\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Email </mat-label>\n <input matInput [(ngModel)]=\"address().email\" />\n </mat-form-field>\n }\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Phone </mat-label>\n <input matInput [(ngModel)]=\"address().phone\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> province </mat-label>\n <input matInput [(ngModel)]=\"address().province\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> City </mat-label>\n <input matInput [(ngModel)]=\"address().city\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> District </mat-label>\n <input matInput [(ngModel)]=\"address().district\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Street </mat-label>\n <input matInput [(ngModel)]=\"address().street\" />\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label i18n> Detail </mat-label>\n <input matInput [(ngModel)]=\"address().detail\" />\n </mat-form-field>\n</div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\n\nexport const AuthGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const router = inject(Router);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n const isSignInPage = state.url.includes('/signin');\n\n return authService.introspect().pipe(\n map(({ roles, authenticated }) => {\n const routeRoles = route.data['roles'];\n const passRoled = routeRoles ? roles?.some((r) => routeRoles.indexOf(r) >= 0) : true;\n if (authenticated && !passRoled) {\n router.navigate(['/forbidden']);\n return false;\n }\n\n if (authenticated) {\n if (isSignInPage) {\n window.location.href = continueUrl || environment.myaccountUrl;\n return false; // Prevent rendering the Sign-in page\n }\n // 1. If 'continue' parameter exists, redirect to it immediately\n if (isContinue && continueUrl) {\n window.location.href = continueUrl;\n return false;\n }\n // 2. If already at the accounts domain and NO continue URL, redirect to default account page\n if (window.location.href.includes(environment.accountsUrl)) {\n window.location.href = environment.myaccountUrl;\n return false;\n }\n // 3. Otherwise, if the user is already where they need to be, allow navigation\n return true;\n } else {\n // CASE: Not logged in\n if (isSignInPage) {\n return true; // Allow guest to see the Sign-in page\n }\n\n // Redirection for UNAUTHENTICATED users\n const currentUrl = encodeURIComponent(window.location.href);\n window.location.href = `${environment.accountsUrl}/signin?continue=${currentUrl}`;\n return false;\n }\n }),\n );\n};\n","import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'rolatech-auth-dialog',\n imports: [CommonModule, MatDialogModule],\n templateUrl: './auth-dialog.component.html',\n styleUrl: './auth-dialog.component.scss',\n})\nexport class AuthDialogComponent {\n dialogRef = inject(MatDialogRef);\n}\n","<p>auth-dialog works!</p>\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { CanActivateFn, UrlTree } from '@angular/router';\nimport { APP_CONFIG, WINDOW } from '@rolatech/angular-common';\nimport { last, map, Observable, of, switchMap, take } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { DialogService } from '@rolatech/angular-services';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AuthDialogComponent } from '../components/auth-dialog/auth-dialog.component';\n\nexport const AuthDialogGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const dialog = inject(MatDialog);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n return authService.introspect().pipe(\n map(({ roles, authenticated }) => {\n if (!authenticated) {\n if (window.location.href.includes(environment.accountsUrl) && !isContinue) {\n window.location.href = environment.myaccountUrl;\n }\n if (isContinue) {\n window.location.href = continueUrl;\n }\n } else {\n const dialogRef = dialog.open(AuthDialogComponent, {\n data: {},\n });\n dialogRef.afterClosed().subscribe((result) => {});\n return true;\n }\n return authenticated;\n }),\n );\n};\n","import { filter } from 'rxjs/operators';\nimport { PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { map, Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { isPlatformBrowser } from '@angular/common';\nimport { APP_CONFIG } from '@rolatech/angular-common';\n\nexport const RoleGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const snackBar = inject(MatSnackBar);\n const router = inject(Router);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n if (!isPlatformBrowser(platformId)) {\n return of(false);\n }\n const routeRoles = route.data['roles'];\n // if (!routeRoles) {\n // return of(false);\n // }\n return authService.introspect().pipe(\n filter((res) => res.roles !== null && res.roles.length > 0),\n map(({ roles }) => {\n const authed = roles.some((r) => routeRoles?.indexOf(r) >= 0);\n if (!authed) {\n router.navigate(['/forbidden']);\n }\n return authed;\n }),\n );\n};\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport const PermissionGuard: CanActivateFn = (route, state): Observable<boolean> => {\n const authService = inject(AuthService);\n const environment = inject(APP_CONFIG);\n const platformId = inject(PLATFORM_ID);\n const isContinue = state.url.includes('continue');\n const continueUrl = route.queryParams['continue'];\n\n // if (!isPlatformBrowser(platformId)) {\n // return of(false);\n // }\n\n return of(false);\n};\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { User } from '../interfaces/auth.interface';\nimport { BaseService } from '@rolatech/angular-services';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthUserService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n private userSubject: BehaviorSubject<User | null> = new BehaviorSubject<User | null>(JSON.parse('null'));\n public userInfo$: Observable<User | null> = this.userSubject.asObservable();\n updateUserInfo(userInfo: User | null) {\n this.userSubject.next(userInfo);\n }\n findAll(options: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users`, {\n params: options,\n withCredentials: true,\n });\n }\n get(id: string) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${id}`, {\n withCredentials: true,\n });\n }\n findOne(userId: any) {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${userId}`, {\n withCredentials: true,\n });\n }\n me() {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/me`, {\n withCredentials: true,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n getPublicUserInfo(id: string): Observable<any> {\n return this.http\n .get<any>(`${this.environment.baseUrl}/auth/users/${id}/info/public`, {\n withCredentials: false,\n })\n .pipe(\n map((res) => {\n return res.data;\n }),\n );\n }\n findPublicInfoByIds(ids: Array<string>) {\n const params = { ids: ids.join(',') };\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/by`, {\n params: params,\n });\n }\n sendSMSCode(countryCode: string, phone: string) {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/verification/phone/start`, { countryCode, phone });\n }\n findByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info`, {\n params: { username },\n withCredentials: true,\n });\n }\n findUserInfoByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/info/by`, {\n params: { username },\n withCredentials: true,\n });\n }\n findPublicInfoByRole(role: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/public/by`, {\n params: { role: role },\n withCredentials: false,\n });\n }\n changeUsername(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/username`,\n { username },\n {\n withCredentials: true,\n },\n );\n }\n changeName(name: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/me`,\n { name },\n {\n withCredentials: true,\n },\n );\n }\n createUserByAdmin(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/by/admin`, data, {\n withCredentials: true,\n });\n }\n update(data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/users/me`, data, {\n withCredentials: true,\n });\n }\n uploadAvatar(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/avatar`, data, {\n withCredentials: true,\n });\n }\n changePhone(phone: any, code: any): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/phone`,\n { phone, code },\n {\n withCredentials: true,\n },\n );\n }\n follow(username: string): Observable<any> {\n return this.http.put<any>(\n `${this.environment.baseUrl}/auth/users/following/${username}`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n unfollow(username: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, {\n withCredentials: true,\n });\n }\n listFollowingByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following`);\n }\n listFollowersByUsername(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/followers`);\n }\n checkIfFollowingSomeone(username: string, target: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/${username}/following/${target}`);\n }\n isFollowing(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/following/${username}`, { withCredentials: true });\n }\n friendships(ids: string[]): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/friendships`, { ids: ids }, { withCredentials: true });\n }\n followersStats(username: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/followers/stats/by`, { params: { username: username } });\n }\n // Address;\n addAddress(data: any): Observable<any> {\n return this.http.post<any>(`${this.environment.baseUrl}/auth/users/addresses`, data, { withCredentials: true });\n }\n updateAddress(id: string, data: any): Observable<any> {\n return this.http.put<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, data, { withCredentials: true });\n }\n findAllAddress(options: any): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses`, { params: options, withCredentials: true });\n }\n getAddress(id: string): Observable<any> {\n return this.http.get<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n deleteAddressById(id: string): Observable<any> {\n return this.http.delete<any>(`${this.environment.baseUrl}/auth/users/addresses/${id}`, { withCredentials: true });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { Observable } from 'rxjs';\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthAgentService {\n environment = inject(APP_CONFIG);\n http = inject(HttpClient);\n baseUrl = `${this.environment.baseUrl}/auth/agents`;\n\n public findAllApplications(options: any): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications`, {\n params: options,\n withCredentials: true,\n });\n }\n public getApplication(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}`, {\n withCredentials: true,\n });\n }\n public myApplication(): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/me`, {\n withCredentials: true,\n });\n }\n public apply(data: any): Observable<any> {\n return this.http.post<any>(`${this.baseUrl}/applications`, data, {\n withCredentials: true,\n });\n }\n public approve(id: string): Observable<any> {\n return this.http.put<any>(\n `${this.baseUrl}/applications/${id}/approve`,\n {},\n {\n withCredentials: true,\n },\n );\n }\n public reject(id: any, data: any): Observable<any> {\n return this.http.put<any>(`${this.baseUrl}/applications/${id}/reject`, data, {\n withCredentials: true,\n });\n }\n public findRejections(id: string): Observable<any> {\n return this.http.get<any>(`${this.baseUrl}/applications/${id}/rejections`, {\n withCredentials: true,\n });\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nclass LocalStorage implements Storage {\n [name: string]: any;\n readonly length = 0;\n clear(): void {}\n getItem(key: string): string | null {\n return null;\n }\n key(index: number): string | null {\n return null;\n }\n removeItem(key: string): void {}\n setItem(key: string, value: string): void {}\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LocalStorageService implements Storage {\n private storage: Storage;\n platformId = inject(PLATFORM_ID);\n\n constructor() {\n this.storage = new LocalStorage();\n\n if (isPlatformBrowser(this.platformId)) {\n this.storage = localStorage;\n }\n }\n\n [name: string]: any;\n\n length = 0;\n\n clear(): void {\n this.storage.clear();\n }\n\n getItem(key: string): string | null {\n return this.storage.getItem(key);\n }\n\n key(index: number): string | null {\n return this.storage.key(index);\n }\n\n removeItem(key: string): void {\n return this.storage.removeItem(key);\n }\n\n setItem(key: string, value: string): void {\n return this.storage.setItem(key, value);\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { AuthService } from '../services/auth.service';\nimport { BehaviorSubject, catchError, Observable, of, throwError } from 'rxjs';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n tokenSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\n isRefreshingToken = false;\n authService = inject(AuthService);\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n catchError((error) => {\n if (error instanceof HttpErrorResponse) {\n switch (error.status) {\n case 400:\n return this.hand400Error(error);\n case 401:\n return this.hand401Error(error);\n case 403:\n return this.hand403Error(error);\n case 404:\n return this.hand404Error(error);\n case 429:\n return this.hand429Error(error);\n default:\n return this.handleDefaultError(error);\n }\n } else {\n return throwError(() => error);\n }\n }),\n );\n }\n private hand400Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand401Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand403Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private hand404Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n /**\n *\n * @param error SMS code sent too many\n * @returns\n */\n private hand429Error(error: HttpErrorResponse) {\n return throwError(() => error.error);\n }\n private handleDefaultError(error: HttpErrorResponse) {\n return throwError(() => new Error('系统错误'));\n // return throwError(() => error.error);\n }\n}\n","import { catchError, filter, map, switchMap, take } from 'rxjs/operators';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { inject, Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\nimport { NEVER, Observable, throwError } from 'rxjs';\n\nimport { AuthService } from '../services/auth.service';\nimport { APP_CONFIG } from '@rolatech/angular-common';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n environment = inject(APP_CONFIG);\n platformId = inject(PLATFORM_ID);\n authService = inject(AuthService);\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const authRequest = request.clone({\n headers: request.headers.append('Client-Id', this.environment.clientId),\n });\n return next.handle(authRequest).pipe(\n map((res) => {\n // if (res instanceof HttpResponse && isPlatformBrowser(this.platformId)) {\n // // window.location.href = res.headers.get('Location') as string;\n // }\n return res;\n }),\n catchError((error: any) => {\n if (isPlatformBrowser(this.platformId)) {\n if (error.url?.includes('auth/introspect')) {\n // if (window.location.origin !== `${this.environment.accountsUrl}`) {\n // window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n // return NEVER;\n // }\n }\n if (error instanceof HttpErrorResponse && error.error.code === 'G401') {\n window.location.href = `${this.environment.accountsUrl}/signin?continue=` + window.location.href;\n return NEVER;\n }\n }\n return throwError(() => error.error || error.message);\n }),\n );\n }\n addClientIdHeader(request: HttpRequest<any>) {\n return request.clone({\n setHeaders: {\n 'Client-id': this.environment.clientId,\n },\n });\n }\n addCookieHeader(request: HttpRequest<any>, cookie: string) {\n return request.clone({\n setHeaders: {\n Cookie: cookie,\n 'Client-id': this.environment.clientId,\n },\n });\n }\n}\n","import { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { EnvironmentProviders, InjectionToken, Provider, makeEnvironmentProviders } from '@angular/core';\nimport { ErrorInterceptor, AuthInterceptor } from './lib/interceptors';\n\nexport enum AuthMethod {\n Password = 'PASSWORD',\n OTP = 'OTP',\n Google = 'GOOGLE',\n WeChat = 'WECHAT',\n}\n\nexport const AUTH_METHODS = new InjectionToken<AuthMethod[]>('AUTH_METHODS');\n\nexport interface AuthConfig {\n methods: AuthMethod[]\n}\n\nexport function provideAngularAuth(config?: AuthConfig): EnvironmentProviders {\n const providers: (Provider | EnvironmentProviders)[] = [\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n {\n provide: AUTH_METHODS,\n useValue: config?.methods,\n },\n\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true,\n },\n ];\n return makeEnvironmentProviders(providers);\n}\n","import { Routes } from '@angular/router';\nimport { UnauthorizedComponent } from './components/unauthorized/unauthorized.component';\nimport { ForbiddenComponent } from './components/forbidden/forbidden.component';\n\nexport const authRoutes: Routes = [\n {\n path: 'unauthorized',\n component: UnauthorizedComponent,\n },\n {\n path: 'forbidden',\n component: ForbiddenComponent,\n },\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","catchError"],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@rolatech/angular-auth",
3
- "version": "20.2.8-beta.11",
3
+ "version": "20.2.8-beta.12",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
7
7
  "@angular/core": "^20.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "@rolatech/angular-common": "20.2.8-beta.11",
11
- "@rolatech/angular-components": "20.2.8-beta.11",
12
- "@rolatech/angular-services": "20.2.8-beta.11",
10
+ "@rolatech/angular-common": "20.2.8-beta.12",
11
+ "@rolatech/angular-components": "20.2.8-beta.12",
12
+ "@rolatech/angular-services": "20.2.8-beta.12",
13
13
  "tslib": "^2.3.0"
14
14
  },
15
15
  "repository": {