{"version":3,"file":"solidexpert-auth.mjs","sources":["../../../../projects/solidexpert/auth/src/lib/authentication-service.service.ts","../../../../projects/solidexpert/auth/src/lib/auth.component.ts","../../../../projects/solidexpert/auth/src/lib/auth.guard.ts","../../../../projects/solidexpert/auth/src/lib/auth.interceptor.ts","../../../../projects/solidexpert/auth/src/lib/permission.interceptor.ts","../../../../projects/solidexpert/auth/src/lib/auth.module.ts","../../../../projects/solidexpert/auth/src/lib/callback.guard.ts","../../../../projects/solidexpert/auth/src/public-api.ts","../../../../projects/solidexpert/auth/src/solidexpert-auth.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { JwtHelperService } from '@auth0/angular-jwt';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport abstract class IAuthenticationService {\n  abstract isAuthentication(): boolean;\n  abstract getPermissionToken(): string | null | Promise<string>;\n  abstract setPermissionToken(token: string): void;\n  abstract getToken(): string | Promise<string>;\n  abstract setToken(token: string): void;\n  abstract signOut(): Observable<any>;\n  abstract removePermissionToken(): void;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AuthenticationService extends IAuthenticationService {\n  constructor(private jwtHelperService: JwtHelperService) {\n    super();\n  }\n\n  isAuthentication(): boolean {\n    var t = localStorage.getItem('access_token');\n    return !this.jwtHelperService.isTokenExpired(t);\n  }\n\n  getToken() {\n    return this.jwtHelperService.tokenGetter();\n  }\n\n  setToken(token: string) {\n    localStorage.setItem('access_token', token);\n  }\n\n  getPermissionToken(): string | null | Promise<string> {\n    return localStorage.getItem('permission_token');\n  }\n\n  setPermissionToken(token: string) {\n    localStorage.setItem('permission_token', token);\n  }\n\n  removePermissionToken(): void {\n    localStorage.removeItem('permission_token');\n  }\n\n  /**\n   * Sign out\n   */\n  signOut(): Observable<any> {\n    // Remove the access token from the local storage\n    this.removePermissionToken();\n    localStorage.removeItem('access_token');\n\n    return of(true);\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { IAuthenticationService } from './authentication-service.service';\nimport { filter, take } from 'rxjs';\n\n\n@Component({\n  selector: 'app-callback-auth',\n  template:\"\"\n})\nexport class CallbackAuthComponent implements OnInit {\n  public constructor(\n    private _authService: IAuthenticationService,\n    private _route: ActivatedRoute,\n    private _router: Router,\n    private _titleService: Title,\n  ) {\n    this._route.queryParams\n      .pipe(\n        filter((params) => !!params && params['access_token']),\n        take(1)\n      )\n      .subscribe((params) => {\n        this._authService.setToken(params['access_token']);\n\n        const paramsCopy = { ...params };\n\n        const navigateUrl = paramsCopy['navigate'];\n\n        delete paramsCopy['access_token'];\n        delete paramsCopy['navigate'];\n\n        const queryParams = new URLSearchParams(paramsCopy).toString();\n\n        if (!queryParams) {\n          this._router.navigateByUrl(navigateUrl);\n\n          return;\n        }\n\n        if (navigateUrl.indexOf('?') === -1) {\n          this._router.navigateByUrl(`${navigateUrl}?${queryParams}`);\n\n          return;\n        }\n\n        this._router.navigateByUrl(`${navigateUrl}&${queryParams}`);\n      });\n  }\n\n  ngOnInit() {\n    this._titleService.setTitle('1crm.io - Authorization');\n  }\n}\n","import {\n  CanActivate,\n  ActivatedRouteSnapshot,\n  RouterStateSnapshot,\n} from '@angular/router';\nimport { Inject, Injectable } from '@angular/core';\nimport { IAuthenticationService } from './authentication-service.service';\n\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n  constructor(\n    private _authService: IAuthenticationService,\n    @Inject('APP_SITE_FULL_URL') private  baseHref: string\n  ) {}\n\n  canActivate(\n    _route: ActivatedRouteSnapshot,\n    _state: RouterStateSnapshot\n  ): boolean {\n    const auth = this._authService.isAuthentication();\n\n    if (!auth) {\n      const returnedSnapshotUrl = encodeURIComponent(_state.url);\n\n      window.location.href = `https://account.1crm.io/sign-in?returnUrl=${this.baseHref}/callback?navigate=${returnedSnapshotUrl}`;\n    }\n\n    return auth;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { catchError, Observable, throwError } from 'rxjs';\nimport { IAuthenticationService } from './authentication-service.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor\n{\n    /**\n     * Constructor\n     */\n    constructor(private _authService: IAuthenticationService)\n    {\n    }\n\n    /**\n     * Intercept\n     *\n     * @param req\n     * @param next\n     */\n    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>\n    {\n        // Clone the request object\n        let newReq = req.clone();\n\n        // Request\n        //\n        // If the access token didn't expire, add the Authorization header.\n        // We won't add the Authorization header if the access token expired.\n        // This will force the server to return a \"401 Unauthorized\" response\n        // for the protected API routes which our response interceptor will\n        // catch and delete the access token from the local storage while logging\n        // the user out from the app.\n        if (this._authService.isAuthentication() )\n        {\n            newReq = req.clone({\n                headers: req.headers.set('Authorization', 'Bearer ' + this._authService.getToken())\n            });\n        }\n\n        // Response\n        return next.handle(newReq).pipe(\n            catchError((error) => {\n\n                // Catch \"401 Unauthorized\" responses\n                if ( error instanceof HttpErrorResponse && error.status === 401 )\n                {\n                    // Sign out\n                    this._authService.signOut();\n\n                    // Reload the app\n                    location.reload();\n                }\n\n                return throwError(error);\n            })\n        );\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { catchError, Observable, throwError } from 'rxjs';\nimport { IAuthenticationService } from './authentication-service.service';\n\n@Injectable()\nexport class PermissionInterceptor implements HttpInterceptor {\n  /**\n   * Constructor\n   */\n  constructor(private _authService: IAuthenticationService) {}\n\n  /**\n   * Intercept\n   *\n   * @param req\n   * @param next\n   */\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    // Clone the request object\n    let newReq = req.clone();\n\n    // Request\n    //\n    // If the access token didn't expire, add the Authorization header.\n    // We won't add the Authorization header if the access token expired.\n    // This will force the server to return a \"401 Unauthorized\" response\n    // for the protected API routes which our response interceptor will\n    // catch and delete the access token from the local storage while logging\n    // the user out from the app.\n    if (this._authService.isAuthentication()) {\n      newReq = req.clone({\n        headers: req.headers.set('Permission', 'Bearer ' + this._authService.getPermissionToken()),\n      });\n    }\n\n    // Response\n    return next.handle(newReq).pipe(\n      catchError((error) => {\n        // Catch \"401 Unauthorized\" responses\n        if (error instanceof HttpErrorResponse && error.status === 401) {\n          // Sign out\n          this._authService.signOut();\n\n          // Reload the app\n          location.reload();\n        }\n\n        return throwError(error);\n      }),\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CallbackAuthComponent } from './auth.component';\n\n\n\n@NgModule({\n  declarations: [\n    CallbackAuthComponent\n  ],\n  exports: [\n    CallbackAuthComponent\n  ]\n})\nexport class AuthModule { }\n","import { CanActivateFn, Router } from '@angular/router';\nimport { inject } from '@angular/core';\nimport {IAuthenticationService} from \"./authentication-service.service\";\n\nexport const callbackGuard: CanActivateFn = (route) => {\n  if (route.queryParams?.access_token) {\n    const authService = inject(IAuthenticationService);\n    const router = inject(Router);\n\n    authService.setToken(route.queryParams?.access_token);\n\n    router.navigateByUrl(route.queryParams?.navigate);\n  }\n\n  return Boolean(route.queryParams?.access_token);\n};\n","/*\n * Public API Surface of auth\n */\n\nexport * from './lib/authentication-service.service';\nexport * from './lib/auth.component';\nexport * from './lib/auth.guard'\nexport * from './lib/auth.interceptor'\nexport * from './lib/permission.interceptor'\nexport * from './lib/auth.module';\nexport * from './lib/callback.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.IAuthenticationService"],"mappings":"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"}