{"version":3,"file":"sdcorejs-angular-modules-auth.mjs","sources":["../../../projects/sdcorejs-angular/modules/auth/configurations/auth.configuration.ts","../../../projects/sdcorejs-angular/modules/auth/services/auth.service.ts","../../../projects/sdcorejs-angular/modules/auth/guards/auth.guard.ts","../../../projects/sdcorejs-angular/modules/auth/guards/portal.guard.ts","../../../projects/sdcorejs-angular/modules/auth/sdcorejs-angular-modules-auth.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { MaybeAsync } from '@sdcorejs/utils/models';\nimport { SdAuthInfo } from '../services';\n\nexport interface ISdAuthConfiguration {\n  action?: IAuthConfigurationAction;\n  guard?: IAuthConfigurationGuard;\n}\n\nexport const SD_AUTH_CONFIGURATION = new InjectionToken<ISdAuthConfiguration>('sd.auth.configuration');\n\ninterface IAuthConfigurationAction {\n  signout: () => MaybeAsync<void>;\n  changePassword?: () => MaybeAsync<void>;\n}\n\ninterface IAuthConfigurationGuard {\n  auth?: CanActivate['canActivate'];\n  portal?: CanActivate['canActivate'];\n  authInfo: () => MaybeAsync<SdAuthInfo>;\n}\n","import { inject, Injectable, signal, Signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ISdAuthConfiguration, SD_AUTH_CONFIGURATION } from '../configurations';\nimport { normalizeAsync, resolveMaybeAsync } from '@sdcorejs/utils/models';\nimport { SdAuthInfo } from './auth.model';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Injectable({ providedIn: 'root' })\nexport class SdAuthService {\n  // Đăng nhập\n  // #signin = new Subject<void>();\n  // signin$?: Observable<void>;\n  getAuthInfo?: Signal<SdAuthInfo | undefined>;\n\n  // Đăng xuất\n  #signout = new Subject<void>();\n  signout$?: Observable<void>;\n\n  // Thay đổi mật khẩu\n  #changePassword = new Subject<void>();\n  changePassword$?: Observable<void>;\n  private readonly authConfiguration: ISdAuthConfiguration | null = inject(SD_AUTH_CONFIGURATION, { optional: true });\n\n  constructor() {\n    // this.#handleSignin();\n    this.#handleSignout();\n    this.#handleChangePassword();\n    const defaultUser = {\n      id: 'guest-id',\n      username: 'guest',\n      firstName: 'Guest',\n      email: 'guest@gmail.com',\n    };\n    if (this.authConfiguration?.guard?.authInfo) {\n      this.getAuthInfo = toSignal(normalizeAsync(this.authConfiguration.guard?.authInfo()), {\n        initialValue: defaultUser,\n      });\n    } else {\n      this.getAuthInfo = signal(defaultUser);\n    }\n  }\n\n  // #handleSignin = () => {\n  //   this.signin$ = this.#signin.asObservable();\n  // };\n\n  #handleSignout = () => {\n    this.signout$ = this.#signout.asObservable();\n  };\n\n  #handleChangePassword = () => {\n    this.changePassword$ = this.#changePassword.asObservable();\n  };\n  signout = () => {\n    if (this.authConfiguration?.action?.signout) {\n      resolveMaybeAsync(this.authConfiguration.action.signout()).then(() => {\n        this.#signout.next();\n      });\n    }\n  };\n\n  changePassword = () => {\n    if (this.authConfiguration?.action?.changePassword) {\n      resolveMaybeAsync(this.authConfiguration.action.changePassword()).then(() => {\n        this.#changePassword.next();\n      });\n    }\n  };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { ISdAuthConfiguration, SD_AUTH_CONFIGURATION } from '../configurations';\n\n@Injectable({ providedIn: 'root' })\nexport class SdAuthGuard implements CanActivate {\n  private readonly authConfiguration: ISdAuthConfiguration | null = inject(SD_AUTH_CONFIGURATION, { optional: true });\n  protected readonly router = inject(Router);\n\n  canActivate = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n    if (this.authConfiguration?.guard?.auth) {\n      return this.authConfiguration.guard.auth(route, state);\n    }\n    // Nếu chưa tích hợp Auth Guard thì pass canActive\n    return true;\n  };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { ISdAuthConfiguration, SD_AUTH_CONFIGURATION } from '../configurations';\n\n@Injectable({ providedIn: 'root' })\nexport class SdPortalGuard implements CanActivate {\n  private readonly authConfiguration: ISdAuthConfiguration | null = inject(SD_AUTH_CONFIGURATION, { optional: true });\n  protected readonly router = inject(Router);\n\n  canActivate = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n    if (this.authConfiguration?.guard?.portal) {\n      return this.authConfiguration.guard.portal(route, state);\n    }\n    // Nếu chưa tích hợp Portal Guard thì pass canActive\n    return true;\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}