{"version":3,"file":"spinque-angular-ui-auth.mjs","sources":["../../../projects/spinque-angular-ui/auth/src/spinque-login-callback.component.ts","../../../projects/spinque-angular-ui/auth/src/spinque-auth.config.ts","../../../projects/spinque-angular-ui/auth/src/spinque-auth.module.ts","../../../projects/spinque-angular-ui/auth/spinque-angular-ui-auth.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, OnInit } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\n\n/**\n * Component that catches the callback done from login.spinque.com and redirects you back to the root\n * of your application.\n */\n@Component({\n    selector: 'spinque-login-callback',\n    template: 'A moment please..',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    imports: [RouterModule]\n})\nexport class SpinqueLoginCallbackComponent implements OnInit {\n  private router = inject(Router);\n\n  ngOnInit() {\n    // The actual handling of the callback is done in SpinqueAuthModule.\n    setTimeout(() => this.router.navigate(['/']), 0);\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Configuration object with which to instantiate SpinqueAuthModule\n */\nexport interface SpinqueAuthConfig {\n  /**\n   * The Client ID for your Application as configured in Auth0.\n   */\n  client_id: string;\n\n  /**\n   * The path at which your application is hosted. Without leading slash.\n   * The callback URL will be {DOMAIN}/{PATH}/callback. Note that his must match the\n   * configuration of your application in Auth0, otherwise an error will be thrown.\n   */\n  callback_base_path?: string;\n}\n\nexport const SpinqueAuthConfigValue = new InjectionToken<SpinqueAuthConfig>('SpinqueAuthConfig');\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { from } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { RequestEnrichmentFunc, SpinqueApiService } from '@spinque/angular-ui';\nimport { Authenticator, PKCE } from '@spinque/query-api';\n\nimport { SpinqueAuthConfig, SpinqueAuthConfigValue } from './spinque-auth.config';\nimport { SpinqueLoginCallbackComponent } from './spinque-login-callback.component';\n\n/**\n * Import this module to enable authentication with Spinque. Expectes a SpinqueAuthConfig object\n * with config to the forRoot method. Will register a /callback route in your app.\n */\n@NgModule({\n  imports: [\n    RouterModule.forChild([\n      {\n        path: 'callback',\n        component: SpinqueLoginCallbackComponent,\n      },\n    ]),\n  ],\n})\nexport class SpinqueAuthModule {\n  private authenticator: Authenticator;\n\n  constructor(@Inject(SpinqueAuthConfigValue) private authConfig: SpinqueAuthConfig, private api: SpinqueApiService) {\n    const clientId = this.authConfig.client_id;\n    const basePath = this.authConfig.callback_base_path ? this.authConfig.callback_base_path + '/' : '';\n    const callback = `${window.location.protocol}//${window.location.host}/${basePath}callback`;\n\n    /**\n     * Use the PKCE authenticator from @spinque/query-api\n     */\n    this.authenticator = new PKCE(clientId, callback);\n\n    /**\n     * Hook into SpinqueApiService to add the access token to every request automatically\n     */\n    const addAccessToken: RequestEnrichmentFunc = () => {\n      return from(this.authenticator.accessToken).pipe(\n        filter((token): token is string => token !== undefined),\n        map((token) => ({ headers: { Authorization: `Bearer ${token}` }, withCredentials: true })),\n      );\n    };\n    this.api.addRequestEnrichment(addAccessToken);\n  }\n\n  static forRoot(config: SpinqueAuthConfig): ModuleWithProviders<SpinqueAuthModule> {\n    return {\n      ngModule: SpinqueAuthModule,\n      providers: [\n        {\n          provide: SpinqueAuthConfigValue,\n          useValue: config,\n        },\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}