{"version":3,"file":"toolbox-sso.mjs","sources":["../../../projects/toolbox/sso/sso-auth.service.ts","../../../projects/toolbox/sso/sso.service.ts","../../../projects/toolbox/sso/toolbox-sso.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { TbxSsoUserModel } from \"./sso-user.model\";\r\nimport { TbxSsoPermModel } from \"./sso-perm.model\";\r\n\r\n/**\r\n * Gets information from the ToolBox SSO API service regarding the current user\r\n * using Windows authentication.\r\n */\r\n@Injectable( { providedIn: \"root\" } )\r\nexport class TbxSsoAuthService\r\n{\r\n  /** The current user observable. */\r\n  private currentUserSubject =\r\n    new BehaviorSubject<TbxSsoUserModel | undefined>( undefined );\r\n\r\n  /** The observable that indicates if the user is authenticated. */\r\n  private isAuthenticatedSubject = new BehaviorSubject<boolean>( false );\r\n\r\n  /**\r\n   * Gets a value indicating whether the current user is authenticated which is\r\n   * determined by the values of ID or name of the current user.\r\n   */\r\n  public get isAuthenticated(): boolean\r\n  {\r\n    return this.isAuthenticatedSubject.value;\r\n  }\r\n\r\n  public get isValid(): boolean\r\n  {\r\n    const user = this.currentUserSubject.value;\r\n\r\n    const userIdValid = user?.userId != null && user?.userId > 0;\r\n    const userNameValid = user?.userName != null && user?.userName.length > 0;\r\n\r\n    return userIdValid || userNameValid;\r\n  }\r\n\r\n  /** Gets the permissions for the current user. */\r\n  public get permissions(): TbxSsoPermModel[]\r\n  {\r\n    return this.user?.permissions ?? [];\r\n  }\r\n\r\n  /** Gets the current user details. */\r\n  public get user(): TbxSsoUserModel | undefined\r\n  {\r\n    return this.currentUserSubject.value;\r\n  }\r\n\r\n  /** Sets the currently signed-in user. Usually called from the startup module */\r\n  public set user( user: TbxSsoUserModel | undefined )\r\n  {\r\n    this.currentUserSubject.next( user );\r\n    this.isAuthenticatedSubject.next( this.isValid );\r\n  }\r\n\r\n  /**\r\n   * Gets a value indicating whether the current user has the permission.\r\n   *\r\n   * @param permissionId - The permission number to check.\r\n   * @returns true if the user has the permission, false otherwise.\r\n   */\r\n  public hasPermission( permissionId: number | string ): boolean\r\n  {\r\n    return this.permissions.findIndex(\r\n      ( p: TbxSsoPermModel ) => p.value === permissionId.toString() ) !== -1;\r\n  }\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { TbxHttpClient, TbxUrlService } from \"@lacera/ngx-toolbox/http\";\r\n\r\nimport { TbxSsoUserModel } from \"./sso-user.model\";\r\n\r\n/**\r\n * Provides functions to get SSO user information from the server.\r\n */\r\n@Injectable( { providedIn: \"root\" } )\r\nexport class TbxSsoService\r\n{\r\n  private readonly apiService = inject( TbxHttpClient );\r\n  private readonly urlService = inject( TbxUrlService );\r\n  private internalSsoUrl = \"api/toolbox/sso/users\";\r\n\r\n  public get ssoUrl(): string { return this.internalSsoUrl; }\r\n  public set ssoUrl( value: string ) { this.internalSsoUrl = value; }\r\n\r\n  /**\r\n   * Gets a list of all SSO users.\r\n   * @param activeOnly Indicates wether to retrieve active only or all.\r\n   * @param filter Optional filter text.\r\n   * @returns An observable of type {@link TbxSsoUserModel}.\r\n   */\r\n  public getUsers( activeOnly = false, filter = \"\" ): Observable<TbxSsoUserModel[]>\r\n  {\r\n    const url = this.urlService.find( \"ToolBoxGetSsoUsersApi\" )?.url\r\n      ?? this.internalSsoUrl;\r\n\r\n    return this.apiService.get( url, { activeOnly, filter } );\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}