ngx-sp-auth 4.3.15 → 4.3.16
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-sp-auth.mjs","sources":["../../../projects/ngx-sp-auth/src/lib/auth-config.ts","../../../projects/ngx-sp-auth/src/lib/auth.module.ts","../../../projects/ngx-sp-auth/src/lib/models/infraIn2FaTypeId.ts","../../../projects/ngx-sp-auth/src/lib/models/infraInAuthTypeId.ts","../../../projects/ngx-sp-auth/src/lib/custom/token.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-storage.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-environment.service.ts","../../../projects/ngx-sp-auth/src/lib/services/indexed-db.service.ts","../../../projects/ngx-sp-auth/src/lib/storage/auth-storage.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-login.service.ts","../../../projects/ngx-sp-auth/src/lib/project/project-utils.service.ts","../../../projects/ngx-sp-auth/src/lib/auth.service.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu-services.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-menu-config.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-menu.service.ts","../../../projects/ngx-sp-auth/src/lib/services/pesquisa-telas-global.service.ts","../../../projects/ngx-sp-auth/src/lib/components/error-menu-not-allowed/error-menu-not-allowed.component.ts","../../../projects/ngx-sp-auth/src/lib/components/error-menu-not-allowed/error-menu-not-allowed.component.html","../../../projects/ngx-sp-auth/src/lib/models/login-os.model.ts","../../../projects/ngx-sp-auth/src/lib/components/login-os/login-os.component.ts","../../../projects/ngx-sp-auth/src/lib/components/login/login.component.ts","../../../projects/ngx-sp-auth/src/lib/components/login/login.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/versoes-modal/versoes-modal.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/versoes-modal/versoes-modal.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/menu-lateral.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/menu-lateral.component.html","../../../projects/ngx-sp-auth/src/lib/components/nova-senha/nova-senhacomponent.ts","../../../projects/ngx-sp-auth/src/lib/components/nova-senha/nova-senha.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/imenu.model.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/infrausuarioimg.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/navsubmenu-searchitem.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-infrausuarioimg.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-menu-item-structure.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-menu-lateral.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-menu-promise.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-navsubmenu.ts","../../../projects/ngx-sp-auth/src/lib/guards/auth-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/external-login-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/is-menu-allowed-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/login-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/login-os.guard.ts","../../../projects/ngx-sp-auth/src/lib/interceptors/auth-aplic.interceptor.ts","../../../projects/ngx-sp-auth/src/lib/interceptors/auth-infra.interceptor.ts","../../../projects/ngx-sp-auth/src/lib/auth.routes.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu-card/sub-menu-card.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/list/list.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/list/list.component.html","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/nav-tabs/nav-tabs.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/nav-tabs/nav-tabs.component.html","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/sub-menu.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/sub-menu.component.html","../../../projects/ngx-sp-auth/src/public-api.ts","../../../projects/ngx-sp-auth/src/ngx-sp-auth.ts"],"sourcesContent":["import { LogLevel, Configuration } from '@azure/msal-browser';\n\nconst isIE = false;\nconst hostAuthLogin = \"http://localhost:4200/auth/login\" ;\n\nexport const msalConfig: Configuration = {\n auth: {\n clientId: \"clientId\",\n authority: \"https://login.microsoftonline.com/tenantId\",\n redirectUri: hostAuthLogin + \"/\",\n postLogoutRedirectUri: hostAuthLogin,\n navigateToLoginRequestUrl: true\n },\n cache: {\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: isIE,\n },\n system: {\n loggerOptions: {\n loggerCallback: (logLevel, message, containsPii) => {\n console.log(message);\n },\n logLevel: LogLevel.Error, // .Verbose\n \n piiLoggingEnabled: false\n }\n }\n }\n","import { importProvidersFrom, NgModule } from '@angular/core';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { MsalGuard, MsalInterceptor, MsalModule } from '@azure/msal-angular';\nimport { InteractionType, PublicClientApplication } from '@azure/msal-browser';\nimport { msalConfig } from './auth-config';\n\n@NgModule({\n providers: [\n importProvidersFrom(\n MsalModule.forRoot(new PublicClientApplication(msalConfig), \n {\n // The routing guard configuration.\n interactionType: InteractionType.Redirect,\n authRequest: {\n scopes: [\n \"user.read\"\n ]\n }\n }, \n {\n // MSAL interceptor configuration.\n // The protected resource mapping maps your web API with the corresponding app scopes. If your code needs to call another web API, add the URI mapping here.\n interactionType: InteractionType.Redirect,\n protectedResourceMap: new Map([])\n }\n )),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: MsalInterceptor,\n multi: true\n },\n MsalGuard, // MsalGuard added as provider here\n ]\n})\nexport class AuthModule { }","import { IError } from \"ngx-sp-infra\";\n\nexport enum InfraIn2FaTypeId {\n Email = 1,\n Google = 2,\n Microsoft = 3\n}\n","import { IError } from \"ngx-sp-infra\";\n\nexport enum InfraInAuthTypeId {\n Local = 1,\n Azure = 2,\n LDAP = 3\n}\n","import { InjectionToken } from \"@angular/core\";\n\nimport { ICustomEnvironmentService } from \"./models/icustom-environment-service\";\nimport { ICustomLoginService } from \"./models/icustom-login-service\";\nimport { ICustomStorageService } from \"./models/icustom-storage-service\";\nimport { ICustomMenuService } from \"./models/icustom-menu-service\";\nimport { IMenuConfig } from \"./models/imenu-config\";\n\n// Token para o LibCustomEnvironmentService\nexport const LIB_CUSTOM_ENVIRONMENT_SERVICE = new InjectionToken<ICustomEnvironmentService>(\n 'LibCustomEnvironmentService'\n);\n\n// Token para o LibCustomStorageService\nexport const LIB_CUSTOM_STORAGE_SERVICE = new InjectionToken<ICustomStorageService>(\n 'LibCustomStorageService'\n);\n\n// Token para o LibCustomLoginService\nexport const LIB_CUSTOM_LOGIN_SERVICE = new InjectionToken<ICustomLoginService>(\n 'LibCustomLoginService'\n);\n\n// Token para o LibCustomMenuService\nexport const LIB_CUSTOM_MENU_SERVICE = new InjectionToken<ICustomMenuService>(\n 'LibCustomMenuService'\n);\n\n// Token para o LibMenuConfigService\nexport const LIB_MENU_CONFIG = new InjectionToken<IMenuConfig>(\n 'LibMenuConfigService'\n);\n\n","import { Inject, Injectable } from '@angular/core';\n\nimport { ICustomStorageService } from './models/icustom-storage-service';\nimport { LIB_CUSTOM_STORAGE_SERVICE } from './token';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LibCustomStorageService {\n\n constructor( \n @Inject(LIB_CUSTOM_STORAGE_SERVICE) private _customStorageService: ICustomStorageService\n ) { }\n\n // #region Métodos Customizadas para o Componente auth-storage.service.ts\n\n // Método executado no auth-storage.service.ts - método: constructor ()\n // Utilizado para inicializações diversas\n public storageConstructor(): void {\n this._customStorageService.storageConstructor();\n }\n\n // Método executado no auth-storage.service.ts - método: saveLocalInstance ()\n // Utilizado para salvar informações no localStorage\n public storageSaveLocalInstance(): void {\n this._customStorageService.storageSaveLocalInstance();\n }\n\n // Método executado no auth-storage.service.ts - método: logout ()\n // Utilizado para inicializar informações no localStorage na logout da aplicação\n public storageLogout(): void {\n this._customStorageService.storageLogout();\n }\n\n // Método executado no auth-storage.service.ts - método: reCheckLogin ()\n // Utilizado para inicializações diversas quando o Login exeutado via Pré Portal\n public storageInitializeAutoStorage(): void {\n this._customStorageService.storageInitializeAutoStorage();\n }\n\n // #endregion Métodos Customizadas para o Componente auth-storage.service.ts\n\n}\n","import { Inject, Injectable } from \"@angular/core\";\n\nimport { ICustomEnvironmentService } from \"./models/icustom-environment-service\";\nimport { LIB_CUSTOM_ENVIRONMENT_SERVICE } from \"./token\";\n\n@Injectable(\n { providedIn: 'root' }\n)\n\n/**Service responsável por pegar as opções do menu do projeto em que está sendo utilizada*/\nexport class LibCustomEnvironmentService {\n\n constructor( \n @Inject(LIB_CUSTOM_ENVIRONMENT_SERVICE) private _customEnvironmentService: ICustomEnvironmentService\n ) { }\n\n // URLs que necessitam de autenticação da infra.\n public get needsAuthInfra(): Map<string, string[]> {\n return this._customEnvironmentService.needsAuthInfra\n };\n\n // URLs que necessitam de autenticação do usuário para funcionar.\n public get needsAuthAplic(): Map<string, string[]> {\n return this._customEnvironmentService.needsAuthAplic;\n };\n\n public get production(): boolean {\n return this._customEnvironmentService.production;\n };\n\n public get hostName(): string {\n return this._customEnvironmentService.hostName;\n };\n\n public get product(): string {\n return this._customEnvironmentService.product;\n };\n\t\n\tpublic get Sp2LocalhostInfra2AuthWS(): string {\n return this._customEnvironmentService.Sp2LocalhostInfra2AuthWS\n };\n\n\tpublic get Sp2LocalhostInfra2LoginWS(): string {\n return this._customEnvironmentService.Sp2LocalhostInfra2LoginWS\n };\n\n public get Sp2LocalhostWS(): string {\n return this._customEnvironmentService.Sp2LocalhostWS;\n };\n\n\tpublic get SpInfra2AuthWS(): string {\n return this._customEnvironmentService.SpInfra2AuthWS;\n };\n\n\tpublic get SpInfra2LoginWS(): string {\n return this._customEnvironmentService.SpInfra2LoginWS;\n };\n\n public get SpInfra2ErpWS(): string {\n return this._customEnvironmentService.SpInfra2ErpWS;\n };\n}\n\n","import { Injectable } from '@angular/core';\nimport { deleteDB, IDBPDatabase, openDB } from 'idb';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\n\n/**\n * Tipo estruturado que deve ser enviado e recebido quando utilizar o armazenamento de valores no IndexedDB\n*/\nexport type ObjectToStore<T> = {\n /** Valor da chave-única para diferenciar entre outros valores salvos */\n key: string;\n\n /** Contexto da tela em que a implementação está inserida */\n context: string;\n\n /**\n * Corpo do que será de fato armazenado, filtros, formulários, etc.\n * O tipo usado é genérico e deve ser informado caso deseje utilizar este tipo no seu componente.\n */\n payload?: T;\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IndexedDBService {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _restored?: ObjectToStore<any>;\n private _dbName: string = \"Sp_Filtros_\";\n // #endregion PRIVATE\n\n protected database?: IDBDatabase;\n protected request?: IDBPDatabase<unknown>;\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor( private _customEnvironment: LibCustomEnvironmentService ) {\n if (!window.indexedDB) {\n alert(\"Seu navegador não suporta uma versão estável do IndexedDB. Salvamento de filtros em sessão não estará disponível.\");\n }\n\n this._dbName = `Sp_${ _customEnvironment.product ?? 'Modelo' }_Filtros`;\n }\n\n\n // #region ==========> ACTIONS <==========\n\n // #region ADD\n\n /**\n * Cria um registro dentro de um objectStore.\n * O valor a ser inserido precisa ser um objeto com pelo **menos a propriedade `key`**, ela é a nossa *chave-primária* dos registros\n * \n * @param value Valor a ser inserido\n */\n async add(value: ObjectToStore<any>): Promise<void> {\n const db = await openDB(this._dbName, 1);\n\n try {\n await db.add('filters', value);\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion ADD\n\n // #region GET\n\n\n /**\n * Busca um valor na base dentro de um objectStore.\n * \n * @param storeName Nome do objectStore\n * @param key Valor da chave única\n * @returns Promise<> com o valor encontrado ou undefined se não encontrar\n */\n async get(key: string): Promise<ObjectToStore<any>> {\n const db = await openDB(this._dbName, 1);\n\n try {\n return await db.get('filters', key);\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion GET\n\n // #region UPDATE\n\n /**\n * Atualiza o valor de um registro dentro de um objectStore.\n * \n * @param value Valor atualizado\n */\n async update(value: ObjectToStore<any>): Promise<void> {\n const db = await openDB(this._dbName, 1);\n\n try {\n await db.put('filters', value)\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion UPDATE\n\n // #region DELETE\n\n /**\n * Exclui um registro na base dentro de um objectStore.\n * \n * @param key Valor da chave única\n */\n async delete(key: string): Promise<void> {\n const db = await openDB(this._dbName, 1);\n\n try {\n await db.delete('filters', key);\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion DELETE\n\n // #endregion ==========> ACTIONS <==========\n\n\n // #region ==========> UTILS <==========\n\n /**\n * Inicializa as configurações iniciais do IndexedDB e já cria o objectStore que será utilizado caso não exista.\n * \n * O object store que será criado terá sua chave inline na propriedade `key` e o índice será a propriedade `context`, portanto todos os valores que forem inseridos **DEVEM** ser um objeto com pelo menos a propriedade `key` e `context`.\n * Deve ser chamado no constructor do seu componente para garantir inicialização correta pelo componente\n * \n * @param dbName Nome da base de dados que será usada\n */\n public async initializeDatabase() {\n this.request = await openDB(this._dbName, 1, {\n upgrade (db) {\n\n // Criar objectStore se não houver um mesmo com este nome\n if (!db.objectStoreNames.contains('filters')) {\n const store = db.createObjectStore('filters', { keyPath: 'key' });\n store.createIndex('context', 'context');\n }\n\n },\n blocked() {\n // notify user / log: another tab has old version open\n console.warn('IndexedDB blocked — feche outras abas');\n },\n blocking() {\n // this instance is blocking a future version request\n console.warn('IndexedDB blocking — considere fechar esta conexão');\n }\n })\n }\n\n /**\n * Exclui uma database do IndexedDB com base no nome.\n * \n * @param name Nome da database\n */\n public async deleteDatabase(): Promise<void> {\n // Fecha a conexão persistente local, se existir, antes de tentar excluir a DB\n if (this.request) {\n try {\n this.request.close();\n }\n catch (err) {\n console.warn('deleteDatabase() => erro ao fechar conexão local', err);\n }\n\n this.request = undefined;\n }\n\n return await deleteDB(this._dbName);\n }\n\n\n /**\n * Fecha a conexão persistente (se existir) sem excluir a database.\n * Útil para cenários onde se precisa liberar a conexão antes de chamar `deleteDatabase()`.\n */\n public async closeOpenConnection(): Promise<void> {\n if (this.request) {\n try {\n this.request.close();\n }\n catch (err) {\n console.warn('closeOpenConnection() => erro ao fechar conexão', err);\n }\n\n this.request = undefined;\n }\n }\n\n\n\n /**\n * Valida se já existe um valor cadastrado na base com a chave-única que foi informada, se houver retorna ele, caso contrário cria um registro placeholder para poder atualizar depois.\n * \n * @param key Valor da chave única\n * @param value (opcional) Valor placeholder caso não exista um valor previamente criado\n * \n * @returns Estrutura encontrada no objectStore com a chave-única informada\n */\n public async validate(key: string, value?: ObjectToStore<any> | null) {\n\n // Valida se já existe registro no DB local\n\t\tthis._restored = await this.get(key);\n\t\t\n\t\tif (!this._restored && value) {\n\t\t\t// Se não existir nada, inicializa um registro placeholder dentro do objectStore existente\n\t\t\tawait this.add(value)\n\t\t}\n\t\telse {\n // Se encontrar valor retorna apenas o payload com os dados que serão usados na tela\n return this._restored?.payload;\n\t\t}\n }\n\n // #endregion ==========> UTILS <==========\n\n}\n","import { HttpBackend, HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, take, tap } from 'rxjs';\n\nimport { Payload } from './../models/payload';\n\nimport { Utils } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\nimport { LibCustomStorageService } from '../custom/lib-custom-storage.service';\nimport { RetToken } from '../models/ret-token';\nimport { Token } from '../models/token';\nimport { IndexedDBService } from '../services/indexed-db.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthStorageService {\n \n private readonly _BASE_URL: string = ''; // SpInfra2WS\n\n private readonly __local_key = 'user_auth_v6';\n\n // indica se objeto já está marcado para salvar os dados no local storage.\n private __isSaving: boolean = false;\n\n /** Se ainda estamos com uma função rodando para verificar o login do usuário */\n private __isCheckingAuth: boolean = false;\n\n /* Variável para contornar o erro >>> NG0200: Circular dependency\" */\n private _httpClient: HttpClient;\n\n constructor(\n private _httpBackend: HttpBackend,\n private _customStorageService: LibCustomStorageService,\n private _indexedDBService: IndexedDBService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) {\n this._httpClient = new HttpClient(_httpBackend);\n \n this._BASE_URL = `${ _customEnvironmentService.SpInfra2LoginWS }/LoginSisproERP`; // SpInfra2WS\n\n this._BASE_URL = !_customEnvironmentService.production ? this._BASE_URL : `${_customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`;\n\n // Método com customizações para inicializações da storage\n this._customStorageService.storageConstructor()\n\n const expectedLocalAuthStorage = localStorage.getItem(this.__local_key);\n\n if (expectedLocalAuthStorage) {\n const localAuthStorage = JSON.parse(expectedLocalAuthStorage) as AuthStorageService;\n\n try {\n this.__ip = localAuthStorage.__ip;\n this.__tenantId = localAuthStorage.__tenantId;\n this.__infraUsuarioId = localAuthStorage.__infraUsuarioId;\n this.__infraEstabId = localAuthStorage.__infraEstabId;\n this.__infraEstabNome = localAuthStorage.__infraEstabNome;\n this.__infraEmpresaId = localAuthStorage.__infraEmpresaId;\n this.__infraEmpresaNome = localAuthStorage.__infraEmpresaNome;\n this.__user = localAuthStorage.__user;\n this.__userName = localAuthStorage.__userName;\n this.__tokenPayload = localAuthStorage.__tokenPayload;\n this.__authToken = localAuthStorage.__authToken;\n this.__dominio = localAuthStorage.__dominio;\n this.__isExternalLogin = localAuthStorage.__isExternalLogin;\n this.__infraInAuthTypeId = localAuthStorage.__infraInAuthTypeId;\n this.__infraIn2FaTypeId = localAuthStorage.__infraIn2FaTypeId;\n this.__is2FaEnabled = localAuthStorage.__is2FaEnabled;\n this.__azureTenantId = localAuthStorage.__azureTenantId;\n this.__azureClientId = localAuthStorage.__azureClientId;\n\n this.startLoginCheck();\n } catch (error) {\n this.logout();\n\n return;\n }\n\n }\n\n }\n\n // #region GETTERS/SETTERS\n\n public isLoggedInSub = new BehaviorSubject<boolean>(false);\n\n //ip\n private __ip: string = \"\";\n\n public get ip(): string {\n return this.__ip;\n }\n\n public set ip(value: string) {\n this.__ip = value;\n\n if (this.isLoggedInSub.value) {\n this.__saveLocalInstance();\n }\n\n }\n\n //tenantId\n private __tenantId: number = 0;\n\n public get tenantId(): number {\n return this.__tenantId;\n }\n\n public set tenantId(value: number) {\n this.__tenantId = value;\n\n this.__saveLocalInstance();\n }\n\n //infraUsuarioId\n private __infraUsuarioId: string = \"\";\n\n public get infraUsuarioId(): string {\n return this.__infraUsuarioId;\n }\n\n public set infraUsuarioId(value: string) {\n this.__infraUsuarioId = value;\n\n this.__saveLocalInstance();\n }\n\n // EstabelecimentoID\n private __infraEstabId: string = \"\";\n\n public get infraEstabId(): string {\n return this.__infraEstabId;\n }\n\n public set infraEstabId(value: string) {\n this.__infraEstabId = value;\n\n this.__saveLocalInstance();\n }\n\n // NomeEstabelecimento\n private __infraEstabNome: string = \"\";\n\n public get infraEstabNome(): string {\n return this.__infraEstabNome;\n }\n\n public set infraEstabNome(value: string) {\n this.__infraEstabNome = value;\n\n this.__saveLocalInstance();\n }\n\n // EmpresaID\n private __infraEmpresaId: string = \"\";\n\n public get infraEmpresaId(): string {\n return this.__infraEmpresaId;\n }\n\n public set infraEmpresaId(value: string) {\n this.__infraEmpresaId = value;\n\n this.__saveLocalInstance();\n }\n\n // NomeEmpresa\n private __infraEmpresaNome: string = \"\";\n\n public get infraEmpresaNome(): string {\n return this.__infraEmpresaNome;\n }\n\n public set infraEmpresaNome(value: string) {\n this.__infraEmpresaNome = value;\n\n this.__saveLocalInstance();\n }\n\n //user\n private __user: string = \"\";\n\n public get user(): string {\n return this.__user;\n }\n\n public set user(value: string) {\n this.__user = value;\n\n this.__saveLocalInstance();\n }\n\n //username\n private __userName: string = \"\";\n\n public get userName(): string {\n return this.__userName;\n }\n\n public set userName(value: string) {\n this.__userName = value;\n\n this.__saveLocalInstance();\n }\n\n //tokenPayload\n private __tokenPayload!: Payload;\n\n public get tokenPayload(): Payload {\n return this.__tokenPayload;\n }\n\n public set tokenPayload(value: Payload) {\n this.__tokenPayload = value;\n\n this.__saveLocalInstance();\n }\n\n //authToken\n private __authToken: string = \"\";\n\n public get authToken(): string {\n return this.__authToken;\n }\n\n public set authToken(value: string) {\n this.__authToken = value;\n\n if (this.__authToken != '') {\n // Utiliza-se a função dos Utils para pegar o segundo valor do Token, separados por um '.'\n // e define o __tokenPayload como o objeto resultante do JSON.parse(payloadJson)\n const payloadJson: string = Utils.b64DecodeUnicode(this.__authToken.split('.')[1]);\n\n this.__tokenPayload = JSON.parse(payloadJson);\n\n this.startLoginCheck();\n }\n\n this.__saveLocalInstance();\n }\n\n /** Domínio */\n private __dominio: string = \"\";\n\n public get dominio(): string {\n return this.__dominio;\n }\n\n public set dominio(value: string) {\n this.__dominio = value;\n\n this.__saveLocalInstance();\n }\n\n //url para redirecionamento\n private __UrlRedirect: string = \"/\";\n\n public get urlRedirect(): string {\n return this.__UrlRedirect;\n }\n\n public set urlRedirect(value: string) {\n this.__UrlRedirect = value;\n }\n\n //indica Login Externo\n private __isExternalLogin: boolean = false;\n\n public get isExternalLogin(): boolean {\n return this.__isExternalLogin;\n }\n\n public set isExternalLogin(value: boolean) {\n this.__isExternalLogin = value;\n\n this.__saveLocalInstance();\n }\n\n /** Se é para ignorar o método reCheckLogin */\n private __ignoreCheckLogin: boolean = false;\n\n public get ignoreCheckLogin(): boolean {\n return this.__ignoreCheckLogin;\n }\n\n public set ignoreCheckLogin(value: boolean) {\n this.__ignoreCheckLogin = value;\n\n this.__saveLocalInstance();\n }\n\n //infraInAuthTypeId\n private __infraInAuthTypeId: number = 0;\n\n public get infraInAuthTypeId(): number {\n return this.__infraInAuthTypeId;\n }\n\n public set infraInAuthTypeId(value: number) {\n this.__infraInAuthTypeId = value;\n\n this.__saveLocalInstance();\n }\n\n //infraIn2FaTypeId\n private __infraIn2FaTypeId: number | null | undefined = null;\n\n public get infraIn2FaTypeId(): number | null | undefined {\n return this.__infraIn2FaTypeId;\n }\n\n public set infraIn2FaTypeId(value: number | null | undefined) {\n this.__infraIn2FaTypeId = value;\n\n this.__saveLocalInstance();\n }\n\n //is2FaEnabled\n private __is2FaEnabled: boolean = false;\n\n public get is2FaEnabled(): boolean {\n return this.__is2FaEnabled;\n }\n\n public set is2FaEnabled(value: boolean) {\n this.__is2FaEnabled = value;\n\n this.__saveLocalInstance();\n }\n\n // azureTenantId\n private __azureTenantId: string = \"\";\n\n public get azureTenantId(): string {\n return this.__azureTenantId;\n }\n\n public set azureTenantId(value: string) {\n this.__azureTenantId = value;\n\n this.__saveLocalInstance();\n }\n\n // azureClientId\n private __azureClientId: string = \"\";\n\n public get azureClientId(): string {\n return this.__azureClientId;\n }\n\n public set azureClientId(value: string) {\n this.__azureClientId = value;\n\n this.__saveLocalInstance();\n }\n\n // #endregion GETTERS/SETTERS\n\n private async __saveLocalInstance(): Promise<void> {\n\n if (this.__isSaving) {\n return;\n }\n\n this.__isSaving = true;\n\n localStorage.setItem(this.__local_key, this.toJson());\n\n // Método com customizações para salvar informações na storage\n this._customStorageService.storageSaveLocalInstance();\n\n this.__notSaving();\n }\n\n private async __notSaving(): Promise<void> {\n this.__isSaving = false;\n }\n\n /**\n * Salva a instância como JSON seguro, ignorando objetos que não podem se tornar um JSON.\n */\n public toJson(): string {\n const json = `\n {\n \"__ip\": \"${this.ip}\",\n \"__tenantId\": ${this.tenantId},\n \"__infraUsuarioId\": \"${this.infraUsuarioId}\",\n \"__infraEstabId\": \"${this.infraEstabId}\",\n \"__infraEstabNome\": \"${this.infraEstabNome}\",\n \"__infraEmpresaId\": \"${this.infraEmpresaId}\",\n \"__infraEmpresaNome\": \"${this.infraEmpresaNome}\",\n \"__user\": \"${this.user}\",\n \"__userName\": \"${this.userName}\",\n \"__authToken\": \"${this.authToken}\",\n \"__tokenPayload\": ${JSON.stringify(this.tokenPayload)},\n \"__dominio\": \"${this.dominio}\",\n \"__isExternalLogin\": ${this.isExternalLogin},\n \"__infraInAuthTypeId\": ${this.infraInAuthTypeId},\n \"__infraIn2FaTypeId\": ${this.infraIn2FaTypeId},\n \"__is2FaEnabled\": ${this.is2FaEnabled},\n \"__azureTenantId\": \"${this.azureTenantId}\",\n \"__azureClientId\": \"${this.azureClientId}\"\n }\n `;\n\n return json;\n }\n\n /** Inicia a verificação do login. */\n public startLoginCheck() {\n\n if (!this.__isCheckingAuth) {\n this.reCheckLogin();\n }\n\n }\n\n /**\n * Verifica a cada diferença de tempo entre a data atual e a data do token.\n */\n public async reCheckLogin() {\n\n if (this.__authToken === undefined || this.__authToken === '' || this.authToken === null || this.authToken === '') {\n this.__isCheckingAuth = false;\n return;\n }\n\n this.__isCheckingAuth = true;\n\n let isRenewToken: boolean = false;\n let nowDate: number = Math.round(Date.now() / 1000);\n\n if (this.tokenPayload.exp <= nowDate) {\n isRenewToken = true;\n }\n\n let leftTime: number = this.tokenPayload.exp - nowDate\n\n if (leftTime <= 0) {\n isRenewToken = true;\n }\n\n // TODO: Alterar aqui para não deslogar e avisar o usuário para logar denovo.\n if (isRenewToken) {\n const response = await this.getNewToken();\n\n if (response !== undefined && response !== null && response != '') {\n this.authToken = response;\n nowDate = Math.round(Date.now() / 1000);\n leftTime = this.tokenPayload.exp - nowDate;\n } else {\n this.logout();\n\n return;\n }\n\n }\n\n if (this.ignoreCheckLogin) {\n this.ignoreCheckLogin = false;\n } else {\n // Método com customizações para inicializações da AutoStorage\n this._customStorageService.storageInitializeAutoStorage();\n }\n\n this.isLoggedInSub.next(true);\n\n setTimeout(this.reCheckLogin.bind(this), leftTime * 1000);\n }\n\n public logout(): void {\n this.__isCheckingAuth = false;\n this.isLoggedInSub.next(false);\n this.__UrlRedirect = \"/\";\n this.__ip = \"\";\n this.__tenantId = 0;\n this.__infraUsuarioId = \"\";\n this.__infraEstabId = \"\";\n this.__infraEstabNome = \"\";\n this.__infraEmpresaId = \"\";\n this.__infraEmpresaNome = \"\";\n this.__user = \"\";\n this.__userName = \"\";\n this.__authToken = \"\";\n this.__dominio = \"\";\n this.__tokenPayload = {} as Payload;\n this.__isExternalLogin = false;\n this.__infraInAuthTypeId = 0;\n this.__infraIn2FaTypeId = null;\n this.__is2FaEnabled = false;\n this.__azureTenantId = \"\";\n this.__azureClientId = \"\";\n\n localStorage.removeItem(this.__local_key);\n\n // Limpa o armazenamento local do navegador que contém os filtros de um produto específico\n // Fecha a conexão local (se houver) antes de excluir a database para evitar o callback 'blocking'\n this._indexedDBService.closeOpenConnection()\n .then(() => this._indexedDBService.deleteDatabase())\n .catch((err) => console.warn('logout() => falha ao limpar conexão', err) );\n\n // Método com customizações para finalizações da storage\n this._customStorageService.storageLogout();\n }\n\n private getNewTokenBack(): Observable<RetToken> {\n let token: Token = {\n domain: this.__dominio,\n user: this.__user,\n tenantId: this.tenantId,\n token: this.authToken,\n infraUsuarioId: this.__infraUsuarioId,\n userName: this.__userName\n }\n\n const url = `${this._BASE_URL}/GetNewToken`;\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json')\n .set('Authorization',\n `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}`\n );\n\n return this._httpClient\n .post<RetToken>(url, token, { 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n }),\n );\n\n }\n\n private getNewToken(): Promise<any> {\n\n return new Promise((resolve, reject) => {\n this.getNewTokenBack().subscribe({\n next: response => {\n resolve(response.Token);\n },\n error: error => {\n reject(error);\n }\n });\n });\n\n }\n\n /**\n * Renova o Token quando este estiver vencido.\n */\n public async renewToken() {\n\n if (!this.isLoggedInSub || this.__authToken === undefined || this.__authToken === '' || this.authToken === null || this.authToken === '') {\n return;\n }\n\n let isRenewToken: boolean = false;\n let nowDate: number = Math.round(Date.now() / 1000);\n\n if (this.tokenPayload.exp <= nowDate) {\n isRenewToken = true;\n }\n\n let leftTime: number = this.tokenPayload.exp - nowDate\n\n if (leftTime <= 0) {\n isRenewToken = true;\n }\n\n if (isRenewToken) {\n const response = await this.getNewToken();\n\n if (response !== undefined && response !== null && response != '') {\n this.authToken = response;\n }\n\n }\n\n }\n\n private isPrePortal(): boolean {\n\n // Identifica se a origem é PrePortal\n var url = new URL(window.location.href);\n var isPrePortal = url.searchParams.get(\"PrePortal\");\n\n if (isPrePortal != null) {\n\n if (isPrePortal.toString() == \"true\") {\n return true\n } else {\n return false\n }\n\n } else {\n return false\n }\n\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ICustomLoginService } from './models/icustom-login-service';\nimport { LIB_CUSTOM_LOGIN_SERVICE } from './token';\n\n@Injectable(\n { providedIn: 'root' }\n)\n\nexport class LibCustomLoginService {\n \n constructor( \n @Inject(LIB_CUSTOM_LOGIN_SERVICE) private _customLoginService: ICustomLoginService\n ) { }\n\n // #region Propriedade Customizadas para o Componente login.component.ts\n\n public get loginTitle(): string {\n return this._customLoginService.loginTitle;\n }\n\n public get loginSubtitle(): string {\n return this._customLoginService.loginSubtitle;\n }\n\n public get loginBackground(): string {\n return this._customLoginService.loginBackground;\n }\n\n public get loginLogotipo(): string {\n return this._customLoginService.loginLogotipo;\n }\n\n public get loginAltLogotipo(): string {\n return this._customLoginService.loginAltLogotipo;\n }\n\n public get loginPageTitle(): string {\n return this._customLoginService.loginPageTitle;\n }\n\n public get loginDesenvDomain(): string {\n return this._customLoginService.loginDesenvDomain;\n }\n\n public get loginDesenvUser(): string {\n return this._customLoginService.loginDesenvUser;\n }\n\n public get loginDesenvPassword(): string {\n return this._customLoginService.loginDesenvPassword;\n }\n\n // #endregion Propriedade Customizadas para o Componente login.component.ts\n\n // #region Métodos Customizadas para o Componente auth.service.ts\n\n /**\n * Método executado no auth.service.ts - método: login ()\n * Utilizado para inicializações diversas\n */\n public authLogin(): void {\n this._customLoginService.authLogin();\n }\n\n /**\n * Método executado no auth.service.ts - método: logout ()\n * Utilizado para inicializações diversas\n */\n public authLogout(): void {\n this._customLoginService.authLogout();\n }\n\n /**\n * Método executado no auth.service.ts - método: login ()\n * Utilizado para informar o redirecionamento para a tela inicial após o login ok\n * \n * @param router Objeto de Router que será utilizado\n */\n public authNavigateToPage(router: Router): void {\n this._customLoginService.authNavigateToPage(router);\n }\n\n // #endregion Métodos Customizadas para o Componente auth.service.ts\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CheckUrlAndMethodService, MessageService, Utils } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\nimport { AuthStorageService } from '../storage/auth-storage.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProjectUtilservice {\n\n constructor(\n private router: Router,\n private authStorageService: AuthStorageService,\n private checkUrlAndMethodService: CheckUrlAndMethodService,\n private messageService: MessageService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) { }\n\n // Exibe a mensagem de erro de uma requisição http\n public showHttpError(error: any) {\n\n if (error.error instanceof ErrorEvent) {\n // Erro ocorreu no lado do cliente\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n } else {\n // Erro ocorreu no lado do servidor\n let isUnauthorizedAccess = error.status === 401;\n\n if (isUnauthorizedAccess) {\n let isFromAplic = this.checkUrlAndMethodService.needsAuthRequest(error.url, \"*\", this._customEnvironmentService.needsAuthAplic);\n\n if (isFromAplic) {\n // Remove a autenticação do usuário.\n this.authStorageService.isLoggedInSub.next(false);\n this.authStorageService.urlRedirect = \"/\";\n\n let promise = this.router.navigate([\"/auth/login\"]);\n\n promise.then(this.showExpiredAccess.bind(this));\n } else {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n }\n\n } else {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n }\n\n }\n\n }\n\n // Exibe a mensagem de erro de uma requisição HTTP em caso de lógica integrada OS\n public showHTTPErrorOS(error: any) {\n\n if (error.error instanceof ErrorEvent) {\n // Erro ocorreu no lado do cliente\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n } else {\n // Erro ocorreu no lado do servidor\n let isUnauthorizedAccess = error.status === 401;\n\n if (isUnauthorizedAccess) {\n let isFromAplic = this.checkUrlAndMethodService.needsAuthRequest(error.url, \"*\", this._customEnvironmentService.needsAuthAplic);\n\n if (isFromAplic) {\n // Remove a autenticação do usuário.\n this.authStorageService.isLoggedInSub.next(false);\n this.authStorageService.urlRedirect = \"/\";\n\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n } else {\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n }\n\n } else {\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n }\n\n }\n\n }\n\n // Mostra uma mensagem de sessão expirada.\n private showExpiredAccess(navigationResult: boolean) {\n\n if (navigationResult) {\n this.messageService.showAlertWarning(\"Sessão expirada, logue-se novamente.\");\n }\n\n }\n\n // Obtém o hostName\n\tpublic getHostName(): string {\n\t\treturn this._customEnvironmentService.hostName\n\t}\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Observable } from 'rxjs';\nimport { map, take, tap } from 'rxjs/operators';\n\nimport { Code2Fa } from './models/code-2fa';\nimport { ForgottenPasswordForm } from './models/forgotten-password-form';\nimport { InfraIn2FaTypeId } from './models/infraIn2FaTypeId';\nimport { InfraInAuthTypeId } from './models/infraInAuthTypeId';\nimport { Login } from './models/login';\nimport { LoginForm } from './models/login-form';\nimport { NovaSenhaForm } from './models/nova-senha-form';\nimport { PasswordRecup } from './models/password-recup';\nimport { Payload } from './models/payload';\nimport { RetAutenthication } from './models/ret-autenthication';\nimport { RetLogin } from './models/ret-login';\n\nimport { IpServiceService, RetError } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from './custom/lib-custom-environment.service';\nimport { LibCustomLoginService } from './custom/lib-custom-login.service';\nimport { ProjectUtilservice } from './project/project-utils.service';\nimport { IndexedDBService } from './services/indexed-db.service';\nimport { AuthStorageService } from './storage/auth-storage.service';\n@Injectable(\n { providedIn: 'root' }\n)\n\nexport class AuthService {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _pendingWarning: string | null = null;\n \n private readonly _BASE_URL: string = ''; // SpInfra2WS\n private readonly _AUTH_BASE_URL: string = ''; // SpInfra2AuthWS\n private readonly _BASE_OS_URL: string = ''; // SpInfra2LoginWS\n\n private readonly _HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');\n private ip: string = \"undefined\";\n private city: string = \"undefined\";\n private state: string = \"undefined\";\n private country: string = \"undefined\";\n\n // #endregion PRIVATE\n\n // #endregion ==========> PROPERTIES <==========\n\n constructor(\n private _httpClient: HttpClient,\n private _router: Router,\n private _authStorageService: AuthStorageService,\n private _ipServiceService: IpServiceService,\n private _customLoginService: LibCustomLoginService,\n private _projectUtilservice: ProjectUtilservice,\n private _customEnvironmentService: LibCustomEnvironmentService,\n private _indexedDBService: IndexedDBService\n ) {\n this._BASE_URL = `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginSisproERP`; // SpInfra2WS\n this._AUTH_BASE_URL = `${ this._customEnvironmentService.SpInfra2AuthWS }/Auth`; // SpInfra2AuthWS\n this._BASE_OS_URL = `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginIntegradoOS`; // SpInfra2LoginWS\n\n this._BASE_URL = !this._customEnvironmentService.production ? this._BASE_URL : `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginSisproERP`;\n this._AUTH_BASE_URL = !this._customEnvironmentService.production ? this._AUTH_BASE_URL : `${ this._customEnvironmentService.SpInfra2AuthWS }/Auth`;\n this._BASE_OS_URL = !this._customEnvironmentService.production ? this._BASE_OS_URL : `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginIntegradoOS`;\n\n this.getParms();\n }\n\n // #region ==========> SERVICE METHODS <==========\n\n // #region GET\n\n private getParms(): void {\n this.ip = \"undefined\";\n\n this._ipServiceService.getIPAddress().subscribe({\n next: (res: any) => {\n this.ip = res.ip;\n },\n error: (error: any) => {\n },\n });\n\n this.city = \"undefined\";\n this.state = \"undefined\";\n this.country = \"undefined\";\n\n this._ipServiceService.getDataUser().subscribe({\n next: (res: any) => {\n this.city = res.city;\n this.state = res.region_code;\n this.country = res.country_name;\n },\n error: (error: any) => {\n },\n });\n\n }\n\n private getHostName(): string {\n let product: string = window.location.pathname;\n\n let index: number = product.indexOf(\"/auth/login\");\n\n if (index != -1) {\n product = product.substring(0, index);\n } else {\n product = \"\";\n }\n\n return this._projectUtilservice.getHostName() + product; }\n\n // #endregion GET\n\n // #region POST\n\n /** Obtém o método de autenticação\n * @param domain Domínio do login\n * @returns Observable com os dados do método de autenticação, seja erro ou sucesso\n */\n public getAuthentication(domain: string): Observable<RetAutenthication> {\n \n const params = new HttpParams()\n .set('domain', domain)\n \n const url = `${ this._AUTH_BASE_URL }/GetAuthentication`;\n\n const headers = this._HTTP_HEADERS;\n \n return this._httpClient\n .post<RetAutenthication>(url, null , { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n \n localStorage.setItem('configServerUser', response.User);\n localStorage.setItem('configServerPassword', response.Password);\n\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.dominio = response.Domain;\n this._authStorageService.infraInAuthTypeId = response.InfraInAuthTypeId;\n this._authStorageService.infraIn2FaTypeId = response.InfraIn2FaTypeId;\n this._authStorageService.is2FaEnabled = response.Is2FaEnabled;\n this._authStorageService.azureTenantId = response.AzureTenantId;\n this._authStorageService.azureClientId = response.AzureClientId;\n\n this._authStorageService.tokenPayload = {} as Payload;\n })\n \n );\n }\n\n /** Realiza o login no sistema\n * @param login Informações do formulário de login\n * @returns Observable com os dados do login realizado, seja erro ou sucesso\n */\n public login(domain: string, user: string, password: string): Observable<RetLogin> {\n \n let login: Login = {\n usuario: user,\n senha: password\n }\n\n const params = new HttpParams()\n\n .set('dominio', domain)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${ this._ipServiceService.getDataBrowserUser().browser } - ${ this._ipServiceService.getDataBrowserUser().so }`)\n .set('localization', `${ this.city }, ${ this.state }, ${ this.country }`)\n .set('infraInAuthTypeId', this._authStorageService.infraInAuthTypeId)\n .set('infraIn2FaTypeId', this._authStorageService.infraIn2FaTypeId!)\n .set('is2FaEnabled', this._authStorageService.is2FaEnabled);\n\n const url = `${ this._BASE_URL }/ValidateLogin`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n // Limnpa o armazenamento local do navegador que contém os filtros de um produto específico (com base na prop 'product' do environment)\n this._indexedDBService.closeOpenConnection()\n .then(() => this._indexedDBService.deleteDatabase())\n .catch((err) => console.warn('login() => falha ao limpar conexão', err) );\n\n if (response.FeedbackMessage != \"\") {\n return;\n }\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n if (response.InitializePassword) {\n //Inicializar password\n this._authStorageService.logout();\n\n } else if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n //Inicializar Autenticação Local 2 Fatores via Email\n this._authStorageService.logout();\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n this._authStorageService.infraInAuthTypeId = InfraInAuthTypeId.Local;\n this._authStorageService.infraIn2FaTypeId = InfraIn2FaTypeId.Email;\n this._authStorageService.is2FaEnabled = true;\n } else {\n this._authStorageService.ignoreCheckLogin = true;\n\n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n\n // Método com customizações para inicializações do Login\n this._customLoginService.authLogin();\n\n if (this._authStorageService.urlRedirect == '' || this._authStorageService.urlRedirect == '/' || this._authStorageService.urlRedirect == '/auth/login') {\n // Método com customizações para redirecionamento da tela inicial após login ok\n this._customLoginService.authNavigateToPage(this._router);\n } else {\n this._router.navigate([this._authStorageService.urlRedirect]);\n }\n\n this._authStorageService.urlRedirect = \"/\";\n }\n\n })\n );\n }\n\n /** Realiza o login no sistema (Azure)\n * @param domain Domínio de login\n * @param user usuário de login (mail)\n * @returns Observable com os dados do login realizado, seja erro ou sucesso\n */\n public loginAzure(domain: string, user: string): Observable<RetLogin> {\n \n let login: Login = {\n usuario: user,\n senha: \"azure\"\n }\n\n const params = new HttpParams()\n\n .set('dominio', domain)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${ this._ipServiceService.getDataBrowserUser().browser } - ${ this._ipServiceService.getDataBrowserUser().so }`)\n .set('localization', `${ this.city }, ${ this.state }, ${ this.country }`)\n .set('infraInAuthTypeId', this._authStorageService.infraInAuthTypeId)\n .set('infraIn2FaTypeId', this._authStorageService.infraIn2FaTypeId!)\n .set('is2FaEnabled', this._authStorageService.is2FaEnabled);\n\n const url = `${ this._BASE_URL }/ValidateLogin`;\n\n const headers = this._HTTP_HEADERS;\n \n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.FeedbackMessage != \"\") {\n return;\n }\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n \n this._authStorageService.ignoreCheckLogin = true;\n \n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n \n // Método com customizações para inicializações do Login\n this._customLoginService.authLogin();\n\n if (this._authStorageService.urlRedirect == '' || this._authStorageService.urlRedirect == '/' || this._authStorageService.urlRedirect == '/auth/login') {\n // Método com customizações para redirecionamento da tela inicial após login ok\n this._customLoginService.authNavigateToPage(this._router);\n } else {\n this._router.navigate([this._authStorageService.urlRedirect]);\n }\n\n this._authStorageService.urlRedirect = \"/\";\n })\n \n );\n }\n\n public loginExternal(dominio: string, user: string, password: string): Observable<boolean> {\n\n let login: Login = {\n usuario: user,\n senha: password\n }\n\n const params = new HttpParams()\n .set('dominio', dominio);\n\n const url = `${this._BASE_URL}/ValidateExternalLogin`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (!response.Error) {\n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = true;\n }\n\n }),\n map((response) => {\n return response.Error;\n }\n )\n\n );\n }\n\n /** Este método é utilizado para realizar o login no sistema integrado com a OS.\n * Originalmente pensado para utilizar apenas pelo componente de integração de login.\n * @param parmsLogin Informações do formulário de login\n * @param serialV6 Serial do V6\n * \n * @returns Observable com os dados do login realizado, seja erro ou sucesso\n */\n public loginOS(parmsLogin: LoginForm, serialV6: string): Observable<RetLogin> {\n let login: Login = {\n usuario: parmsLogin.usuario,\n senha: parmsLogin.senha\n }\n\n const params = new HttpParams()\n .set('dominio', parmsLogin.dominio)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${ this._ipServiceService.getDataBrowserUser().browser } - ${ this._ipServiceService.getDataBrowserUser().so }`)\n .set('localization', `${ this.city }, ${ this.state }, ${ this.country }`)\n .set('infraInAuthTypeId', this._authStorageService.infraInAuthTypeId)\n .set('infraIn2FaTypeId', this._authStorageService.infraIn2FaTypeId!)\n .set('is2FaEnabled', this._authStorageService.is2FaEnabled)\n .set('serialV6', serialV6);\n\n const url = `${ this._BASE_OS_URL }/ValidateOSLogin`;\n\n const headers = this._HTTP_HEADERS;\n \n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {if (response.FeedbackMessage != \"\" && response.FeedbackMessage != null) { return; }\n\n if (response.Error) {\n this._authStorageService.logout();\n throw Error(response.ErrorMessage);\n }\n \n if (response.InitializePassword) {\n //Inicializar password\n this._authStorageService.logout();\n }\n else if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n //Inicializar Autenticação Local 2 Fatores via Email\n this._authStorageService.logout();\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n }\n else {\n this._authStorageService.ignoreCheckLogin = true;\n \n this._authStorageService.isLoggedInSub.next(true);\n \n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n }\n })\n );\n }\n \n /** Realiza o logout do sistema, removendo tokens do localStorage e limpando cache */\n public logout() {\n this._authStorageService.logout();\n\n localStorage.removeItem('configsServerUser');\n localStorage.removeItem('configsServerPassword');\n\n // Método com customizações para inicializações do Logout\n this._customLoginService.authLogout();\n \n this._router.navigate([\"/auth/login\"]);\n }\n\n public validateAuthentication2Fa(code: string): Observable<RetLogin> {\n\n let Code2Fa: Code2Fa = {\n infraUsuarioId: this._authStorageService.infraUsuarioId,\n code: code\n }\n\n const params = new HttpParams()\n .set('domain', this._authStorageService.dominio)\n .set('user', this._authStorageService.user)\n .set('userName', this._authStorageService.userName)\n\n const url = `${this._BASE_URL}/ValidadeLogin2FaWithEmail`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, Code2Fa, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n this._authStorageService.ignoreCheckLogin = true;\n\n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = this._authStorageService.user;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n\n // Método com customizações para inicializações do Login\n this._customLoginService.authLogin();\n\n if (this._authStorageService.urlRedirect == '' || this._authStorageService.urlRedirect == '/' || this._authStorageService.urlRedirect == '/auth/login') {\n // Método com customizações para redirecionamento da tela inicial após login ok\n this._customLoginService.authNavigateToPage(this._router);\n } else {\n this._router.navigate([this._authStorageService.urlRedirect]);\n }\n\n this._authStorageService.urlRedirect = \"/\";\n })\n\n );\n }\n\n public GetNewCode2Fa(): Observable<RetError> {\n\n const params = new HttpParams()\n .set('domain', this._authStorageService.dominio)\n .set('user', this._authStorageService.user)\n .set('ip', this.ip)\n .set('browse', `${this._ipServiceService.getDataBrowserUser().browser} - ${this._ipServiceService.getDataBrowserUser().so}`)\n .set('localization', `${this.city}, ${this.state}, ${this.country}`);\n\n const url = `${this._BASE_URL}/GetNewCode2FaWithEmail`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, null, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n\n );\n }\n\n public forgottenPassword(parms: ForgottenPasswordForm): Observable<RetError> {\n\n this._authStorageService.logout();\n\n const params = new HttpParams()\n .set('domain', parms.dominioFgtPsw)\n .set('user', parms.usuarioFgtPsw)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${this._ipServiceService.getDataBrowserUser().browser} - ${this._ipServiceService.getDataBrowserUser().so}`)\n .set('localization', `${this.city}, ${this.state}, ${this.country}`);\n\n const headers = this._HTTP_HEADERS;\n\n const url = `${this._BASE_URL}/ForgottenPassword`;\n\n return this._httpClient\n .post<RetError>(url, null, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n\n );\n\n }\n\n public recoverPassword(dominio: string, usuario: string, parms: NovaSenhaForm): Observable<RetError> {\n\n let recupPassword: PasswordRecup = {\n password: parms.password,\n confirmPassword: parms.confirmPassword,\n code: parms.code\n }\n\n const params = new HttpParams()\n .set('domain', dominio)\n .set('user', usuario)\n\n const headers = this._HTTP_HEADERS;\n\n const url = `${this._BASE_URL}/RecoverPassword`;\n\n return this._httpClient\n .post<RetError>(url, recupPassword, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n\n );\n\n }\n\n public createPassword(dominio: string, usuario: string, parms: NovaSenhaForm): Observable<RetError> {\n\n let recupPassword: PasswordRecup = {\n password: parms.password,\n confirmPassword: parms.confirmPassword,\n code: parms.code\n }\n\n const params = new HttpParams()\n .set('domain', dominio)\n .set('user', usuario)\n\n const headers = this._HTTP_HEADERS;\n\n const url = `${this._BASE_URL}/CreatePassword`;\n\n return this._httpClient\n .post<RetError>(url, recupPassword, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n );\n }\n\n // #endregion POST\n\n // #endregion ==========> SERVICE METHODS <==========\n\n // #region ==========> UTILS <==========\n public setPendingWarning(message: string) {\n this._pendingWarning = message;\n }\n\n public consumePendingWarning(): string | null {\n const message = this._pendingWarning;\n this._pendingWarning = null;\n\n return message;\n }\n\n // #endregion ==========> UTILS <==========\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable, Subject, take, tap } from 'rxjs';\n\nimport { RetError, RetEstabelecimentosModal, RetString } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../../custom/lib-custom-environment.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\nimport { RetDynamicMenu } from './model/dynamic-menu';\nimport { NavSubmenuSearchItem } from './model/navsubmenu-searchitem';\nimport { RetDropDown } from './model/ret-dropdown';\nimport { RetEstabelecimentoSession } from './model/ret-estabelecimento-session';\nimport { RetInfraUsuarioEmail } from './model/ret-infrausuarioemail';\nimport { RetInfraUsuarioImg } from './model/ret-infrausuarioimg';\nimport { RetIsMenuAllowed } from './model/ret-is-menu-allowed';\nimport { RetNavSubMenu, RetSubmenuWithCards } from './model/ret-navsubmenu';\nimport { RetVersion } from './model/ret-version';\nimport { Usuario_IMG } from './model/usuario-img';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuServicesService {\n private readonly _BASE_URL: string = \"\"; // SpInfra2ErpWS\n private readonly _BASE_URL_VERSION_INFRA: string = \"\"; // SpInfra2Version\n private readonly _BASE_URL_VERSION_CORPORATIVO: string = \"\"; // SpCrp2Version\n\n private readonly _HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');\n\n constructor(\n private _authStorageService: AuthStorageService,\n private _httpClient: HttpClient,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) {\n this._BASE_URL = `${ this._customEnvironmentService.SpInfra2ErpWS }`; // SpInfra2ErpWS\n this._BASE_URL = !this._customEnvironmentService.production ? this._BASE_URL : `${ this._customEnvironmentService.SpInfra2ErpWS }`;\n\n this._BASE_URL_VERSION_INFRA = `${ this._customEnvironmentService.SpInfra2AuthWS.replace('SpInfra2AuthWS', 'SpInfra2VersionWS') }`; // SpInfra2VersionWS\n this._BASE_URL_VERSION_INFRA = !this._customEnvironmentService.production ? this._BASE_URL_VERSION_INFRA : `${ this._customEnvironmentService.SpInfra2AuthWS.replace('SpInfra2AuthWS', 'SpInfra2VersionWS') }`;\n \n this._BASE_URL_VERSION_CORPORATIVO = `${ this._customEnvironmentService.SpInfra2AuthWS.replace('/Infra', '/Corporativo').replace('SpInfra2AuthWS', 'SpCrp2VersionWS') }`; // SpCrp2VersionWS\n this._BASE_URL_VERSION_CORPORATIVO = !this._customEnvironmentService.production ? this._BASE_URL_VERSION_CORPORATIVO : `${ this._customEnvironmentService.SpInfra2AuthWS.replace('/Infra', '/Corporativo').replace('SpInfra2AuthWS', 'SpCrp2VersionWS') }`;\n }\n\n // #region ==========> SERVICES <==========\n\n // #region PREPARATION\n\n // #region Menu: Usuário\n // [...]\n // #endregion Menu: Usuário\n\n // #region Menu: Estabelecimentos\n\n public getEstabelecimentosModalList(usuarioID: string, pesquisa: string): Observable<RetEstabelecimentosModal> {\n const params = new HttpParams()\n .set('pesquisa', pesquisa)\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json');\n\n const url = `${this._BASE_URL}/InfraEstabelecimento/GetEstabelecimentosModal`;\n\n return this._httpClient\n .get<RetEstabelecimentosModal>(url, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Estabelecimentos\n\n // #endregion PREPARATION\n\n // #region GET\n\n // #region Menu: Usuário\n\n public getImagemMenu(): Observable<RetInfraUsuarioImg> {\n\n const url = `${this._BASE_URL}/InfraUsuario/GetImagemMenu`;\n\n return this._httpClient\n .get<RetInfraUsuarioImg>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n this.saveImageToStorage(response.InfraUsuarioImg.Imagem, response.InfraUsuarioImg.Filename);\n })\n )\n }\n\n // #endregion Menu: Usuário\n\n // #region Menu: Estabelecimentos\n\n public getEstabelecimentoSession(estabID: string): Observable<RetEstabelecimentoSession> {\n const params = new HttpParams()\n .set('id', estabID);\n\n const url = `${this._BASE_URL}/InfraEstabelecimento/GetEstabelecimentoSession`;\n\n return this._httpClient\n .get<RetEstabelecimentoSession>(url, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Estabelecimentos\n\n // #region Get Usuario Email\n\n public getUsuarioEmail(): Observable<RetInfraUsuarioEmail> {\n const url = `${this._BASE_URL}/InfraUsuario/GetUsuarioEmail`;\n\n return this._httpClient\n .get<RetInfraUsuarioEmail>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Get Usuario Email\n\n // #region Menu: Version\n\n public getVersionInfra(): Observable<RetVersion> {\n const url = `${this._BASE_URL_VERSION_INFRA}/Version/GetVersion`;\n\n return this._httpClient\n .get<RetVersion>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n public getVersionCorporativo(): Observable<RetVersion> {\n const url = `${this._BASE_URL_VERSION_CORPORATIVO}/Version/GetVersion`;\n\n return this._httpClient\n .get<RetVersion>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Version\n\n // #region Menu: IsMenuAllowed\n\n /** Método executado para validar a permissão de acesso a uma opção do menu\n */\n public isMenuAllowed(route: string){\n const params = new HttpParams()\n .set('route', route)\n\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/IsMenuAllowed`;\n\n return this._httpClient\n .get<RetIsMenuAllowed>(url, { 'params': params, headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n // #endregion Menu: IsMenuAllowed\n\n // #endregion GET\n\n // #region UPDATE\n\n // #region Menu: Usuário\n public updateLastLogEstabID(estabID: string): Observable<RetError> {\n const params = new HttpParams()\n .set('estabID', estabID)\n\n const url = `${this._BASE_URL}/InfraUsuario/UpdateLastSelectedEstabelecimento`;\n\n return this._httpClient\n .post<RetError>(url, null, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) { throw Error(response.ErrorMessage); }\n })\n )\n }\n // #endregion Menu: Usuário\n\n // #region Menu: Estabelecimentos\n public defineDefaultEstabelecimento(estabID: string, usuarioID: string, isDefault: boolean): Observable<RetError> {\n const params = new HttpParams()\n .set('estabID', estabID)\n .set('isDefault', isDefault)\n\n const url = `${this._BASE_URL}/InfraEstabelecimento/DefineDefaultEstab`;\n\n return this._httpClient\n .post<RetError>(url, null, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Estabelecimentos\n\n // #endregion UPDATE\n\n // #region Menu Dinâmico\n\n /** Método executado para pegar o Menu lateral levando em conta as permissões do usuário, grupo e o tenant ativo\n * Executado caso o getter do boolean Menu Dynamic seja true\n */\n public getMenuLateral(projetoId: number){\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/GetMenuLateral`;\n\n const params: HttpParams = new HttpParams()\n .set('projetoId', projetoId)\n\n return this._httpClient\n .get<RetDynamicMenu>(url, {params:params, headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para montar estrutura de título, submenu e telas de acordo com os modelos presentes na ngx-sp-infra\n * envia-se o título deste grupo de submenus, ícone e enum daqueles submenus que\n * ficarão alocados no grupo de determinado título enviado\n */\n public getTelaSubmenus(NavSubmenuSearchItems: NavSubmenuSearchItem[]): Observable < RetNavSubMenu > {\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json');\n\n const url = `${this._BASE_URL}/Menu/GetTelaSubmenus`;\n\n return this._httpClient\n .post<RetNavSubMenu>(url, JSON.stringify(NavSubmenuSearchItems), {'headers': headers })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para montar estrutura da tela de submenu com os cards baseado no IdUnico do menu acessado em específico\n */\n public getTelaSubmenusWithCards(MenuIdUnico:number): Observable < RetSubmenuWithCards > {\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json');\n\n const url = `${this._BASE_URL}/Menu/GetTelaSubmenusWithCards`;\n\n const params : HttpParams = new HttpParams()\n .set('MenuIdUnico', MenuIdUnico)\n\n return this._httpClient\n .get<RetSubmenuWithCards>(url, {'params':params, 'headers': headers })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para pegar os produtos para monta o MenuDropdown\n */\n public getProjects(){\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/GetProjects`;\n\n return this._httpClient\n .get<RetDropDown>(url, { headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para pegar o HostName de direcionamento para OS\n */\n public GetHostServerOutSystems(){\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/GetHostServerOutSystems`;\n\n return this._httpClient\n .get<RetString>(url, {headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n // #endregion Menu Dinâmico\n\n // #endregion ==========> SERVICES <==========\n\n\n // #region ==========> UTILITIES <==========\n private _menuFooterImg: Usuario_IMG | null = null;\n\n public getMenuFooterImg(): Usuario_IMG | null {\n const cachedFooterImg = JSON.parse(localStorage.getItem('menuFooterImg')!);\n\n if (cachedFooterImg) { return cachedFooterImg; }\n return this._menuFooterImg;\n }\n public setMenuFooterImg(value: Usuario_IMG): void {\n this._menuFooterImg = value;\n localStorage.setItem('menuFooterImg', JSON.stringify(value));\n }\n\n\n public saveImageToStorage(footerImgSrc: string, footerImgName: string): void {\n this.setMenuFooterImg({ USUARIOID: this._authStorageService.infraUsuarioId, FILENAME: footerImgName, FILE: footerImgSrc });\n }\n\n\n // #region NewImg Event\n\n // Implementação de lógica vista no link: https://hasangalakdinu.medium.com/how-to-call-a-function-in-another-component-angular-using-rxjs-3f2e85920705\n private _subject = new Subject<any>();\n\n public newUserImageEvent(value: any): void {\n this._subject.next(value);\n }\n\n public getNewUserImageEvent(): Observable<any> {\n return this._subject.asObservable();\n }\n\n // #endregion NewImg Event\n\n // #endregion ==========> UTILITIES <==========\n\n}\n","import { Inject, Injectable } from \"@angular/core\";\n\nimport { IMenuItemStructure } from '../components/menu-lateral/model/imenu-item-structure.model';\nimport { IMenuConfig } from \"./models/imenu-config\";\nimport { LIB_MENU_CONFIG } from \"./token\";\n\n@Injectable(\n { providedIn: 'root' }\n)\n/**Service responsável por pegar as opções do menu do projeto em que está sendo utilizada*/\nexport class LibMenuConfigService {\n\n constructor( \n @Inject(LIB_MENU_CONFIG) private _menuConfig: IMenuConfig\n ) { }\n\n public menu: IMenuItemStructure[] = []\n public menuDropdown: any[] = [];\n\n /** Inicializa as opções do menu com base na rota atual e em uma lista personalizada (opcional).\n * @param currentRoute A rota atual da aplicação\n * @param customList Uma lista personalizada de opções de menu (opcional).\n * @returns As opções do menu inicializadas.\n */\n public initializeMenu(currentRoute: string, customList?: IMenuItemStructure[]): IMenuItemStructure[] {\n \n this.menu = this._menuConfig.initializeMenu(currentRoute, customList);\n \n return this.menu;\n }\n\n public setMenuType(isStaticMenu: boolean): void {\n this._menuConfig.setMenuType(isStaticMenu);\n }\n\n public updateRouteSelection(currentRoute: string, currentList: IMenuItemStructure[]): IMenuItemStructure[] {\n return this._menuConfig.updateRouteSelection(currentRoute, currentList);\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { IMenuItemStructure } from '../components/menu-lateral/model/imenu-item-structure.model';\nimport { AuthStorageService } from '../storage/auth-storage.service';\nimport { LibMenuConfigService } from './lib-menu-config.service';\nimport { ICustomMenuService } from './models/icustom-menu-service';\nimport { LIB_CUSTOM_MENU_SERVICE } from './token';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LibCustomMenuService {\n\n // #region Propriedade Customizadas do Menu\n\n public get menuDynamic(): boolean {\n return this._customMenuService.menuDynamic;\n }\n\n public get menuDynamicCustom(): boolean {\n return this._customMenuService.menuDynamicCustom;\n }\n\n public get moduleName(): string {\n return this._customMenuService.moduleName;\n }\n\n public get moduleSvg(): string {\n return this._customMenuService.moduleSvg;\n }\n\n public get themeColor(): string {\n return this._customMenuService.themeColor;\n }\n\n // #endregion Propriedade Customizadas do Menu\n\n // #region Propriedade do Menu\n\n public menuConfig: LibMenuConfigService;\n\n /** Obtém as opções do menu. */\n public get menuItems(): IMenuItemStructure[] {\n return this._customMenuService.menuItems;\n }\n\n public set menuItems(value: IMenuItemStructure[]) {\n this._customMenuService.menuItems = value;\n }\n \n // #endregion Propriedade do Menu\n\n constructor(\n @Inject(LIB_CUSTOM_MENU_SERVICE) private _customMenuService: ICustomMenuService,\n private _menuConfig: LibMenuConfigService,\n private _authStorageService: AuthStorageService\n ) {\n // inicializações do Menu Dinâmico\n this.menuConfig = _menuConfig;\n }\n\n // #region - Métodos Customizadas para o Menu dinâmico\n\n // Método executado no menu-lateral.component.ts - método: onInit ()\n // Utilizado para obter o Módulo para montagem do Menu Dinâmico Lateral\n public menuDynamicGetProjetoId(): number\n {\n return this._customMenuService.menuDynamicGetProjetoId();\n }\n \n // Método executado no menu-lateral.component.ts - método: onInit ()\n // Utilizado para inicializações diversas\n public menuDynamicOnInit(): void {\n this._customMenuService.menuDynamicOnInit();\n }\n\n // Método executado no menu-lateral.component.ts - método: onInit ()\n // Utilizado para inicializações diversas\n public menuStaticOnInit(): void {\n this._customMenuService.menuStaticOnInit();\n }\n\n // Método executado no menu-lateral.component.ts - método: openExpansibleMenu()\n // Utilizado para inicializações ao Expandir a opção de Menu\n public menuOpenExpansibleMenu(ref: HTMLDivElement): void {\n this._customMenuService.menuOpenExpansibleMenu(ref);\n }\n\n /** Método que deve ser chamado na seleção de um novo estabelecimento, ele atualizará os valores do nosso BehaviorSubject para que possamos utilizá-lo em outras partes do sistema. */\n public menuEmitEstabelecimentoEvent(): void {\n this._customMenuService.menuEmitEstabelecimentoEvent();\n }\n\n // #endregion - Métodos Customizadas para o Menu dinâmico\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { ApplicationRef, ComponentFactoryResolver, ComponentRef, EmbeddedViewRef, Injectable, Injector } from '@angular/core';\n\nimport { RetError, SearchInputComponent } from 'ngx-sp-infra';\nimport { debounceTime, distinctUntilChanged, filter, Observable, Subject, Subscription, switchMap, take, tap } from 'rxjs';\n\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\nimport { RetTelasPesquisa } from '../models/ret-telas-pesquisa.model';\nimport { ProjectUtilservice } from '../project/project-utils.service';\n\n/**\n * Serviço responsável por criar e gerenciar uma instância global do componente SearchInput.\n * \n * Este serviço utiliza a API do Angular para criar e renderizar componentes dinamicamente,\n * anexando-os diretamente ao DOM (fora da hierarquia normal de componentes).\n * \n * Características principais:\n * - Cria apenas uma instância do componente por vez (singleton)\n * - Gerencia o ciclo de vida do componente (criação, anexação ao DOM, destruição)\n * - Lida com eventos do componente via RxJS Subjects\n * - Garante limpeza apropriada de recursos (subscriptions, referencias DOM)\n * \n * @example\n * constructor(private pesquisaService: PesquisaTelasGlobalService) {\n * // Para exibir o componente de pesquisa\n * pesquisaService.show();\n * \n * // Para esconder o componente\n * pesquisaService.hide();\n * }\n */\n@Injectable({ providedIn: 'root' })\nexport class PesquisaTelasGlobalService {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n\n // #region GERENCIAMENTO DINÂMICO DO COMPONENTE\n\n /**\n * Referência ao componente dinâmico criado.\n * Usado para gerenciar o ciclo de vida e estado do componente.\n * Null quando o componente não está visível/criado.\n */\n private _componentRef?: ComponentRef<SearchInputComponent> | null = null;\n\n /**\n * Subject que centraliza eventos de fechamento do componente.\n * Ao invés de tratar o evento onClose diretamente, emitimos neste Subject para permitir um ponto único de tratamento no serviço.\n */\n private _onClose$ = new Subject<void>();\n \n /**\n * Subject que centraliza eventos de pesquisa do componente.\n * Ao invés de tratar o evento onSearch diretamente, emitimos neste Subject para permitir um ponto único de tratamento no serviço.\n */\n private _onSearch$ = new Subject<string>();\n\n /**\n * Agregador de subscriptions de longa duração.\n * Contém principalmente a inscrição do constructor que observa _onClose$.\n * Usado para garantir limpeza adequada em ngOnDestroy.\n */\n private _subscriptions: Subscription = new Subscription();\n\n /**\n * Subscription específica do evento onClose do componente atual.\n * Mantida separadamente para permitir limpeza imediata em hide().\n * Null quando não há componente ativo.\n */\n private _componentCloseSub: Subscription | null = null;\n \n /**\n * Subscription específica do evento onSearch do componente atual.\n * Null quando não há componente ativo.\n */\n private _componentSearchSub: Subscription | null = null;\n\n // #endregion GERENCIAMENTO DINÂMICO DO COMPONENTE\n\n private readonly _BASE_URL: string = `${ this._customEnvironmentService.SpInfra2ErpWS }/PesquisaGlobalTela`; // SpInfra2ErpWS\n private readonly _HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');\n\n // #endregion PRIVATE\n\n // #region PUBLIC\n\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _injector: Injector,\n\n private _httpClient: HttpClient,\n private _customEnvironmentService: LibCustomEnvironmentService,\n private _projectUtils: ProjectUtilservice,\n ) {\n\n this._BASE_URL = this._customEnvironmentService.production\n ? `${ this._customEnvironmentService.SpInfra2ErpWS }/PesquisaGlobalTela`\n : this._BASE_URL;\n\n // Inscreve uma vez no Subject que receberá os eventos onClose dos componentes\n // Quando recebermos, executamos a ação desejada (aqui, esconder o componente)\n if (this._onClose$) {\n this._subscriptions.add(\n this._onClose$.subscribe(() => this.hide())\n );\n }\n\n // Inscreve uma vez no Subject que receberá os eventos onSearch dos componentes\n // Quando recebermos, executamos a ação desejada (aqui, chamar o backend)\n if (this._onSearch$) {\n this._subscriptions.add(\n this._onSearch$\n .pipe(\n debounceTime(500), // Aguarda 500ms de \"silêncio\" antes de emitir\n distinctUntilChanged(), // Emite apenas se o valor mudou desde a última emissão\n filter(pesquisa => pesquisa.length >= 3), // Emite apenas se a quantidade de caracteres da pesquisa for maior que 3\n switchMap(pesquisa => this.getTelas(pesquisa) ) // Cancela a chamada anterior se uma nova pesquisa chegar\n )\n .subscribe({\n next: res => {\n this._componentRef!.instance.loading = false;\n\n this._componentRef!.instance.telas = res.MenuSubmenuTela.Telas;\n this._componentRef!.instance.menus = res.MenuSubmenuTela.Menus;\n this._componentRef!.instance.submenus = res.MenuSubmenuTela.Submenus;\n },\n error: err => {\n this._componentRef!.instance.loading = false;\n this._projectUtils.showHttpError(err);\n }\n })\n \n );\n }\n\n }\n\n /**\n * Lifecycle hook do Angular chamado quando o serviço é destruído.\n * \n * Realiza limpeza completa de recursos para evitar memory leaks:\n * 1. Destrói qualquer instância ativa do componente\n * 2. Cancela todas as inscrições de longa duração\n * 3. Completa o Subject de eventos\n * \n * NOTA: Como este serviço é providedIn: 'root', ele normalmente\n * só será destruído quando a aplicação for encerrada. Ainda assim,\n * manter essa limpeza é uma boa prática e ajuda em testes.\n */\n public ngOnDestroy(): void {\n // Tenta esconder/destruir componente ativo se houver\n // Wrapped em try/catch pois pode haver erros ao destruir o componente se a aplicação estiver sendo encerrada\n if (this._componentRef) {\n try { this.hide(); } catch (e) { /* ignora */ }\n }\n\n // Cancela todas as inscrições de longa duração\n this._subscriptions.unsubscribe();\n\n // Completa os Subjects de eventos\n // Isso notifica todos os observadores que não haverá mais eventos\n this._onClose$.complete();\n this._onSearch$.complete();\n }\n\n\n // #region ==========> API METHODS <==========\n\n // #region GET\n\n /**\n * Método responsável pela busca por telas via API.\n * \n * @param pesquisa Termo de pesquisa para filtrar as telas.\n * @returns Observable emitindo o resultado da pesquisa de telas.\n */\n public getTelas(pesquisa: string): Observable<RetTelasPesquisa> {\n\n // Sempre que iniciar uma nova pesquisa seta o loading para true para melhor feedback para o usuário\n if (this._componentRef) this._componentRef!.instance.loading = true;\n\n const params = new HttpParams().set('pesquisa', pesquisa);\n const url = `${ this._BASE_URL }`;\n\n return this._httpClient.get<RetTelasPesquisa>(url, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(take(1), tap(response => this.showErrorMessage(response) ));\n }\n\n // #endregion GET\n\n // #endregion ==========> API METHODS <==========\n\n\n // #region ==========> UTILS <==========\n \n // #region GERENCIAMENTO DO COMPONENTE\n\n /**\n * Cria e exibe uma instância do componente SearchInput na tela.\n * \n * Este método utiliza a API baixo nível do Angular para criar um componente dinamicamente e anexá-lo ao DOM. O processo envolve:\n * \n * 1. Criar o componente via ComponentFactoryResolver\n * 2. Configurar suas propriedades iniciais\n * 3. Registrá-lo no mecanismo de detecção de mudanças do Angular\n * 4. Anexá-lo ao DOM (fora da hierarquia normal de componentes)\n * \n * IMPORTANTE: Este método garante que apenas uma instância do componente existe por vez, retornando early se já houver um componente ativo.\n * \n * @example\n * service.show(); // Cria e exibe o componente\n * service.show(); // Não faz nada (componente já existe)\n */\n public show(): void {\n // Garante que apenas uma instância existe por vez\n if (this._componentRef) { return; }\n\n // 1. Resolve a fábrica do componente - primeiro passo para criar\n // um componente dinamicamente no Angular. A fábrica contém os metadados\n // necessários para instanciar o componente.\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(SearchInputComponent);\n \n // 2. Cria uma nova instância do componente usando o injector raiz\n // Isso garante que o componente tenha acesso aos mesmos serviços\n // que componentes criados normalmente via template\n this._componentRef = componentFactory.create(this._injector);\n \n // 3. Registra a view do componente no ApplicationRef\n // Isso é CRÍTICO: sem este passo, o componente não participaria\n // do ciclo de detecção de mudanças do Angular\n this._appRef.attachView(this._componentRef.hostView);\n \n // 4. Obtém o elemento DOM raiz do componente e o anexa ao body\n // Como este componente é criado fora da hierarquia normal,\n // precisamos anexá-lo manualmente ao DOM\n const domElem = (this._componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n // 5. Configura os listeners dos eventos do componente\n // Em vez de tratar o hide() diretamente aqui, encaminhamos o evento para o Subject _onClose$ e guardamos a subscription para poder removê-la quando escondermos o componente.\n this._componentCloseSub = this._componentRef.instance.onClose.subscribe(() => this._onClose$.next());\n\n // Em vez de tratar o getTelas() diretamente aqui, encaminhamos o evento para o Subject _onSearch$ e guardamos a subscription para poder removê-la quando escondermos o componente.\n this._componentSearchSub = this._componentRef.instance.onSearch.subscribe(pesquisa => this._onSearch$.next(pesquisa));\n }\n\n /**\n * Esconde e destrói a instância atual do componente.\n * \n * Este método realiza a limpeza completa do componente:\n * 1. Remove o componente do ciclo de detecção de mudanças\n * 2. Destrói o componente e sua árvore de componentes\n * 3. Remove referências e cancela inscrições\n * \n * IMPORTANTE: Este método é idempotente - é seguro chamá-lo múltiplas vezes ou quando não há componente ativo.\n */\n public hide(): void {\n if (!this._componentRef) { return; }\n\n // Remove do ciclo de detecção de mudanças e do DOM\n // Estes passos são críticos para evitar memory leaks:\n // 1. detachView remove do ciclo de detecção de mudanças\n // 2. destroy limpa event handlers e remove do DOM\n this._appRef.detachView(this._componentRef.hostView);\n this._componentRef.destroy();\n this._componentRef = null;\n\n // Cancela a inscrição no evento onClose do componente\n // Isso é necessário mesmo que o componente seja destruído,\n // pois a subscription pode manter referências vivas\n if (this._componentCloseSub) {\n this._componentCloseSub.unsubscribe();\n this._componentCloseSub = null;\n }\n\n // Cancela a inscrição no evento onSearch do componente\n // Isso é necessário mesmo que o componente seja destruído, pois a subscription pode manter referências vivas\n if (this._componentSearchSub) {\n this._componentSearchSub.unsubscribe();\n this._componentSearchSub = null;\n }\n }\n\n // #endregion GERENCIAMENTO DO COMPONENTE\n\n private showErrorMessage(response: RetError): void { if (response.Error) throw Error(response.ErrorMessage); }\n\n // #endregion ==========> UTILS <==========\n\n}","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { NgIf } from '@angular/common';\nimport { InfraModule } from 'ngx-sp-infra';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\n@Component({\n selector: 'app-menu-not-allowed',\n templateUrl: './error-menu-not-allowed.component.html',\n styleUrls: ['./error-menu-not-allowed.component.css'],\n preserveWhitespaces: true,\n imports: [\n NgIf,\n InfraModule\n ]\n})\nexport class ErrorMenuNotAllowed {\n\n constructor(private router: Router,\n public authStorageService: AuthStorageService\n) { }\n\n onHome() {\n this.router.navigate([\"/home\"]);\n }\n\n}\n"," <div class=\"content\">\n <div class=\"image mb-4\">\n <lib-icon iconName=\"cadeado\" [iconSize]=\"128\" />\n </div>\n <h1 class=\"tittle\">Você não possui permissão para acessar esta tela!</h1>\n <button *ngIf=\"!this.authStorageService.isExternalLogin\" class=\"btn button mt-3\" (click)=\"onHome()\">\n Voltar para a tela inicial\n </button>\n </div>\n","export class LoginOSModel {\n public dominio: string = \"\";\n public usuario: string = \"\";\n public redirectUrl: string = \"\";\n public serialV6: string = \"\";\n\n // Sugestão do GPT: \"Pra facilitar instanciar a partir de objetos.\"\n constructor(init?: Partial<LoginOSModel>) {\n Object.assign(this, init);\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { InfraModule, MessageService } from 'ngx-sp-infra';\nimport { Subscription, take, timer } from 'rxjs';\nimport { AuthService } from '../../auth.service';\nimport { LoginForm } from '../../models/login-form';\nimport { LoginOSModel } from '../../models/login-os.model';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\n@Component({\n selector: 'login-os',\n\tstandalone: true,\n imports: [\n InfraModule\n ],\n template: `\n <div class=\"d-flex flex-column justify-content-center align-items-center h-100 w-100 bg-light\" >\n\n @switch (loginStatus) {\n @case (\"loading\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Carregando Informações...</h2>\n <p class=\"text-muted\">Por favor, aguarde enquanto os dados são carregados.</p>\n </div>\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n }\n @case (\"success\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Login efetuado com sucesso</h2>\n <h2 class=\"fw-bold\">Bem-vindo à V6!</h2>\n @if (timer > 0) { <span class=\"text-muted\">Redirecionando você em {{ timer }} segundos...</span> }\n @else { <span class=\"text-muted\">Se você não foi redirecionado automaticamente, <b class=\"text-primary glb-cursor-pointer\" (click)=\"redirect()\">clique aqui</b></span> }\n <div><lib-icon iconName=\"p-check\" iconColor=\"green\" [iconSize]=\"50\" /></div>\n </div>\n }\n @case (\"error\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"text-danger fw-bold\">Não foi possível efetuar o login</h2>\n <span class=\"text-muted\">Verifique os parâmetros enviados e tente novamente.</span>\n <div><lib-icon iconName=\"p-pare\" iconColor=\"red\" [iconSize]=\"50\" /></div>\n </div>\n }\n @case (\"updated\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Sessão atualizada com sucesso</h2>\n @if (timer > 0) { <span class=\"text-muted\">Redirecionando você em {{ timer }} segundos...</span> }\n @else { <span class=\"text-muted\">Se você não foi redirecionado automaticamente, <b class=\"text-primary glb-cursor-pointer\" (click)=\"redirect()\">clique aqui</b></span> }\n <div><lib-icon iconName=\"p-check\" iconColor=\"green\" [iconSize]=\"50\" /></div>\n </div>\n }\n @default {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Carregando Informações...</h2>\n <p class=\"text-muted\">Por favor, aguarde enquanto os dados são carregados.</p>\n </div>\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n }\n }\n\n </div>\n `,\n styles: ``\n})\nexport class LoginOSComponent implements OnInit, OnDestroy {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _parmsLogin!: LoginForm;\n private _loginOSModel?: LoginOSModel;\n \n private _timerSubscription: Subscription | undefined;\n // #endregion PRIVATE\n\n // #region PUBLIC\n public loginStatus: \"loading\" | \"success\" | \"error\" | \"updated\" = \"loading\";\n public timer: number = 3;\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n // #region ==========> INITIALIZATION <==========\n constructor(\n private _authService: AuthService,\n\t\tprivate _projectUtilService: ProjectUtilservice,\n private _route: ActivatedRoute,\n private _router: Router,\n private _storageService: AuthStorageService,\n private _messageService: MessageService\n ) { }\n\n ngOnInit(): void {\n this._storageService.logout();\n\n this.getParams();\n this.logOn();\n }\n // #endregion ==========> INITIALIZATION <==========\n\n\n // #region ==========> API METHODS <==========\n\n // #region LOGIN\n public logOn(): void {\n this.loginStatus = \"loading\";\n\n let status: \"none\" | \"keep\" | \"updated\" = \"none\";\n\n const currDominio = this._storageService.dominio ?? undefined;\n const currUsuario = this._storageService.user ?? undefined;\n\n this._authService.getAuthentication(this._loginOSModel!.dominio).subscribe({\n next: () => {\n\n if (currDominio === this._loginOSModel!.dominio && currUsuario === this._loginOSModel!.usuario) {\n status = \"keep\";\n this.redirect();\n return;\n }\n\n status = (!currDominio || !currUsuario) ? \"none\" : \"updated\";\n\n this._authService.loginOS(this._parmsLogin, this._loginOSModel!.serialV6).subscribe({\n next: () => {\n if (status === \"none\") {\n this.startTimer();\n this.loginStatus = \"success\";\n }\n else {\n this.startTimer();\n this.loginStatus = \"updated\";\n }\n },\n error: (error) => {\n this.loginStatus = \"error\";\n this._projectUtilService.showHTTPErrorOS(error);\n },\n });\n },\n error: (error) => {\n this.loginStatus = \"error\";\n this._projectUtilService.showHTTPErrorOS(error);\n }\n });\n\n }\n // #endregion LOGIN\n\n // #endregion ==========> API METHODS <==========\n\n\n // #region ==========> UTILS <==========\n public redirect(): void {\n let hostname = window.location.host == \"localhost\" ? \"siscandesv6.sispro.com.br\" : window.location.host;\n let baseURL = `https://${hostname}/SisproErpCloud`;\n\n if (!this._loginOSModel!.redirectUrl) this._router.navigateByUrl(\"/home\");\n else window.location.replace(`${baseURL}${this._loginOSModel!.redirectUrl}`);\n }\n\n private startTimer(): void {\n this._timerSubscription = timer(0, 1000)\n .pipe(take(this.timer + 1))\n .subscribe(count => {\n this.timer = this.timer - count;\n if (this.timer === 0) this.redirect();\n });\n }\n\n\n\n private getParams(): void {\n const payloadString = this._route.snapshot.queryParamMap.get('payload');\n\n if (!payloadString) {\n this.loginStatus = \"error\";\n\n this._router.navigate([\"/auth/login\"]).then(e => {\n this._messageService.showAlertDanger('Payload não encontrado na URL.');\n });\n \n console.warn('Payload não encontrado na URL.');\n throw new Error('Payload não encontrado na URL.');\n }\n\n try {\n const payloadJson = JSON.parse(atob(payloadString)) as LoginOSModel;\n \n this._loginOSModel = new LoginOSModel({\n dominio: payloadJson.dominio ?? '',\n usuario: payloadJson.usuario ?? '',\n redirectUrl: payloadJson.redirectUrl ?? '',\n serialV6: payloadJson.serialV6 ?? ''\n });\n\n this._parmsLogin = {\n dominio: payloadJson.dominio,\n usuario: payloadJson.usuario,\n senha: \"\"\n };\n }\n catch (error) {\n this.loginStatus = \"error\";\n\n this._router.navigate([\"/auth/login\"]).then(e => {\n this._messageService.showAlertDanger('Erro ao fazer parse do payload.');\n });\n\n console.error('Erro ao fazer parse do payload:', error);\n throw error;\n }\n }\n // #endregion ==========> UTILS <==========\n\n\n ngOnDestroy(): void {\n this._timerSubscription?.unsubscribe();\n }\n\n}\n","import { CommonModule, NgIf } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Title } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { Subscription, map, take, timer } from 'rxjs';\n\nimport { MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalService } from '@azure/msal-angular';\nimport { AuthenticationResult, LogLevel, PublicClientApplication, RedirectRequest } from '@azure/msal-browser';\n\nimport { ToastrService } from 'ngx-toastr';\n\nimport { FormUtils, InfraModule, MessageService } from 'ngx-sp-infra';\n\nimport { AuthService } from '../../auth.service';\nimport { LibCustomEnvironmentService } from '../../custom/lib-custom-environment.service';\nimport { LibCustomLoginService } from '../../custom/lib-custom-login.service';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\nimport { InfraIn2FaTypeId } from '../../models/infraIn2FaTypeId';\nimport { InfraInAuthTypeId } from '../../models/infraInAuthTypeId';\n\nexport enum LoginProgress {\n\tDomain = 1,\n\tLocal = 2,\n\tAzure = 3\n}\n// ajustes ERICK\nexport enum SituacaoLogin {\n\tLOGIN = 0,\n\tAUTENTICACAO_2_FATORES = 1,\n\tESQUECEU_SENHA = 2\n};\n// ajustes ERICK\n\n@Component( {\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [\n ReactiveFormsModule,\n InfraModule,\n CommonModule,\n\t\tNgIf\n ],\n preserveWhitespaces: true\n} )\nexport class LoginComponent implements OnInit {\n\n\tconstructor(\n\t\t@Inject(MSAL_GUARD_CONFIG) private _msalGuardConfiguration: MsalGuardConfiguration,\n\t\tprivate _msalService: MsalService,\t\t\n\t\tpublic _customLoginService: LibCustomLoginService,\n\t\tprivate _formBuilder: FormBuilder,\n\t\tprivate _projectUtilservice: ProjectUtilservice,\n\t\tprivate _authService: AuthService,\n\t\tprivate _customEnvironmentService: LibCustomEnvironmentService,\n\t\tprivate _authStorageService: AuthStorageService,\n\t\tprivate _title: Title,\n\t\tprivate _router: Router,\n\t\tprivate _toastrService: ToastrService,\n\t\t\n\t\t// Exibição de alerta para caso o payload do login OS não seja infromado corretamente\n\t\tprivate _messageService: MessageService,\n\t) { }\n\n\t// #region ==========> PROPERTIES <==========\n\n\t// #region PRIVATE\n\n\tprivate _situacaoLogin: SituacaoLogin = SituacaoLogin.LOGIN;\n\n\t// #endregion PRIVATE\n\n\t// #region PUBLIC\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários\n\tpublic currentTime: Date = new Date();\n\tpublic year: number = this.currentTime.getFullYear();\n\n\tpublic isLoadingDomain: boolean = false;\n\tpublic isLoadingLogin: boolean = false;\n\tpublic isLoadingAzure: boolean = false;\n\tpublic isLoadingForgottenPassword: boolean = false;\n\tpublic isLoadingSendAuthentication2Fa: boolean = false;\n\tpublic isLoadingGetNewCode: boolean = false;\n\tpublic showParmsAuthentication2Fa = false;\n\tpublic loginProgress: number = LoginProgress.Domain;\n\n\tpublic get situacaoLogin(): SituacaoLogin { return this._situacaoLogin; }\n\tpublic set situacaoLogin(value: SituacaoLogin) {\n\t\tthis._situacaoLogin = value;\n\n\t\tif (value === SituacaoLogin.ESQUECEU_SENHA) this.createFormForgottenPassword();\n\t}\n\n\t// #endregion PUBLIC\n\n\t// #region Timer\n\n\tprivate _subscription: Subscription = new Subscription();\n\tprivate timerDuration: number = 90;\n\tpublic secondsLeft: number = this.timerDuration;\n\n\tprivate countdown$ = timer(0, 1000).pipe(\n\t\ttake(this.timerDuration + 1),\n\n\t\tmap(secondsElapsed => this.timerDuration - secondsElapsed)\n\t);\n\n\t// #endregion Timer\n\n\t// #region ==========> FORM BUILDER <==========\n\n\tpublic formDomain!: FormGroup;\n\tpublic formLogin!: FormGroup;\n\tpublic formAzure!: FormGroup;\n\tpublic formFgtPsw!: FormGroup;\n\tpublic formAuthentication2Fa!: FormGroup;\n\n\t// Propriedade necessário para que a classe static FormUtils possa ser utilizada no Html\n\tpublic get FormUtils(): typeof FormUtils {\n\t\treturn FormUtils;\n\t}\n\n\t// #region FORM DATA\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários (Login)\n\tpublic get dominio(): string {\n\t\treturn this.formDomain.get('dominio')?.value;\n\t}\n\n\tpublic get usuario(): string {\n\t\treturn this.formLogin.get('usuario')?.value;\n\t}\n\n\tpublic get senha(): string {\n\t\treturn this.formLogin.get('senha')?.value;\n\t}\n\n\tpublic get usuarioAzure(): string {\n\t\treturn this.formAzure.get('usuario')?.value;\n\t}\n\n\tpublic get senhaAzure(): string {\n\t\treturn this.formAzure.get('senha')?.value;\n\t}\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários (RequestRecoverPassword)\n\tpublic get dominioFgtPsw(): string {\n\t\treturn this.formFgtPsw.get('dominioFgtPsw')?.value;\n\t}\n\n\tpublic get usuarioFgtPsw(): string {\n\t\treturn this.formFgtPsw.get('usuarioFgtPsw')?.value;\n\t}\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários (Autenticação 2 Fatores)\n\tpublic get code(): string {\n\t\treturn this.formAuthentication2Fa.get('code')?.value;\n\t}\n\n\t// #endregion FORM DATA\n\n\t// #endregion ==========> PROPERTIES <==========\n\n\tasync ngOnInit() {\n\n\t\tthis._title.setTitle(this._customLoginService.loginPageTitle);\n\n\t\tif (this._customLoginService.loginTitle != \"\") {\n\t\t\tdocument.getElementById(\"title\")!.innerHTML = this._customLoginService.loginTitle;\n\t\t}\n\n\t\tif (this._customLoginService.loginSubtitle != \"\") {\n\t\t\tdocument.getElementById(\"subtitle\")!.innerHTML = this._customLoginService.loginSubtitle;\n\t\t}\n\n\t\tthis.loginProgress = LoginProgress.Domain;\n\t\tthis.createFormDomain();\n\t\t\n\t\tif (this._router.url.toLowerCase().startsWith('/auth/login#code=')) {\n\t\t\tthis.loginProgress = LoginProgress.Azure;\n\t\t\tthis.createFormAzure();\n\n\t\t\tawait this.initMsalForLoginOk().then;\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// #region FORM VALIDATORS\n\n\t// Método para configuração dos campos de edição do formulário (Login)\n\tprivate createFormDomain(): void {\n\t\t// Dados originais de Login (Domínio)\n\n\t\tif (this._customEnvironmentService.production)\n\t\t{\n\t\t\tthis.formDomain = this._formBuilder.group({\n\t\t\t\tdominio: ['', [Validators.required, Validators.maxLength(50)]],\n\t\t\t});\n\t\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.formDomain = this._formBuilder.group({\n\t\t\t\tdominio: [this._customLoginService.loginDesenvDomain, [Validators.required, Validators.maxLength(50)]],\n\t\t\t});\n\t\t}\n\n\t}\n\n\tprivate createFormLogin(): void {\n\t\t// Dados originais de Login (Usuário e Senha)\n\n\t\tif (this._customEnvironmentService.production)\n\t\t{\n\t\t\tthis.formLogin = this._formBuilder.group({\n\t\t\t\tusuario: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t\t\tsenha: ['', [Validators.required, Validators.maxLength(100)]]\n\t\t\t});\n\t\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.formLogin = this._formBuilder.group({\n\t\t\t\tusuario: [this._customLoginService.loginDesenvUser, [Validators.required, Validators.maxLength(100)]],\n\t\t\t\tsenha: [this._customLoginService.loginDesenvPassword, [Validators.required, Validators.maxLength(100)]]\n\t\t\t});\n\t\t}\n\n\t}\n\n\tprivate createFormAzure(): void {\n\t\t// Dados originais de Login (Azure)\n\n\t\tthis.formAzure = this._formBuilder.group({\n\t\t\tusuario: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t\tsenha: ['', [Validators.required, Validators.maxLength(100)]]\n\t\t});\n\t}\n\n\t// Método para configuração dos campos de edição do formulário (RequestRecoverPassword)\n\tprivate createFormForgottenPassword(): void {\n\n\t\tthis.formFgtPsw = this._formBuilder.group({\n\t\t\tdominioFgtPsw: ['', [Validators.required, Validators.maxLength(50)]],\n\t\t\tusuarioFgtPsw: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t});\n\n\t\tthis.formFgtPsw.get('dominioFgtPsw')?.setValue('');\t\n\t\tthis.formFgtPsw.get('usuarioFgtPsw')?.setValue('');\t\n\t}\n\n\t// Método para configuração dos campos de edição do formulário (Autenticação 2 Fatores)\n\tprivate createFormAuthentication2Fa(): void {\n\n\t\tthis.formAuthentication2Fa = this._formBuilder.group({\n\t\t\tcode: ['', [Validators.required, Validators.maxLength(6)]],\n\t\t});\n\n\t\tthis.formAuthentication2Fa.get('code')?.setValue('');\n\t}\n\n\t// #endregion FORM VALIDATORS\n\n\t// #endregion ==========> FORM BUILDER <==========\n\n\t// #region ==========> SERVICE METHODS <==========\n\n\t// #region Azure\n\n\tprivate async configMsal() {\n\t\tconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\n\t\tconst hostAuthLogin = !this._customEnvironmentService.production ? \"http://localhost:4200/auth/login\" : `${ this._customEnvironmentService.hostName }/SisproErpCloud/${ this._customEnvironmentService.product }/auth/login`;\n\n\t\tthis._msalService.instance = new PublicClientApplication({\n\t\t\tauth: {\n\t\t\t\tclientId: `${ this._authStorageService.azureClientId }`,\n\t\t\t\tauthority: `https://login.microsoftonline.com/${ this._authStorageService.azureTenantId }`,\n\t\t\t\tredirectUri: hostAuthLogin + \"/\",\n\t\t\t\tpostLogoutRedirectUri: hostAuthLogin,\n\t\t\t\tnavigateToLoginRequestUrl: true\n\t\t\t\t},\n\t\t\tcache: {\n\t\t\t\tcacheLocation: \"localStorage\",\n\t\t\t\tstoreAuthStateInCookie: isIE\n\t\t\t},\n\t\t\tsystem: {\n\t\t\t\tloggerOptions: {\n\t\t\t\t\tloggerCallback: (logLevel, message, containsPii) => {\n\t\t\t\t\t\tconsole.log(message);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlogLevel: LogLevel.Error,\n\t\t\t\t\t\tpiiLoggingEnabled: false\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async initMsal() {\n\t\tawait this.configMsal().then(() => {\n\t\t\tthis._msalService.handleRedirectObservable().subscribe({\n\t\t\t\tnext: (result: AuthenticationResult) => {\n\n\t\t\t\t\tif (!this._msalService.instance.getActiveAccount() && this._msalService.instance.getAllAccounts().length > 0) {\n\t\t\t\t\t\tthis._msalService.instance.setActiveAccount(result.account);\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis._toastrService.warning(`Erro na inicialização dos parâmetros de configuração do 'Azure': ${ error }`, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async initMsalForLoginOk() {\n\t\tawait this.configMsal().then(() => {\n\t\t\tthis._msalService.handleRedirectObservable().subscribe({\n\t\t\t\tnext: (result: AuthenticationResult) => {\n\t\t\t\t\t\n\t\t\t\t\tif (!this._msalService.instance.getActiveAccount() && this._msalService.instance.getAllAccounts().length > 0) {\n\t\t\t\t\t\tthis._msalService.instance.setActiveAccount(result.account);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.logOnAzureOk();\n \t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.loginProgress = LoginProgress.Domain;\n\t\t\t\t\tthis.createFormDomain();\n\n\t\t\t\t\tthis._router.navigate([\"/auth/login\"]);\n\t\t\t\n\t\t\t\t\tthis._toastrService.warning(`Erro na inicialização dos parâmetros de configuração do 'Azure': ${ error }`, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// #endregion Azure\n\t\n\t// #region GET\n\n\t// Obtém a Url do Config Erp\n\tpublic geturlErpConfig(): string {\n\t\t// verificar depois \n\t\treturn `${this._customEnvironmentService.hostName}/SisproErpCloud/ConfigErp`;\n\t}\n\n\t/*\n\t* Obtém os parâmetros de método de autenticação\n\t*/\n\tpublic async getAuthentication() {\n\n\t\tif (this.formDomain.valid) {\n\t\t\tthis.isLoadingDomain = true;\n\n\t\t\tthis._authService.getAuthentication(this.dominio).subscribe({\n\t\t\t\tnext: async response => {\n\n\t\t\t\t\tif (response.InfraInAuthTypeId == InfraInAuthTypeId.Local) {\n\t\t\t\t\t\tthis.loginProgress = LoginProgress.Local;\n\t\t\t\t\t\tthis.createFormLogin();\n\t\t\t\t\t} else if (response.InfraInAuthTypeId == InfraInAuthTypeId.Azure) {\n\t\t\t\t\t\tthis.loginProgress = LoginProgress.Azure;\n\t\t\t\t\t\tthis.createFormAzure();\n\n\t\t\t\t\t\tawait this.initMsal();\n\t\t\t\t\t} else if (response.InfraInAuthTypeId == InfraInAuthTypeId.LDAP) {\n\t\t\t\t\t\tthis.loginProgress = LoginProgress.Local;\n\t\t\t\t\t\tthis.createFormLogin();\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.isLoadingDomain = false;\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoadingDomain = false;\n\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formDomain);\n\t\t}\n\t}\n\n\t// #endregion GET\n\n\t// #region POST\n\n\t// Executa o Login\n\tpublic logOn(): void {\n\n\t\tif (this.formLogin.valid) {\n\t\t\tthis.isLoadingLogin = true;\n\n\t\t\tthis._authService.login(this.dominio, this.usuario, this.senha).subscribe({\n\t\t\t\tnext: (response) => {\n\t\t\t\t\tthis.isLoadingLogin = false;\n\t\t\t\t\t\n\t\t\t\t\tif (response.FeedbackMessage != \"\") {\n\t\t\t\t\t\tthis._toastrService.warning( response.FeedbackMessage, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t//Incialização de Senha\n\t\t\t\t\tif (response.InitializePassword) {\n\t\t\t\t\t\tlet param: string = btoa(`true$${ this.dominio }$${ this.usuario }$${response.StatusSenha}`);\n\t\t\t\t\t\tthis._router.navigate([`auth/login/novaSenha/${ param }`]);\n\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n\t\t\t\t\t\tthis.createFormAuthentication2Fa();\n\t\n\t\t\t\t\t\tthis._subscription = this.countdown$.subscribe(secondsLeft => {\n\t\t\t\t\t\t\tthis.secondsLeft = secondsLeft;\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.showParmsAuthentication2Fa = true;\n\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoadingLogin = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t});\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formLogin);\n\t\t}\n\t\t\t\n\t}\n\n\t// Executa o Login (Admin)\n\tpublic logOnAdmin(): void {\n\n\t\tif (this.formAzure.valid) {\n\n\t\t\tif (this.usuarioAzure.toUpperCase() != \"ADMIN\") {\n\t\t\t\t\tthis._toastrService.warning( \"Esta opção é somente permitida para o usuário 'Admin'.\", '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t} else {\n\t\t\t\tconst infraInAuthTypeId: number = this._authStorageService.infraInAuthTypeId;\n\t\t\t\tconst infraIn2FaTypeId: number | null | undefined = this._authStorageService.infraIn2FaTypeId;\n\t\t\t\tconst is2FaEnabled: boolean = this._authStorageService.is2FaEnabled;\n\t\n\t\t\t\tthis._authStorageService.infraInAuthTypeId = InfraInAuthTypeId.Local;\n\t\t\t\tthis._authStorageService.infraIn2FaTypeId = null;\n\t\t\t\tthis._authStorageService.is2FaEnabled = false;\n\t\t\t\t\n\t\t\t\tthis.isLoadingAzure = true;\n\n\t\t\t\tthis._authService.login(this.dominio, this.usuarioAzure, this.senhaAzure).subscribe({\n\t\t\t\t\tnext: (response) => {\n\t\t\t\t\t\tthis.isLoadingAzure = false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (response.FeedbackMessage != \"\") {\n\t\t\t\t\t\t\tthis._toastrService.warning( response.FeedbackMessage, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t//Incialização de Senha\n\t\t\t\t\t\tif (response.InitializePassword) {\n\t\t\t\t\t\t\tlet param: string = btoa(`true$${ this.dominio }$${ this.usuarioAzure }$${response.StatusSenha}`);\n\t\t\t\t\t\t\tthis._router.navigate([`auth/login/novaSenha/${ param }`]);\n\t\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n\t\t\t\t\t\t\tthis.createFormAuthentication2Fa();\n\t\t\n\t\t\t\t\t\t\tthis._subscription = this.countdown$.subscribe(secondsLeft => {\n\t\t\t\t\t\t\t\tthis.secondsLeft = secondsLeft;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.showParmsAuthentication2Fa = true;\n\t\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror: (error) => {\n\t\t\t\t\t\tthis.isLoadingAzure = false;\n\t\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\n\t\t\t\tthis._authStorageService.infraInAuthTypeId = infraInAuthTypeId;\n\t\t\t\tthis._authStorageService.infraIn2FaTypeId = infraIn2FaTypeId;\n\t\t\t\tthis._authStorageService.is2FaEnabled = is2FaEnabled;\n\t\t\t}\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formAzure);\n\t\t}\t\n\t\t\n\t}\n\n\t// Executa o Login (Azure)\n\tpublic logOnAzure(): void {\n\n\t\tif (this._msalGuardConfiguration.authRequest){\n\t\t\tthis._msalService.loginRedirect({...this._msalGuardConfiguration.authRequest} as RedirectRequest);\n\t\t} else {\n\t\t\tthis._msalService.loginRedirect();\n\t\t}\n\t\t\n\t}\n\n\t// Executa o Login após o retorno ok do Azure\n\tpublic async logOnAzureOk() {\n\t\tlet username = this._msalService.instance.getActiveAccount()?.idTokenClaims?.preferred_username;\n\n\t\tthis._authService.loginAzure(this._authStorageService.dominio, username ?? \"\").subscribe({\n\t\t\tnext: (response) => {\n\n\t\t\t\tif (response.FeedbackMessage != \"\") {\n\t\t\t\t\tthis._toastrService.warning( response.FeedbackMessage, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t}\n\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.loginProgress = LoginProgress.Domain;\n\t\t\t\tthis.createFormDomain();\n\n\t\t\t\tthis._router.navigate([\"/auth/login\"]);\n\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Envia requisição para esquecer senha\n\tpublic sendForgottenPassword(): void {\n\n\t\tif (this.formFgtPsw.valid) {\n\t\t\tthis.isLoadingForgottenPassword = true;\n\n\t\t\tthis._authService.getAuthentication(this.dominio).subscribe({\n\t\t\t\tnext: response => {\n\t\t\t\t\tthis.forgottenPassword();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoadingForgottenPassword = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formFgtPsw);\n\t\t}\n\t}\n\n\t// Requisição para esquecer senha\n\tpublic forgottenPassword(): void {\n\n\t\tthis._authService.forgottenPassword(this.formFgtPsw.value).subscribe({\n\t\t\tnext: () => {\n\t\t\t\tthis.isLoadingForgottenPassword = false;\n\n\t\t\t\tlet param: string = btoa(`false$${ this.dominioFgtPsw }$${ this.usuarioFgtPsw }$${3}`);\n\t\t\t\tthis._router.navigate([`auth/login/novaSenha/${ param }`]).then(() => {\n\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t});\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.isLoadingForgottenPassword = false;\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Envia requisição para validar código 2 fatores\n\tpublic sendCode(): void {\n\n\t\tif (this.formAuthentication2Fa.valid) {\n\t\t\tthis.isLoadingSendAuthentication2Fa = true;\n\n\t\t\tthis.validateCode();\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formAuthentication2Fa);\n\t\t}\n\t\t\n\t}\n\n\t// Validação do código 2 fatores\n\tpublic validateCode(): void {\n\n\t\tthis._authService.validateAuthentication2Fa(this.code).subscribe({\n\t\t\tnext: (response) => {\n\t\t\t\tthis._subscription.unsubscribe();\n\n\t\t\t\tthis.isLoadingSendAuthentication2Fa = false;\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.isLoadingSendAuthentication2Fa = false;\n\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Envia requisição para validar código 2 fatores\n\tpublic getNewCode(): void {\n\t\tthis.isLoadingGetNewCode = true;\n\n\t\tthis._authService.getAuthentication(this._authStorageService.dominio).subscribe({\n\t\t\tnext: response => {\n\t\t\t\tthis._subscription = this.countdown$.subscribe(secondsLeft => {\n\t\t\t\t\tthis.secondsLeft = secondsLeft;\n\t\t\t\t});\n\n\t\t\t\tthis.GetNewCode2Fa();\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Validação do código 2 fatores\n\tpublic GetNewCode2Fa(): void {\n\n\t\tthis._authService.GetNewCode2Fa().subscribe({\n\t\t\tnext: (response) => {\n\t\t\t\tthis.isLoadingGetNewCode = false;\n\n\t\t\t\tthis._toastrService.success(\"Enviamos um novo código para o endereço de e-mail vinculado ao seu usuário. Verifique o lixo eletrônico (SPAM) da sua caixa de entrada, caso não tenha encontrado nossa mensagem.\");\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.isLoadingGetNewCode = false;\n\t\t\t\t\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// #endregion POST\n\n\t// #region UTILIDADES\n\n\t// Retorno para a tela de login\n\tpublic voltar(): void {\n\t\tthis.loginProgress = LoginProgress.Domain;\n\t\tthis.createFormDomain();\n\n\t\tthis._subscription.unsubscribe();\n\t\tthis.showParmsAuthentication2Fa = false;\n\n\t\tthis._authStorageService.logout();\n\n\t\tthis._router.navigate([\"/auth/login\"]);\n\t}\t\n\n\t// Retorno para a tela de login\n\tpublic returnDomain(): void {\n\t\tthis.loginProgress = LoginProgress.Domain;\n\t\tthis.createFormDomain();\n\n\t\tthis._authStorageService.logout();\n\n\t\tthis._router.navigate([\"/auth/login\"]);\n\t}\n\n\tprivate showIntegracaoAlert(): void {\n\t\tconst warningMessage = this._authService.consumePendingWarning();\n\n\t\tif (warningMessage) {\n\t\tthis._messageService.showAlertWarning(warningMessage);\n\t\t}\n\t}\n\n\t// #endregion UTILIDADES\n\n\t// #endregion ==========> SERVICE METHODS <==========\n\n}\n","<div id=\"login\" class=\"container-fluid\">\n\t<div class=\"row\">\n\t\t<!-- Conteúdo da DIV do background -->\n\t\t<div class=\"col-md-6 px-0\">\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- Conteúdo da DIV de Login -->\n\t\t<div class=\"col-md-6 px-0\">\n\n\t\t\t<div class=\"div-size\">\n\t\t\t\t<div class=\"logotipo\">\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\n\t\t\t\t</div>\n\n\t\t\t\t@if (situacaoLogin !== 2) {\n\t\t\t\t\t@if (!showParmsAuthentication2Fa) {\n\t\t\t\t\t\t@switch (loginProgress) {\n\t\t\t\t\t\t\t@case(1) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formDomain\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div class=\"col mb-3\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" placeholder=\"Domínio\" formControlName=\"dominio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formDomain.get('dominio'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formDomain.get('dominio')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingDomain\" loadingText=\"Acessando...\" class=\"btn btn-primary\" [disabled]=\"isLoadingDomain\" (click)=\"getAuthentication()\">\n\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t@case(2) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formLogin\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usuário\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\tVoltar\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingLogin\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingLogin\" (click)=\"logOn()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 2\" class=\"fw-bold text-decoration-none text-secondary\"\n\t\t\t\t\t\t\t\t\t\t\ttooltip=\"Não se preocupe, clique aqui e informe o domínio e o usuário desejados que enviaremos um e-mail com maiores informações.\">\n\t\t\t\t\t\t\t\t\t\t\tEsqueceu sua senha? </a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t@case(3) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formAzure\" class=\"form-position formAzure\">\n\t\t\t\t\t\t\t\t\t<div class=\"w-100 mb-3\">\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" loadingText=\"Acessando...\" class=\"btn btn-primary p-2 mb-3 w-100 d-flex align-items-center justify-content-center gap-2\" (click)=\"logOnAzure()\">\n\t\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" heigth=\"14\" width=\"14\" viewBox=\"0 0 23 23\"><path fill=\"transparent\" d=\"M0 0h23v23H0z\"/><path fill=\"#f35325\" d=\"M1 1h10v10H1z\"/><path fill=\"#81bc06\" d=\"M12 1h10v10H12z\"/><path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\"/><path fill=\"#ffba08\" d=\"M12 12h10v10H12z\"/></svg>\n\t\t\t\t\t\t\t\t\t\t\tMicrosoft\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t<div class=\"w-100 text-center text-secondary\">\n\t\t\t\t\t\t\t\t\t\t\t<span id=\"ou-text\"> ou </span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usuário\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<lib-icon iconName=\"seta-esquerda\" /> VOLTAR\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingAzure\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingAzure\" (click)=\"logOnAdmin()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@else {\n\t\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\" placeholder=\"Código de 2 fatores\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" />\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center gap-3 mb-3\">\n\t\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-outline-secondary col\"> <lib-icon iconName=\"seta-esquerda\" /> VOLTAR </button>\n\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingSendAuthentication2Fa\" [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-primary col\">\n\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center\">\n\t\t\t\t\t\t\t\t@if (secondsLeft === 0) {\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-outline-primary col\">\n\t\t\t\t\t\t\t\t\t\tEnviar novo código <lib-icon iconName=\"aviao-papel\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@else {\n\t\t\t\t\t\t\t\t\t<span class=\"fw-bold text-secondary\">{{ secondsLeft }} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo código</span>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</form>\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@else {\n\t\t\t\t\t<form [formGroup]=\"formFgtPsw\" class=\"form-position\">\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"dominioFgtPssInput\" placeholder=\"Domínio\" formControlName=\"dominioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"usuarioFgtPssInput\" placeholder=\"Usuário\" formControlName=\"usuarioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t\t\t@if(formFgtPsw.get('usuarioFgtPsw')?.value === 'admin' || formFgtPsw.get('usuarioFgtPsw')?.value === 'CRMadmin'){\n <p class=\"texto-admin\">Não é possível alterar a senha do usuário 'admin'</p>\n }@else{\n <button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" class=\"btn btn-primary btn-heigth-48\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"sendForgottenPassword()\">\n Enviar e-mail <lib-icon iconName=\"aviao-papel\" />\n </button>\n }\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 0\" class=\"fw-bold text-decoration-none text-secondary\" tooltip=\"Retornar para o login.\"> <lib-icon iconName=\"seta-esquerda\" /> Voltar para o login </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t<div class=\"footer-position\">\n\t\t\t\t\t<footer>\n\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center gap-2\">\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POLÍTICA DE PRIVACIDADE </a>\n\t\t\t\t\t\t\t<span> | </span>\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POLÍTICA DE COOKIES </a>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<p class=\"text-secondary\">\n\t\t\t\t\t\t\tDesenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> SISPRO </a> © {{ year }} Todos os direitos reservados\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"text-center\">\n\t\t\t\t\t\t\t<a class=\"text-primary fw-bold text-decoration-none glb-font-size-12\" [href]=\"geturlErpConfig()\"> Configurar ERP </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</footer>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { InfraModule } from 'ngx-sp-infra';\n\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\n\n@Component({\n selector: 'app-secondary-dropdown',\n templateUrl: './secondary-dropdown.component.html',\n styleUrls: ['./secondary-dropdown.component.scss'],\n imports: [\n InfraModule,\n CommonModule\n ]\n})\nexport class SecondaryDropdownComponent implements OnInit {\n\n @Input() public modulo: any = { id: null, icon: null, label: null, URL: null, secondary_level: null }\n ;\n @Output() public backPrimaryDropdown = new EventEmitter<boolean>();\n\n constructor(private _projectUtilservice: ProjectUtilservice) { }\n\n ngOnInit(): void {\n }\n\n public backToPrimary() {\n this.backPrimaryDropdown.emit(true);\n }\n\n public redirectToModulo(urlModulo: string): void {\n let url = `${ this._projectUtilservice.getHostName() }/SisproErpCloud`;\n url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo\n\n window.open(url, '_blank');\n }\n\n}\n","<div class=\"d-flex flex-row\">\n <button class=\"chevron d-flex m-0 p-0 align-items-start\" (click)=\"backToPrimary()\"> \n <lib-icon iconName=\"seta-esquerda\" iconSize=\"small\"/>\n </button>\n\n <div class=\"d-flex flex-column flex-row\">\n <li class=\"ms-1 mb-3\" *ngIf=\"modulo != null\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n <span>{{ modulo.label }}</span>\n </li>\n <div *ngIf=\"modulo && modulo.secondary_level != null\">\n <li *ngFor=\"let moduloItem of modulo.secondary_level;\" (click)=\"redirectToModulo(moduloItem.URL)\">\n <a class=\"dropdown-item mb-2 ms-2\">\n <lib-icon class=\"me-2\" [iconName]=\"moduloItem.icon\"></lib-icon>\n {{ moduloItem.label }}\n </a>\n <li>\n </div>\n </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { InfraModule } from 'ngx-sp-infra';\n\nimport { LibCustomMenuService } from '../../../../custom/lib-custom-menu.service';\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { SecondaryDropdownComponent } from '../secondary-dropdown/secondary-dropdown.component';\nimport { MenuServicesService } from '../../menu-services.service';\nimport { IProjeto } from '../../model/iprojeto';\n\n@Component({\n selector: 'app-primary-dropdown',\n templateUrl: './primary-dropdown.component.html',\n styleUrls: ['./primary-dropdown.component.scss'],\n imports: [\n SecondaryDropdownComponent,\n CommonModule,\n InfraModule\n ]\n})\nexport class PrimaryDropdownComponent implements OnInit {\n\n public selectDataState: boolean = false;\n public modulo: any;\n\n @Input() buttonWasClicked!: Observable<boolean>;\n\n public primaryDropdown: Array<any> = [\n ]\n\n constructor(private _customMenuService: LibCustomMenuService,\n private _projectUtilservice: ProjectUtilservice,\n private _menuServices: MenuServicesService\n ) { }\n\n ngOnInit(): void {\n this.buttonWasClicked.subscribe(() => { this.selectDataState = true });\n \n // Resolver colisão de eventos\n if (this._customMenuService.menuDynamic || this._customMenuService.menuDynamicCustom) {\n\n if (!this._customMenuService.menuConfig) {\n setTimeout(() => {\n this.getProjects();\n }, 2000);\n } else {\n this.getProjects();\n }\n \n } else {\n this.getProjects();\n }\n \n }\n\n public openDropdown(modulo: any, desiredDropdown: TemplateRef<any>) {\n this.modulo = modulo;\n \n if (desiredDropdown == null) {\n this.selectDataState = true;\n } else {\n this.selectDataState = false;\n }\n }\n\n public onClickedOutside(e: Event, ref: HTMLDivElement) {\n if (this.selectDataState = false) {\n this.selectDataState = true;\n }\n }\n\n public backToPrimary(data: boolean) {\n this.selectDataState = true;\n }\n\n public redirectToPrePortal(): void {\n const url: string = `${ this._projectUtilservice.getHostName() }/SisproErpCloud/PrePortal`;\n\n window.open(url, '_blank');\n }\n\n public redirectToModulo(urlModulo: string): void {\n let url = `${ this._projectUtilservice.getHostName() }/SisproErpCloud`;\n url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo\n\n window.open(url, '_blank');\n }\n\n /** Inicializa as opções do menu dropdown.\n * @returns As opções do dropdown inicializadas.\n */\n public getProjects(): void {\n this._menuServices.getProjects().subscribe({\n next: response => {\n this.primaryDropdown = this.initializeMenuDropdown(response.Dropdown)\n }, error: error => {\n this.primaryDropdown = [];\n }\n })\n\n }\n\n public initializeMenuDropdown(projects: IProjeto[]): Array<any> {\n\n let primaryDropdownList: Array<any> = [];\n\n for (let project of projects) {\n\n if (project.Produtos.length == 0)\n {\n primaryDropdownList.push({ id: project.IdUnico, icon: project.Icon, label: project.Nome, URL: project.UrlHome, secondary_level: null });\n } else {\n let productList: Array<any> = [];\n let id = project.IdUnico * 100;\n\n for (let product of project.Produtos) {\n id++;\n\n productList.push({ id: id, icon: product.Icon, label: product.Nome, URL: product.UrlHome });\n } \n \n primaryDropdownList.push({ id: project.IdUnico, icon: project.Icon, label: project.Nome, URL: '', secondary_level: productList });\n }\n \n } \n\n /*\n { id: 1, icon: 'assets/icons/sispro/corporativo.svg', label: 'Corporativo', URL: 'Corporativo', secondary_level: null },\n { id: 2, icon: 'assets/icons/sispro/contratos.svg', label: 'Contratos', URL: 'Contratos', secondary_level: null },\n { id: 3, icon: 'assets/icons/sispro/fiscal.svg', label: 'Fiscal', URL: 'Fiscal', secondary_level: null },\n { id: 4, icon: 'assets/icons/sispro/contabilidade.svg', label: 'Contabilidade', URL: 'Contabilidade', secondary_level: null },\n { id: 5, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Recursos Humanos', URL: '',\n secondary_level: [\n { id: 201, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Folha de Pagamento', URL: 'Folha' },\n { id: 202, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'eSocial', URL: 'eSocial' },\n { id: 203, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Workflow', URL: 'Workflow' },\n { id: 204, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'PortalRh', URL: 'PortalRh' },\n { id: 205, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Rh Básicos', URL: 'RhBase' }\n ]\n },\n { id: 6, icon: 'assets/icons/sispro/financeiro.svg', label: 'Financeiro', URL: 'Financeiro', secondary_level: null },\n { id: 7, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Suprimentos', URL: '',\n secondary_level: [\n { id: 701, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Compras', URL: 'Compras' },\n { id: 702, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Recebimento', URL: 'Recebimento' },\n { id: 703, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Estoque', URL: 'Estoque' }\n ]\n },\n { id: 8, icon: 'assets/icons/sispro/vendas.svg', label: 'Negociação', URL: 'Vendas', secondary_level: null },\n { id: 9, icon: 'assets/icons/sispro/patrimonio.svg', label: 'Patrimônio', URL: 'Patrimonio', secondary_level: null }\n */\n\n return primaryDropdownList;\n }\n\n}\n","<div class=\"p-2\">\n <div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"mb-2 w-100\">\n <li *ngFor=\"let modulo of primaryDropdown\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\n <a class=\"dropdown-item mb-2\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n {{ modulo.label }}\n </a>\n </li>\n <hr class=\"dropdown-divider\">\n <li>\n <a class=\"dropdown-item link-portal mt-2\" (click)=\"redirectToPrePortal()\" target=\"_blank\">Portal Sispro</a>\n </li>\n </div>\n\n <ng-template #secondary_dropdown>\n <div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\n <app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\n </div>\n </ng-template>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { IMenuItemStructure } from '../../model/imenu-item-structure.model';\n\n@Component({\n selector: 'app-dynamic-menu',\n templateUrl: './dynamic-menu.component.html',\n styleUrls: ['./dynamic-menu.component.scss'],\n imports: [\n // AuthRoutingModule,\n CommonModule,\n RouterLink\n ]\n})\nexport class DynamicMenuComponent implements OnInit {\n\n @Output() selectTemplate: EventEmitter<any> = new EventEmitter;\n\n @Input() submenuRef!: HTMLDivElement;\n\n @Input() recebeParam!: Function;\n\n @Input() titleSubmenu = \"\";\n\n @Input() submenuList?: IMenuItemStructure[] = [];\n\n @Input() hostServerOutSystems = \"\";\n\n menuList: IMenuItemStructure[] = [];\n\n menuStatic: IMenuItemStructure[] = [];\n\n selectedMenuItem: number[] = [];\n\n selectedItem: number = -1;\n\n @ContentChild(TemplateRef) desiredContent?: TemplateRef<any>;\n\n constructor(public router: Router,\n private _projectUtilService: ProjectUtilservice\n ) { }\n\n ngOnInit(): void {\n }\n\n onClickedOutside(e: Event, ref: HTMLDivElement) {\n ref.classList.remove(\"opened-sub\");\n this.submenuList = [];\n this.indicateSelectedMenuItem();\n }\n\n indicateSelectedMenuItem() {\n if (this.selectedMenuItem.length) {\n this.selectedItem = this.selectedMenuItem[0];\n }\n }\n\n changeStar(ref: HTMLButtonElement, id: IMenuItemStructure | undefined) {\n ref.classList.toggle(\"star\");\n ref.classList.toggle(\"yellow-star\");\n }\n\n public getExternalUrl(url: string) {\n return `${ this.hostServerOutSystems == \"\" ? this._projectUtilService.getHostName() : this.hostServerOutSystems }/${ url }`;\n }\n\n}\n","<div #submenu class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">{{ titleSubmenu }}</h1>\n <div class=\"itens-list\">\n <ul style=\"width: 100%\">\n\n <li *ngFor=\"let itemList of submenuList; let i = index\" [id]=\"itemList!.id\"\n class=\"d-flex justify-content-between align-items-center\"\n [class]=\"i == 0 ? 'mt-1' : ''\">\n\n <a *ngIf=\"!itemList.isExternal; else externalMenu\"\n [routerLink]=\"itemList!.route != null ? ['/' + itemList!.route] : null\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(itemList.route)\"\n target=\"_blank\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n </ng-template>\n\n <!-- <button class=\"star favoritos\" #star (click)=\"changeStar(star, itemList)\"></button> -->\n </li>\n </ul>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-notif-submenu',\n templateUrl: './notif-submenu.component.html',\n styleUrls: ['./notif-submenu.component.scss'],\n imports: []\n})\nexport class NotifSubmenuComponent implements OnInit {\n\nconstructor() { }\n\nngOnInit(): void {\n \n}\n}\n","<div class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">Notificações</h1>\n</div>\n<div class=\"body-notif\">\n <div class=\"new-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Novas (2)</p><p>Marcar todas como Lidas</p>\n </div>\n <div class=\"scroll\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"read-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Lidas</p>\n </div>\n <div class=\"scroll-second\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\n\nimport { NgxPaginationModule } from 'ngx-pagination';\n\nimport { InfraEstabelecimentoFavoritoDefault, InfraModule, MessageService } from 'ngx-sp-infra';\nimport { AuthStorageService } from '../../../../storage/auth-storage.service';\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { LibCustomMenuService } from '../../../../custom/lib-custom-menu.service';\nimport { MenuServicesService } from '../../menu-services.service';\n\n@Component({\n selector: 'selecao-estabelecimentos-modal',\n templateUrl: './selecao-estabelecimentos-modal.component.html',\n styleUrls: ['./selecao-estabelecimentos-modal.component.scss'],\n imports: [\n NgxPaginationModule,\n InfraModule,\n CommonModule\n ]\n})\nexport class SelecaoEstabelecimentosModalComponent implements OnInit {\n constructor(\n private _authStorageService: AuthStorageService,\n private _customMenuService: LibCustomMenuService,\n private _menuServicesService: MenuServicesService,\n private _messageService: MessageService,\n private _projectUtilService: ProjectUtilservice\n ) { }\n\n ngOnInit(): void {\n this.getEstabelecimentos(\"\");\n }\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n // [...]\n // #endregion PRIVATE\n\n // #region PUBLIC\n @Output() public onClose = new EventEmitter<any>();\n @Output() public onSelected = new EventEmitter<any>();\n\n public $estabelecimentosList!: InfraEstabelecimentoFavoritoDefault[];\n\n public page: number = 1;\n public itemsPerPage: number = 10;\n\n public response_messages = {\n 'emptyMessage': 'Consulta não retornou registros...',\n 'totalMessage': 'Linhas encontradas.'\n };\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n // #region ==========> FORM BUILDER <==========\n\n // #region DATA\n // [...]\n // #endregion DATA\n\n // #region VALIDATORS\n // [...]\n // #endregion VALIDATORS\n\n // #endregion ==========> FORM BUILDER <==========\n\n\n // #region ==========> SERVICES <==========\n\n // #region PREPARATION\n\n public refreshList(pesquisa: string): void {\n this.getEstabelecimentos(pesquisa);\n }\n\n private getEstabelecimentos(pesquisa: string = \"\"): void {\n this._menuServicesService.getEstabelecimentosModalList(this._authStorageService.infraUsuarioId, pesquisa).subscribe({\n next: response => {\n this.$estabelecimentosList = response.InfraEstabelecimentos;\n\n this.resetPagination(this.$estabelecimentosList);\n\n if (response.InfraEstabelecimentos.length == 0) {\n this._messageService.showAlertDanger(this.response_messages.emptyMessage);\n }\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n\n this.$estabelecimentosList = [];\n }\n })\n }\n\n // #endregion PREPARATION\n\n // #region GET\n // [...]\n // #endregion GET\n\n // #region CREATE OR UPDATE\n\n /**\n * Atualiza o estado do Estabelecimento, informando se ele é Padrão ou não.\n * @param estabID ID do Estabelecimento a ser alterado\n * @param isDefault Informa se ele é Padrão ou não\n */\n public defineDefaultEstabelecimento(estabID: string, isDefault: boolean): void {\n this._menuServicesService.defineDefaultEstabelecimento(estabID, this._authStorageService.infraUsuarioId, isDefault).subscribe({\n next: () => {\n this.getEstabelecimentos(\"\");\n\n isDefault\n ? this._messageService.showAlertSuccess('Novo estabelecimento definido como padrão para o usuário')\n : this._messageService.showAlertSuccess('Estabelecimento padrão removido para o usuário');\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n }\n\n // #endregion CREATE OR UPDATE\n\n // #region DELETE\n // [...]\n // #endregion DELETE\n\n // #endregion ==========> SERVICES <==========\n\n\n // #region ==========> UTILITIES <==========\n\n /**\n * Envia um sinal ao componente pai com o ID e Nome do Estabelecimento selecionado no Modal\n * @param estabID ID do Estabelecimento que será enviado\n * @param estabNome Nome do Estabelecimento que será enviado\n */\n public selectEstabelecimento(estabID: string, estabNome: string): void {\n\n // * Método customizado para emissão de evento ao trocar de estabelecimento\n this._customMenuService.menuEmitEstabelecimentoEvent();\n\n this.onSelected.emit(estabID + \" - \" + estabNome);\n }\n\n\n /**\n * Realiza uma nova pesquisa no banco para atualizar a lista a cada 3 caracteres digitados\n * @param pesquisa Texto do input de pesquisa\n */\n public updateSearch(pesquisa: string): void {\n pesquisa.length % 3 == 0\n ? this.getEstabelecimentos(pesquisa)\n : null;\n }\n\n /**\n * Verifica se a string passada é alfanumérica.\n * @param str String que será verificada\n * @returns TRUE se for alfanumérica, caso contrário FALSE.\n */\n private isAlphanumeric(str: string) {\n var code, i, len;\n\n for (i = 0, len = str.length; i < len; i++) {\n code = str.charCodeAt(i);\n if (!(code > 47 && code < 58) && // (0-9)\n !(code > 64 && code < 91) && // (A-Z)\n !(code > 96 && code < 123)) { // (a-z)\n\n return false;\n }\n }\n return true;\n };\n\n /** Modifica a quantidade de itens a ser mostrada na lista.\n * @param event parâmetro de evento que irá selecionar a nova quantidade.\n */\n public onSelectChange(event: any) {\n this.itemsPerPage = parseInt(event.target.value, 10);\n this.page = 1;\n }\n\n /** Reseta a paginação da listagem.\n */\n public resetPagination(list: any[]): void {\n // Cálculo para encontrar o valor inicial do index da página atual\n const startIndex = (this.page - 1) * this.itemsPerPage;\n\n // Condição para resetar o valor da paginação\n if (list.length <= startIndex) {\n this.page = 1;\n }\n }\n // #endregion ==========> UTILITIES <==========\n\n // #region ==========> MODALS <==========\n\n public closeSelf() {\n this.onClose.emit();\n }\n\n // #endregion ==========> MODALS <==========\n\n}\n","<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left color-modal\" style=\"font-size: 20px; font-weight: bold;\"> Selecione um\n estabelecimento </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"modal-message\">\n <div class=\"search-and-filters d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row w-100\">\n <div class=\"input-group\">\n <span class=\"input-group-text px-2\" id=\"basic-addon1\"\n style=\"background-color: transparent; border-right: none;\">\n <lib-icon iconName=\"lupa\" iconColor=\"gray\"/>\n </span>\n <input type=\"text\" class=\"form-control border-start-0 ps-0\" id=\"pesquisaInput\" #pesquisa\n placeholder=\"Digite o Código\" (keyup.enter)=\"refreshList(pesquisa.value)\">\n </div>\n </div>\n\n <div class=\"filters d-flex align-items-center justify-content-between ms-3\">\n <div class=\"search-buttons d-flex flex-row align-items-center my-0 mx-0\">\n <button id=\"clearFilterBtn\" class=\"btn btn-outline-primary ms-0 no-hover-btn me-2\"\n (click)=\"pesquisa.value = ''; refreshList(pesquisa.value)\"> Limpar </button>\n <button id=\"searchFilterBtn\" class=\"btn btn-primary me-0\" (click)=\"refreshList(pesquisa.value)\"> Pesquisar\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"table-list w-100 mt-3\" *ngIf=\"$estabelecimentosList; else loading\">\n <table class=\"table table-bordered table-hover mb-0\">\n <thead class=\"fs-6\">\n <tr>\n <th scope=\"col\" class=\"col-11 align-middle th\">Estabelecimento</th>\n <th scope=\"col\" class=\"col-1 align-middle text-center th\">Ações</th>\n </tr>\n </thead>\n\n <tbody *ngIf=\"$estabelecimentosList.length > 0; else emptyList\">\n <tr\n *ngFor=\"let estabelecimento of $estabelecimentosList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }\">\n <td>\n <div style=\"cursor: pointer;\" (click)=\"selectEstabelecimento(estabelecimento.ID, estabelecimento.NOMEEXIBICAO)\">\n <span class=\"row-name\"> {{ estabelecimento.CODIGO }} - {{ estabelecimento.NOMEEXIBICAO }} </span>\n <span class=\"subname\"> {{ estabelecimento.IS_MATRIZ ? \"Matriz \" : null }} CNPJ: {{ estabelecimento.CNPJ\n }} </span>\n </div>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"action-icons d-flex flex-row align-items-center justify-content-around\">\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"flexSwitchCheckChecked\"\n tooltip=\"Estabelecimento padrão\" [checked]=\"estabelecimento.IS_DEFAULT\"\n style=\"transform: translateY(3px); height: 1rem; width: 28px;\" #isDefaultRow\n (click)=\"estabelecimento.IS_DEFAULT = !estabelecimento.IS_DEFAULT; defineDefaultEstabelecimento(estabelecimento.ID, estabelecimento.IS_DEFAULT)\">\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n\n <!-- #region EMPTY LIST CELL -->\n <ng-template #emptyList>\n <tbody>\n <tr>\n <td colspan=\"2\" class=\"align-middle\"><span class=\"row-name fw-light fst-italic text-center\"> {{\n response_messages.emptyMessage }} </span></td>\n </tr>\n </tbody>\n </ng-template>\n <!-- #endregion EMPTY LIST CELL -->\n </table>\n\n <!-- #region PAGINATION -->\n <div class=\"d-flex justify-content-end mt-2\" *ngIf=\"$estabelecimentosList.length > 0\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\">Itens por página</label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option class=\"selected\" value=\"10\" selected>10</option>\n <option value=\"25\">25</option>\n <option value=\"50\">50</option>\n </select>\n </div>\n\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\"\n previousLabel=\"« \" nextLabel=\" »\" [maxSize]=\"5\">\n </pagination-controls>\n </div>\n <!-- #endregion PAGINATION -->\n \n </div>\n\n <!-- <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <span style=\"color: #6C757D\"> Registros {{$estabelecimentosList.length}} de {{$estabelecimentosList.length}} </span>\n <nav aria-label=\"...\">\n <ul class=\"pagination mb-0\">\n <li class=\"page-item disabled\"> <a class=\"page-link\" href=\"#\" tabindex=\"-1\">Anterior</a> </li>\n <li class=\"page-item active\"> <a class=\"page-link\" href=\"#\">1</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">2</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">3</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">Próximo</a> </li>\n </ul>\n </nav>\n </div> -->\n\n\n <ng-template #loading>\n <lib-spinner></lib-spinner>\n </ng-template>\n </div>\n </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\n\nimport { InfraModule } from 'ngx-sp-infra';\n\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { MenuServicesService } from '../../menu-services.service';\n\n@Component({\n selector: 'versoes-modal',\n templateUrl: './versoes-modal.component.html',\n styleUrls: ['./versoes-modal.component.scss'],\n imports: [\n InfraModule,\n CommonModule\n ]\n})\nexport class VersoesModalComponent implements OnInit {\n constructor(\n private _menuServicesService: MenuServicesService,\n private _projectUtilService: ProjectUtilservice\n ) { }\n\n ngOnInit(): void {\n this.getVersions();\n }\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Output() public onClose = new EventEmitter<any>();\n \n public versionInfra: string = '';\n public versionCorporativo: string = '';\n\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n // #region ==========> SERVICES <==========\n\n // #region PREPARATION\n\n private getVersions(): void {\n \n // Obtém Versão da Infra\n this._menuServicesService.getVersionInfra().subscribe({\n next: response => {\n this.versionInfra = response.Version;\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n\n // Obtém Versão do Corporativo\n this._menuServicesService.getVersionCorporativo().subscribe({\n next: response => {\n this.versionCorporativo = response.Version;\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n\n }\n\n // #endregion PREPARATION\n\n // #endregion ==========> SERVICES <==========\n\n // #region ==========> MODALS <==========\n\n public closeSelf() {\n this.onClose.emit();\n }\n\n // #endregion ==========> MODALS <==========\n\n}\n","<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left color-modal\" style=\"font-size: 20px; font-weight: bold;\"> Versões </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col\">\n <span><strong>Versão Infra:</strong> {{versionInfra}}</span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <span><strong>Versão Corporativo:</strong> {{versionCorporativo}}</span>\n </div>\n </div>\n </div>\n</div>","import { CommonModule, NgIf } from '@angular/common';\nimport { Component, ContentChild, ElementRef, Inject, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { NavigationEnd, Router, RouterLink, RouterOutlet } from '@angular/router';\nimport { filter, Subject } from 'rxjs';\n\nimport { MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalService } from '@azure/msal-angular';\nimport { AuthenticationResult, LogLevel, PublicClientApplication } from '@azure/msal-browser';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ToastrService } from 'ngx-toastr';\n\nimport { InfraModule, MessageService } from 'ngx-sp-infra';\nimport { LibCustomMenuService } from '../../../custom/lib-custom-menu.service';\nimport { ProjectUtilservice } from '../../../project/project-utils.service';\nimport { AuthStorageService } from '../../../storage/auth-storage.service';\nimport { MenuServicesService } from '../menu-services.service';\n\nimport { AuthService } from '../../../auth.service';\nimport { LibCustomEnvironmentService } from '../../../custom/lib-custom-environment.service';\nimport { InfraInAuthTypeId } from '../../../models/infraInAuthTypeId';\nimport { PesquisaTelasGlobalService } from '../../../services/pesquisa-telas-global.service';\nimport { PrimaryDropdownComponent } from '../dropdown/primary-dropdown/primary-dropdown.component';\nimport { DynamicMenu } from '../model/dynamic-menu';\nimport { IMenuItemStructure } from '../model/imenu-item-structure.model';\nimport { ISubmenuItemStructure } from '../model/isubmenu-item-structure.model';\nimport { Usuario_IMG } from '../model/usuario-img';\nimport { DynamicMenuComponent } from '../submenus/dynamic-menu/dynamic-menu.component';\nimport { NotifSubmenuComponent } from '../submenus/notif-submenu/notif-submenu.component';\nimport { SelecaoEstabelecimentosModalComponent } from './selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component';\nimport { VersoesModalComponent } from './versoes-modal/versoes-modal.component';\n@Component({\n selector: 'app-menu-lateral',\n templateUrl: './menu-lateral.component.html',\n styleUrls: ['./menu-lateral.component.scss'],\n imports: [\n PopoverModule,\n TooltipModule,\n InfraModule,\n SelecaoEstabelecimentosModalComponent,\n VersoesModalComponent,\n NotifSubmenuComponent,\n DynamicMenuComponent,\n PrimaryDropdownComponent,\n CommonModule,\n RouterLink,\n RouterOutlet,\n NgIf\n ]\n})\nexport class MenuLateralComponent implements OnInit, OnDestroy {\n constructor(\n @Inject(MSAL_GUARD_CONFIG) private _msalGuardConfiguration: MsalGuardConfiguration,\n private _msalService: MsalService,\n private _toastrService: ToastrService,\n private _customEnvironmentService: LibCustomEnvironmentService,\n private _authStorageService: AuthStorageService,\n private _bsModalService: BsModalService,\n private _menuServices: MenuServicesService,\n private _messageService: MessageService,\n private _projectUtilService: ProjectUtilservice,\n private _router: Router,\n private _authService: AuthService,\n \n public _customMenuService: LibCustomMenuService,\n public _pesquisaTelas: PesquisaTelasGlobalService,\n ) {\n // Implementação que verifica eventos acionados na classe de service.\n this._menuServices.getNewUserImageEvent().subscribe( () => { this.getMenuUserImg(); })\n }\n\n public async ngOnInit() {\n\n document.addEventListener('keydown', this.handleKeyboardShortcut);\n\n // Inscreva-se no evento NavigationEnd para receber notificações quando a rota mudar, serve para atualizar a seleção do menu corretamente\n this._router.events.pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd)).subscribe((event: any) => { this._customMenuService.menuItems = this._customMenuService.menuConfig.updateRouteSelection(this._router.url, this._customMenuService.menuItems) });\n\n if (!this._customMenuService.menuDynamic && !this._customMenuService.menuDynamicCustom) {\n this._customMenuService.menuConfig.setMenuType(true);\n\n this._customMenuService.menuItems = this._customMenuService.menuConfig.initializeMenu(this._router.url);\n\n // Método com customizações para inicialização do Menu Estático\n this._customMenuService.menuStaticOnInit();\n }\n else\n {\n // Método com customizações para inicialização do Menu Dinâmico\n\n if (this._customMenuService.menuDynamic) {\n this._customMenuService.menuConfig.setMenuType(false);\n\n // Método com customizações obter o Módulo para montagem do Menu Dinâmico Lateral\n const projetoId: number = this._customMenuService.menuDynamicGetProjetoId();\n\n this._menuServices.getMenuLateral(projetoId).subscribe({\n next: response => {\n const menus = this.constroiRegrasDynamicMenu(response.MenuSubmenu);\n\n this._customMenuService.menuItems = this._customMenuService.menuConfig.initializeMenu(this._router.url, menus);\n }, error: error => {\n this._customMenuService.menuItems = this._customMenuService.menuConfig.initializeMenu(this._router.url);\n }\n })\n\n //Atualmente o erro é tratado no back para retornar vazio, feito assim para garantir que não quebre em clientes que ainda não tem essa tabela\n //Feito para implementação do APP9\n this._menuServices.GetHostServerOutSystems().subscribe({\n next:response => {\n this._hostServeUrlOutSystems = response.String\n },\n error:error => console.error(error)\n })\n\n }\n\n this._customMenuService.menuDynamicOnInit();\n }\n\n this.nomeEstabelecimento = this._authStorageService.infraEstabNome;\n this.footerUserName = this._authStorageService.userName;\n\n this.checkForCachedImage();\n\n this.getUserEmail();\n\n // Tratamemto exclusivo para o método de autenticação Azure\n if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Azure && this._authStorageService.user.toLowerCase() != \"admin\") {\n await this.initMsal();\n }\n\n }\n\n ngOnDestroy(): void {\n document.removeEventListener('keydown', this.handleKeyboardShortcut);\n }\n\n @ViewChild('sidebar', { static: true }) sidebar!: ElementRef<HTMLDivElement>;\n\n handleKeyboardShortcut = (event: KeyboardEvent): void => {\n if (event.ctrlKey && event.key.toLowerCase() === 'b') {\n event.preventDefault(); // Prevents any default behavior (like bold in text editors)\n this.openExpansibleMenu(this.sidebar.nativeElement);\n }\n };\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _hostServeUrlOutSystems: string = \"\";\n\n private readonly MODAL_ESTABELECIMENTO: number = 1;\n private readonly MODAL_VERSION: number = 2;\n\n // ERICK: vou manter este por enquanto para quando for necessário esta funcionalidade eu consiga refazê-las sem muito problema\n @ViewChild(\"notif_menu\") private notif_template?: TemplateRef<any>;\n\n // #region PUBLIC\n\n @ViewChild('menuLink') public menuLink!: HTMLAnchorElement;\n @ContentChild(TemplateRef) public desiredContent?: TemplateRef<any>;\n\n public nomeEstabelecimento: string = 'Estabelecimento padrão';\n public titleSubmenu: string = \"\";\n public submenuList: (ISubmenuItemStructure | undefined)[] = [];\n\n public messageIfClicked = new Subject<boolean>();\n\n /** Esta variável é usada na abertura do submenu e do submenu secundário para\n * que a função onClickedOutside() que está na segunda div principal do HTML do\n * componente não seja ativada, pois se ela for ativada ela irá fechar o menu\n * lateral, e quando vamos do submenu para o submenu secundário não queremos\n * fechar o menu lateral, e quando vamos do submenu secundário para o submenu\n * também não queremos fechar o menu lateral;\n */\n public closeMenu: boolean = true;\n\n /** Utilizada como a fonte da imagem de perfil do usuário logado no sistema. */\n public footerUserImgSrc: string = \"\";\n\n /** Emai do usuário logado para ser exibido no popover */\n public footerUserEmail: string = \"\";\n\n /** Nome do usuário logado para ser exibido no rodapé do menu. */\n public footerUserName: string = \"Usuário\";\n\n public isPopoverVisible: boolean = false;\n public showBalloon: boolean = false;\n\n public get HostServerOutSystems():string { return this._hostServeUrlOutSystems }\n\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n // #region ==========> SERVICES <==========\n\n // #region GET\n private getEstabelecimentoSession(estabID: string): void {\n this._menuServices.getEstabelecimentoSession(estabID).subscribe({\n next: response => {\n this.nomeEstabelecimento = response.InfraEstabNome;\n this._authStorageService.infraEmpresaId = response.InfraEmpresaId;\n this._authStorageService.infraEmpresaNome = response.InfraEmpresaNome;\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n }\n\n private getMenuUserImg(): void {\n this._menuServices.getImagemMenu().subscribe({\n next: response => { this.footerUserImgSrc = response.InfraUsuarioImg.Imagem; },\n error: error => { this._projectUtilService.showHttpError(error); }\n })\n }\n\n public getUserEmail(): void {\n this._menuServices.getUsuarioEmail().subscribe({\n next: response => { this.footerUserEmail = response.Email; },\n error: error => { this._projectUtilService.showHttpError(error); }\n })\n }\n // #endregion GET\n\n // #region UPDATE\n public updateLastLogEstabelecimento(estab: string): void {\n this._menuServices.updateLastLogEstabID(estab.split(\" - \")[0]).subscribe({\n next: () => {\n this._messageService.showAlertSuccess('Estabelecimento alterado com sucesso!');\n\n this.getEstabelecimentoSession(estab.split(\" - \")[0]);\n }\n })\n\n this._authStorageService.infraEstabId = estab.split(\" - \")[0];\n this._authStorageService.infraEstabNome = estab.split(\" - \")[1];\n }\n // #endregion UPDATE\n\n // #endregion ==========> SERVICES <==========\n\n // #region ==========> UTILITIES <==========\n\n public togglePopover() { this.showBalloon = !this.showBalloon; }\n\n public dropdownWasOpened(value: boolean): void { this.messageIfClicked.next(value); }\n\n public openExpansibleMenu(ref: HTMLDivElement): void {\n ref.classList.toggle(\"closed\");\n ref.classList.toggle(\"col\");\n document.querySelector(\".sidebar-control\")?.classList.toggle(\"col\");\n\n // Método com customizações para inicialização do Menu Estático\n this._customMenuService.menuOpenExpansibleMenu(ref);\n }\n\n public openSubmenu(menu: IMenuItemStructure, ref: HTMLDivElement, desiredMenu: TemplateRef<any>): void {\n\n if (menu.children && menu.children.length > 0 && menu.route == \"\") {\n this.titleSubmenu = menu.label\n this.desiredContent = desiredMenu;\n ref.classList.remove(\"opened-notif-sub\");\n\n if (this.submenuList === menu.children) {\n this.closeMenu = false;\n }\n else if (!ref.classList.contains(\"opened-sub\")) { ref.classList.toggle(\"opened-sub\"); }\n this.submenuList = menu.children;\n }\n\n else if (!menu.children || (menu.children && menu.children.length == 0) || menu.route != \"\") {\n this.submenuList = [];\n ref.classList.toggle(\"selectedItem\");\n this.onClickedOutside(new Event(\"\"), ref);\n }\n }\n\n public onClickedOutside(e: Event, ref: HTMLDivElement): void {\n ref.classList.remove(\"opened-sub\");\n this.submenuList = [];\n }\n\n // #region MENU FOOTER USER IMAGE\n private validateCachedImg(footerImg: Usuario_IMG | null): boolean {\n let usuarioId: string = this._authStorageService.infraUsuarioId;\n\n if (!footerImg || footerImg == null) { return true; }\n\n if (usuarioId != footerImg.USUARIOID) { return true; }\n\n this.footerUserImgSrc = footerImg.FILE;\n return false;\n }\n\n private checkForCachedImage(): void {\n const isAPIRequestNeeded = this.validateCachedImg(this._menuServices.getMenuFooterImg());\n if (isAPIRequestNeeded) { this.getMenuUserImg(); }\n }\n // #endregion MENU FOOTER USER IMAGE\n\n public logout(): void {\n\n // Verifica se é Login Azure\n if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Azure && this._authStorageService.user.toLowerCase() != \"admin\") {\n const hostAuthLogin = !this._customEnvironmentService.production ? \"http://localhost:4200/auth/login\" : `${ this._customEnvironmentService.hostName }/SisproErpCloud/${ this._customEnvironmentService.product }/auth/login`;\n\n\n this._msalService.logoutRedirect({\n postLogoutRedirectUri: hostAuthLogin\n });\n }\n\n this._authService.logout();\n }\n\n public getExternalUrl(url: string) {\n return `${ this._hostServeUrlOutSystems == \"\" ? this._projectUtilService.getHostName() : this._hostServeUrlOutSystems }/${ url }`;\n }\n\n public constroiRegrasDynamicMenu(menus: DynamicMenu[]) {\n const home = { id: 1, label: \"Início\", descricao: \"Tela inicial\", icon: \"casa\", route: \"home\", isExternal: false, isSelected: this._router.url.includes(\"home\"), }\n menus.unshift(home);\n return menus;\n }\n\n // #endregion ==========> UTILITIES <==========\n\n // #region Azure\n\n private async configMsal() {\n const isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\n\t\tconst hostAuthLogin = !this._customEnvironmentService.production ? \"http://localhost:4200/auth/login\" : `${ this._customEnvironmentService.hostName }/SisproErpCloud/${ this._customEnvironmentService.product }/auth/login`;\n\n this._msalService.instance = new PublicClientApplication({\n auth: {\n clientId: `${ this._authStorageService.azureClientId }`,\n authority: `https://login.microsoftonline.com/${ this._authStorageService.azureTenantId }`,\n redirectUri: hostAuthLogin + \"/\",\n postLogoutRedirectUri: hostAuthLogin,\n navigateToLoginRequestUrl: true\n },\n cache: {\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: isIE\n },\n system: {\n loggerOptions: {\n loggerCallback: (logLevel, message, containsPii) => {\n console.log(message);\n },\n logLevel: LogLevel.Error,\n piiLoggingEnabled: false\n }\n }\n });\n }\n\n private async initMsal() {\n await this.configMsal().then(() => {\n this._msalService.handleRedirectObservable().subscribe({\n next: (result: AuthenticationResult) => {\n\n if (!this._msalService.instance.getActiveAccount() && this._msalService.instance.getAllAccounts().length > 0) {\n this._msalService.instance.setActiveAccount(result.account);\n }\n\n },\n error: (error) => {\n this._toastrService.warning(`Erro na inicialização dos parâmetros de configuração do 'Azure': ${ error }`, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n }\n });\n });\n }\n\n\n // #region ==========> MODALS <==========\n\n // #region modal - Seleção de Estabelecimentos\n\n /** Função simples com o objetivo de abrir os modais no centro da tela.\n * @param template Template HTML do modal que será aberto.\n */\n public openModalEstabelecimento(template: TemplateRef<any>) {\n this._bsModalService.show(template, {\n class: 'modal-dialog-centered modal-lg',\n ignoreBackdropClick: false,\n keyboard: false,\n id: this.MODAL_ESTABELECIMENTO\n });\n }\n\n /** Função simples com o objetivo de fechar os modais que estiverem abertos (baseados pelo ID).\n */\n public closeModalEstabelecimento() {\n this._bsModalService.hide(this.MODAL_ESTABELECIMENTO);\n }\n\n // #endregion modal - Seleção de Estabelecimentos\n\n // #region modal - Versões\n\n /** Função simples com o objetivo de abrir os modais no centro da tela.\n * @param template Template HTML do modal que será aberto.\n */\n public openModalVersion(template: TemplateRef<any>) {\n this._bsModalService.show(template, {\n class: 'modal-dialog-centered modal-sm',\n ignoreBackdropClick: false,\n keyboard: false,\n id: this.MODAL_VERSION\n });\n }\n\n /** Função simples com o objetivo de fechar os modais que estiverem abertos (baseados pelo ID).\n */\n public closeModalVersion() {\n this._bsModalService.hide(this.MODAL_VERSION);\n }\n\n // #endregion modal - Versões\n\n // #endregion ==========> MODALS <==========\n\n}\n","<!-- #region MAIN CONTENT -->\n<div id=\"menu\" class=\"main col-12\">\n\n <div style=\"height: 100vh; z-index: 3;\" class=\"sidebar-control position-relative d-flex flex-row\"\n (clickOutside)=\"closeMenu == true ? onClickedOutside($event, submenu_ref) : closeMenu = true\">\n <div class=\"sidebar {{_customMenuService.themeColor}} closed\" #sidebar>\n <div class=\"menu-header\">\n <ul>\n <li class=\"mb-3\">\n <div class=\"logo-hamburguer\">\n <img src=\"assets/icons/logotipo-sispro.svg\" alt=\"logo-sispro\" class=\"logo-sispro\" title=\"logo\" width=\"136px\" height=\"48px\">\n <button class=\"button-hamburguer\" (click)=\"openExpansibleMenu(sidebar)\">\n <img src=\"assets/icons/menu.svg\" alt=\"menu hamburguer\">\n </button>\n </div>\n </li>\n\n <!-- #region MÓDULOS -->\n <li class=\"mb-3\" style=\"margin-left: 8px; margin-right: 8px\">\n <div class=\"btn-group\">\n <button (click)=\"dropdownWasOpened(true)\" type=\"button\" class=\"dropdown-button\" data-bs-toggle=\"dropdown\"\n aria-expanded=\"false\" data-bs-auto-close=\"outside\">\n <ng-container>\n <lib-icon iconColor=\"white\" [iconName]=\"_customMenuService.moduleSvg\" />\n <span class=\"ps-2\"> {{ this._customMenuService.moduleName }} <lib-icon iconName=\"seta-direita\" iconColor=\"white\" /> </span>\n </ng-container>\n </button>\n <ul class=\"dropdown-menu\" #dropdown_ref>\n <app-primary-dropdown [buttonWasClicked]=\"messageIfClicked\"></app-primary-dropdown>\n </ul>\n </div>\n </li>\n <!-- #endregion MÓDULOS -->\n\n <!-- #region ESTABELECIMENTOS -->\n <li class=\"mx-3\" style=\"margin-bottom: 16px;\">\n <div class=\"icon-estabelecimento\">\n <button class=\"row justify-content-between bg-transparent border-0\"\n (click)=\"openModalEstabelecimento(modalEstabelecimento)\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : nomeEstabelecimento\" placement=\"right\">\n\n <lib-icon class=\"col-1\" iconName=\"predio\" iconColor=\"white\" />\n <span *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-9 ps-2 glb-text-width-160 text-start text-truncate\"> {{ nomeEstabelecimento }} </span>\n <lib-icon *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-1\" iconName=\"seta-direita\" iconColor=\"white\" />\n </button>\n </div>\n </li>\n <!-- #endregion ESTABELECIMENTOS -->\n\n\n <!-- #region PESQUISA -->\n @if (_customMenuService.menuDynamic) {\n <li class=\"mx-3 mb-3\">\n <div class=\"icon-pesquisa\">\n <button class=\"d-flex align-items-center justify-content-start gap-2 bg-transparent border-0\" (click)=\"_pesquisaTelas.show()\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : 'Pesquisar telas'\" placement=\"right\">\n \n <lib-icon class=\"col-1\" iconName=\"lupa\" iconColor=\"white\" />\n @if (!sidebar.classList.contains('closed')) { <span class=\"col ps-2 text-start text-truncate\"> Pesquisar telas </span> }\n </button>\n </div>\n </li>\n }\n <!-- #endregion PESQUISA -->\n\n </ul>\n\n </div>\n\n <!-- #region MENUS DE NAVEGAÇÃO -->\n <div class=\"main-menu\">\n <div class=\"scroll\">\n <div class=\"list-menu px-2 pb-1\">\n\n <!-- #region MENU DINÂMICO -->\n <div class=\"dynamic-menu\">\n <ul #dynamic_menu_items *ngIf=\"_customMenuService.menuItems; else isLoading\">\n\n <li *ngFor=\"let menuItem of _customMenuService.menuItems; let i = index\"\n class=\"p-1 rounded\"\n (click)=\"openSubmenu(menuItem, submenu_ref, dynamic_menu)\"\n [class.selectedItem]=\"menuItem.isSelected\">\n\n <a *ngIf=\"!menuItem.isExternal; else externalMenu\"\n [routerLink]=\"menuItem.route != '' ? menuItem.route : null\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImg\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImg>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(menuItem.route)\"\n target=\"_blank\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImgExternal\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImgExternal>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n </ng-template>\n </li>\n\n </ul>\n </div>\n\n <ng-template #isLoading>\n <li class=\"spinner-border spinner-border-sm mt-2\" role=\"status\" aria-hidden=\"true\"></li>\n </ng-template>\n <!-- #endregion MENU DINÂMICO -->\n\n </div>\n </div>\n </div>\n <!-- #endregion MENUS DE NAVEGAÇÃO -->\n\n <!-- #region FOOTER -->\n <div class=\"footer-menu\" (mouseenter)=\"showBalloon = true\" (mouseleave)=\"showBalloon = false\"\n [popover]=\"popoverContent\" placement=\"right bottom\" [outsideClick]=\"true\" containerClass=\"width: 200px\" >\n <div class=\"footer-components d-flex flex-row align-items-center gap-2 py-2 px-1 justify-content-center gap-2\" [class.open]=\"showBalloon\">\n @if (footerUserImgSrc) {\n <img class=\"photo-profile\" [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n }\n @else {\n <lib-icon iconName=\"contraparte\" iconColor=\"white\"/>\n }\n\n <span class=\"text-truncate fw-bold text-start\" style=\"max-width: 100%;\"> {{ footerUserName }} </span>\n </div>\n </div>\n\n <ng-template #popoverContent>\n <div class=\"footer-menu\" style=\"width: 1000px;\">\n <div class=\"d-flex align-items-center\">\n <img *ngIf=\"footerUserImgSrc; else noUserImg\" class=\"photo-profile\"\n [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n <ng-template #noUserImg>\n <lib-icon iconName=\"contraparte\" iconColor=\"currentColor\"/>\n </ng-template>\n <div class=\"d-flex flex-column ms-1\">\n <div [tooltip]=\"footerUserName\" class=\"dynamic-container\" style=\"white-space: nowrap; flex-grow: 1;max-width: 200px; font-size: 16px;\">{{footerUserName}}</div>\n <div [tooltip]=\"footerUserEmail\" class=\"dynamic-container\" style=\"white-space: nowrap; font-size: 12px; flex-grow: 1;max-width: 200px;\">{{footerUserEmail}}</div>\n </div>\n </div>\n </div>\n <hr class=\"mb-2 mt-2\">\n <div routerLink=\"meu-perfil\" style=\"cursor: pointer;\" (click)=\"togglePopover(); $event.stopPropagation()\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"contraparte\"/> Meu Perfil\n </div>\n <div class=\"mt-2\" style=\"cursor: pointer;\" (click)=\"openModalVersion(modalVersion)\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"info\"/> Versão\n </div> \n <div class=\"mt-2\" (click)=\"logout()\" style=\"cursor: pointer;\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"logout\"/> Sair\n </div>\n </ng-template>\n <!-- #endregion FOOTER -->\n\n </div>\n\n <div class=\"submenu\" #submenu_ref>\n <ng-template [ngIf]=\"desiredContent !== null\">\n <ng-content *ngTemplateOutlet=\"desiredContent!; context: {$implicit: submenuList}\"></ng-content>\n </ng-template>\n </div>\n </div>\n\n <div class=\"main-content col d-flex flex-column align-content-between\" id=\"body-content\">\n <div class=\"content\" style=\"position: relative;\">\n <router-outlet></router-outlet>\n </div>\n <div app-footer></div>\n </div>\n\n</div>\n<!-- #endregion MAIN CONTENT -->\n\n<!-- #region TEMPLATES -->\n<ng-template #dynamic_menu let-data>\n <app-dynamic-menu\n [submenuList]=\"data\"\n [titleSubmenu]=\"titleSubmenu\" [submenuRef]=\"submenu_ref\" [recebeParam]=\"onClickedOutside.bind(this)\"\n [hostServerOutSystems]=\"HostServerOutSystems\">\n </app-dynamic-menu>\n</ng-template>\n\n<ng-template #notif_menu>\n <app-notif-submenu></app-notif-submenu>\n</ng-template>\n\n<!-- #region MODAL SELECAO ESTABELECIMENTO -->\n<ng-template #modalEstabelecimento>\n <selecao-estabelecimentos-modal (onClose)=\"closeModalEstabelecimento()\"\n (onSelected)=\"closeModalEstabelecimento(); updateLastLogEstabelecimento($event);\">\n </selecao-estabelecimentos-modal>\n</ng-template>\n<!-- #endregion MODAL SELECAO ESTABELECIMENTO -->\n\n<!-- #region MODAL VERSION -->\n<ng-template #modalVersion>\n <versoes-modal (onClose)=\"closeModalVersion()\">\n </versoes-modal>\n</ng-template>\n<!-- #endregion MODAL VERSION -->\n\n<!-- #endregion TEMPLATES -->\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { FormUtils, InfraModule, MessageService } from 'ngx-sp-infra';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { AuthService } from '../../auth.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\n@Component( {\n selector: 'app-nova-senha',\n templateUrl: './nova-senha.component.html',\n styleUrls: ['./nova-senha.component.scss'],\n imports: [\n ReactiveFormsModule,\n InfraModule,\n ],\n preserveWhitespaces: true\n} )\nexport class NovaSenhaComponent implements OnInit {\n\n\tconstructor (\n\t\tprivate _formBuilder: FormBuilder,\n\t\tprivate _projectUtilservice: ProjectUtilservice,\n\t\tprivate _messageService: MessageService,\n\t\tprivate _authService: AuthService,\n\t\tprivate _authStorageService: AuthStorageService,\n\t\tprivate _title: Title,\n\t\tprivate _router: Router,\n\t\tprivate _route: ActivatedRoute\n\t\t) { }\n\n\tngOnInit (): void {\n\n\t\tthis._title.setTitle(\"Nova Senha\");\n\n\t\tthis.createForm();\n\n\t\tthis.getParmsFromRoute();\t\n\t\n\t\tthis.form.get('password')?.disable();\n\t\tthis.form.get('confirmPassword')?.disable();\n\n\t\tthis.form.get('code')?.setValue('');\n\n\t\tthis.form.get('code')?.valueChanges.subscribe(value => {\n\t\t\tif (value && value.length === 6) {\n\t\t\t this.form.get('password')?.enable();\n\t\t\t this.form.get('confirmPassword')?.enable();\n\t\t\t} else {\n\t\t\t this.form.get('password')?.disable();\n\t\t\t this.form.get('confirmPassword')?.disable();\n\t\t\t}\n\t\t });\n\t}\n\n\t// #region ==========> PROPERTIES <==========\n\n\t// #region PRIVATE\n\tprivate domain: string | null = \"\";\n\tprivate user: string | null = \"\";\n\tprivate createPassword: boolean = false;\n\n\tisDisabled: boolean = true;\n\n\tpublic esqueceuSenhaText: string = \"Enviamos um código para o seu e-mail.<br>Insira-o abaixo para redefinir sua senha.\"\n\tpublic primeiroAcessoText: string = \"Este é o seu primeiro acesso. Por favor,<br>Insira abaixo o código enviado pare seu<br>e-mail para definir sua senha.\"\n\tpublic senhaExpiradaText: string = \"Sua senha expirou e precisa ser atualizada.<br>Enviamos um código para o seu e-mail.<br>Insira-o abaixo para definir sua senha.\"\n\n\tpublic cadeadoImg = 'assets/imgs/cadeado.png'\n\tpublic maoImg = 'assets/imgs/mao.png'\n\tpublic calendarioImg = 'assets/imgs/calendario-fino.png'\n\n\tpublic statusSenha!: number;\n\n\t// #region PRIVATE\n\n\t// #region PUBLIC\n\tpublic isLoading: boolean = false;\n\n\t// #region ==========> FORM BUILDER <==========\n\tpublic form!: FormGroup;\n\n\t// Propriedade necessário para que a classe static FormUtils possa ser utilizada no Html\n\tpublic get FormUtils(): typeof FormUtils {\n\t\treturn FormUtils;\n\t}\n\n\tpublic passwordLabel: string = \"\";\n\n\t// #region FORM DATA\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários\n\tpublic get code(): string | null {\n\t\treturn this.form.get('code')?.value;\n\t}\n\n\tpublic get password(): string {\n\t\treturn this.form.get('password')?.value;\n\t}\n\n\tpublic get confirmPassword(): string {\n\t\treturn this.form.get('confirmPassword')?.value;\n\t}\n\n\t// #endregion FORM DATA\n\n\t// #region FORM VALIDATORS\n\n\t// #region PUBLIC\n\n\t// Método para configuração dos campos de edição do formulário\n\tprivate createForm(): void {\n\n\t\tthis.form = this._formBuilder.group({\n\t\t\tcode: ['', [Validators.required, Validators.maxLength(6)]],\n\t\t\tpassword: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t\tconfirmPassword: ['', [Validators.required, Validators.maxLength(100)]]\n\t\t});\n\n\t\tthis.form.get('code')?.setValue('');\t\n\t\tthis.form.get('password')?.setValue('');\t\n\t\tthis.form.get('confirmPassword')?.setValue('');\t\n\t}\n\n\t// #endregion FORM VALIDATORS\n\n\t// #endregion ==========> FORM BUILDER <==========\n\n\t// #region ==========> SERVICE METHODS <==========\n\t\n\n\t// #region GET\n\t\n\t/**\n\t * Puxa o nome do servidor salvo na configuração da máquina\n\t */\n\tpublic getAuthentication(): void {\n\n\t\tif (this.form.valid) {\n\t\t\tthis._authService.getAuthentication(this.domain!).subscribe({\n\t\t\t\tnext: response => {\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.form);\n\t\t}\n\t}\n\t// #endregion GET\n\n\t// #region POST\n\t\n\t// Envia requisição para recuperar de senha\n\tpublic sendPassword(): void {\n\n\t\tif (this.form.valid) {\n\t\t\tthis.isLoading = true;\n\n\t\t\tthis._authService.getAuthentication(this.domain!).subscribe({\n\t\t\t\tnext: response => {\n\t\t\t\t\tthis.updatePassword();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t})\n\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.form);\n\t\t}\n\n\t}\n\n\t// Recuperar senha\n\tpublic updatePassword(): void {\n\n\t\tif (this.createPassword) {\n\t\t\tthis._authService.createPassword(this.domain!, this.user!, this.form.value).subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\tthis._messageService.showAlertSuccess('Você definiu sua senha com sucesso. Preencha suas novas credenciais para acessar o sistema.');\n\t\t\t\t\tthis.cancelar();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t}\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis._authService.recoverPassword(this.domain!, this.user!, this.form.value).subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\tthis._messageService.showAlertSuccess('Você redefiniu sua senha com sucesso. Preencha suas novas credenciais para acessar o sistema.');\n\t\t\t\t\tthis.cancelar();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t}\n\n\t// #endregion POST\n\n\t// #region UTILIDADES\n\tprivate getParmsFromRoute(): void {\n\t\n\t\tif (this._route.snapshot.paramMap.get('param') != null) {\n\t\t\tlet param: string = atob(this._route.snapshot.paramMap.get('param')!);\n\n\t\t\tvar params = param.split('$');\n\n let numero: number = +params[params.length - 1].slice(-1)\n\n\t\t\tthis.statusSenha = numero;\n \n\t\t\tthis.createPassword = (params[0] == 'true' ? true : false);\n\t\t\tthis.domain = params[1];\n\t\t\tthis.user = params[2];\n\t\t\tthis.passwordLabel = (this.createPassword ? \"Escolha sua nova senha\" : \"Digite uma nova Senha\");\n\n\t\t\tif (params[3] != null) {\n\t\t\t\tthis.form.get('code')?.setValue(params[3]);\t\t\t}\n\n\t\t} else {\n\t\t\tthis.createPassword = false;\n\t\t\tthis.domain = \"\";\n\t\t\tthis.user = \"\";\n\t\t}\n\n\t}\n \n\t// Retorno para o login\n\tpublic cancelar(): void {\n\t\tthis._authStorageService.logout();\n\t\tthis._router.navigate([\"/auth/login\"]);\n\t}\t\n\n // #endregion UTILIDADES\n\n // #endregion ==========> SERVICE METHODS <==========\n\n// #endregion ==========> MODALS <==========\n\n}\n","<body>\n<div id=\"main-container\">\n\t<!-- #region MAIN CONTENT -->\n\t<div class=\"glb-main-container password-container\">\n\t\t<div class=\"password-info-container\">\n\t\t\t<div class=\"img mb-3\">\n\t\t\t\t<img [src]=\"statusSenha == 2 ? calendarioImg : statusSenha == 1 ? maoImg : statusSenha == 3 ? cadeadoImg : '' \" width=\"125.69\" height=\"122\">\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t<h4>{{statusSenha == 2 ? 'Senha expirada' : statusSenha == 1 ? 'Primeiro acesso' : statusSenha == 3 ? 'Esqueceu sua senha?' : ''}}</h4>\n\t\t\t\t<p [innerHTML]=\"statusSenha == 2 ? senhaExpiradaText : statusSenha == 1 ? primeiroAcessoText : statusSenha == 3 ? esqueceuSenhaText : '' \"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<form [formGroup]=\"form\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputCode\" class=\"form-label\"> Código de validação <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"text\" placeholder=\"Insira seu código aqui...\" id=\"inputCode\" class=\"form-control\" formControlName=\"code\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('code'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('code')\" label=\"Código de validação\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputPassword\" class=\"form-label\"> Digite uma nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite sua nova senha...\" id=\"inputPassword\" class=\"form-control\" formControlName=\"password\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('password'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('password')\" label=\"{{ passwordLabel }}\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputConfirmPassword\" class=\"form-label\"> Confirme sua nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite a senha novamente...\" id=\"inputConfirmPassword\" class=\"form-control\" formControlName=\"confirmPassword\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('confirmPassword'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('confirmPassword')\" label=\"Confirme sua Senha\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\t<div class=\"btns\">\n\t\t\t\t\t<button [libLoading]=\"isLoading\" loadingText=\"Redefinindo...\" [disabled]=\"isLoading\" (click)=\"sendPassword()\" type=\"button\" class=\"btn btn-primary col w-100\">\n\t\t\t\t\t\tRedefinir senha <lib-icon iconName=\"login\" />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t<a type=\"button\" class=\"fw-bold text-decoration-none text-secondary\" (click)=\"cancelar()\">\n\t\t\t\t\t\t\t<lib-icon iconName=\"p-seta-esquerda\" /> Voltar para a tela de login </a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t</form>\n\t</div>\n\t<!-- #endregion MAIN CONTENT -->\n</div>\n</body>\n","export class IMenu {\n ID: number = 0;\n UNICOID: number = 0;\n LABEL: string= \"\";\n DESCRICAO: string= \"\";\n URL: string= \"\";\n CLASS_ICON: string= \"\";\n IS_EXIBEMENU: boolean = false;\n URL_DASHBOARD: string= \"\";\n TAG: string= \"\";\n FK: number = 0;\n STRUCT_LIST!: [] | [{\n ID: number;\n UNICOID: number;\n LABEL: string;\n DESCRICAO: string;\n URL: string;\n CLASS_ICON: string;\n IS_EXIBEMENU: boolean;\n URL_DASHBOARD: string;\n TAG: string;\n FK: number;\n STRUCT_LIST: [] | [{\n ID: number;\n UNICOID: number;\n LABEL: string;\n DESCRICAO: string;\n URL: string;\n CLASS_ICON: string;\n IS_EXIBEMENU: boolean;\n URL_DASHBOARD: string;\n TAG: string;\n FK: number;\n }]\n }]\n}","export class InfraUsuarioImg {\n Tenant_Id: number = 0;\n Id: number = 0;\n Imagem: string = \"\";\n Filename: string = \"\";\n DataCriacao: Date = new Date();\n Is_Active: boolean = false;\n UsuarioId: string = \"\";\n}\n","export class NavSubmenuSearchItem{\n icon: string = \"\";\n titulo: string = \"\";\n \n submenusUnicoId!: number[];\n}\n","import { IError } from \"ngx-sp-infra\";\nimport { InfraUsuarioImg } from './infrausuarioimg';\n\nexport class RetInfraUsuarioImg implements IError{\n Error: boolean = false;\n ErrorMessage: string = \"\";\n InfraUsuarioImg: InfraUsuarioImg = new InfraUsuarioImg();\n uncompressedFileSize?: number | null = 0;\n compressedFileSize?: number | null = 0;\n}","import { IError } from 'ngx-sp-infra';\nimport { IMenuItemStructure } from './imenu-item-structure.model';\n\nexport class RetMenuItemStructure implements IError {\n public Error: boolean = false;\n public ErrorMessage: string = \"\";\n\n public MenuItem: IMenuItemStructure[] = [];\n}\n","import { IError } from 'ngx-sp-infra';\n\nimport { IMenu } from './imenu.model';\n\nexport class RetMenuLateral implements IError {\n public Error: boolean = false;\n public ErrorMessage: string = \"\";\n\n public MenuLateral!: IMenu[];\n}\n","import { IMenu } from \"./imenu.model\";\n\nexport class RetMenuPromise {\n public menuList: IMenu[] = [];\n \n public isAuthorized: boolean = false;\n}","import { IError } from \"ngx-sp-infra\";\nimport { NavSubmenuCards, NavSubMenus } from \"../../../../public-api\";\n\nexport class RetNavSubMenu implements IError{\n Error: boolean= false;\n ErrorMessage: string = \"\";\n NavSubmenus!: NavSubMenus[];\n}\n\nexport class RetSubmenuWithCards implements IError{\n Error: boolean = false;\n ErrorMessage: string = \"\";\n Submenu!: NavSubmenuCards[];\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot, ActivatedRouteSnapshot, Route, UrlTree } from '@angular/router';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthGuard {\n\n constructor(\n private router: Router,\n private authStorageService: AuthStorageService\n ) { }\n\n IsUserAuth(): Observable<boolean | UrlTree>\n {\n\n return this.authStorageService.isLoggedInSub\n .pipe(\n map((isLoggedIn: boolean) => {\n\n if (!isLoggedIn || this.authStorageService.isExternalLogin){ \n let login: UrlTree = this.router.parseUrl(\"/auth/login\");\n \n return login;\n }\n\n return true;\n })\n\n );\n\n }\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n return this.IsUserAuth();\n }\n\n canLoad(_route: Route): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n return this.IsUserAuth();\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot, ActivatedRouteSnapshot, Route, UrlTree } from '@angular/router';\n\nimport { Observable, lastValueFrom, of } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\nimport { AuthService } from '../auth.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class ExternaLoginlGuard {\n\n constructor(\n private router: Router,\n private authService: AuthService,\n private authStorageService: AuthStorageService\n ) { }\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n let param: string = atob(_route.paramMap.get('param')!);\n\n return this.IsUserAuth(param);\n }\n\n private navigateToError(): UrlTree {\n this.authStorageService.isExternalLogin = true;\n\n let login: UrlTree = this.router.parseUrl(\"/error-404\");\n\n return login;\n }\n\n private IsUserAuth(param: string): Observable<boolean | UrlTree>\n {\n return this.authStorageService.isLoggedInSub\n .pipe(\n take(1),\n switchMap((isLoggedIn: boolean) => {\n // Split dos parâmetros para o login externo\n var params = param.split('$');\n \n let domain = params[0];\n let user = params[1];\n let password = params[2];\n\n if (isLoggedIn && !this.authStorageService.isExternalLogin && this.authStorageService.dominio.toLowerCase() == domain.toLowerCase())\n {\n return of(true);\n };\n\n // antes alteração - se precisar voltar\n return this.logOnExternal(domain, user, password);\n })\n );\n\n }\n\n // Executa o Login Externo\n private async logOnExternal(domain: string, user: string, password: string): Promise<boolean | UrlTree> {\n const retConfig: boolean = await this.handleGetAuthentication(domain);\n\n if (!retConfig) {\n return this.navigateToError();\n }\n\n try {\n\n const error: boolean = await lastValueFrom(\n this.authService.loginExternal(domain, user, password)\n );\n\n if (error) {\n return this.navigateToError();\n }\n\n return true;\n } catch (error) {\n return this.navigateToError();\n }\n\n }\n\n // Retorna os parâmetros de configuração.\n private getAuthentication(domain: string): Promise<any> {\n return new Promise((resolve, reject) => {\n\n this.authService.getAuthentication(domain).subscribe({\n next: response => {\n resolve(true);\n },\n error: error => {\n reject(error);\n }\n\n });\n });\n\n }\n\n // Handle para busca dos parâmetros de configuração.\n private async handleGetAuthentication(domain: string): Promise<boolean> {\n \n try\n {\n const response = await this.getAuthentication(domain);\n \n return true;\n } catch (error) {\n return false;\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, UrlTree, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport { MenuServicesService } from '../components/menu-lateral/menu-services.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class IsMenuAllowedlGuard {\n\n constructor(\n private router: Router,\n private _menuService: MenuServicesService\n ) { }\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n let route: string = _route.routeConfig?.path === undefined ? \"\" : _route.routeConfig?.path;\n \n if (route == '') {\n route = _state.url.substring(1)\n }\n\n return this.isMenuAllowedGuard(route);\n }\n\n private navigateToError(): UrlTree {\n let notAllowed: UrlTree = this.router.parseUrl(\"/error-menu-not-allowed\");\n\n return notAllowed;\n }\n\n // Valida a permissão do Menu\n private async isMenuAllowedGuard(route: string): Promise<boolean | UrlTree> {\n const menuAllowed: boolean = await this.handleIsMenuAllowed(route);\n\n if (!menuAllowed) {\n return this.navigateToError();\n }\n\n return menuAllowed;\n }\n\n // Handle para ver se o menu é permitido.\n private async handleIsMenuAllowed(route: string): Promise<boolean> {\n \n try\n {\n let response: boolean = false;\n\n await this.IsMenuAllowed(route)\n .then(res => {\n response = res;\n return response;\n })\n .catch(err => {\n throw new Error(err);\n });\n \n return response;\n }\n catch (error) {\n return false;\n }\n\n }\n\n // Retorna se o menu é permitido.\n private IsMenuAllowed(route: string): Promise<any> {\n return new Promise((resolve, reject) => {\n\n this._menuService.isMenuAllowed(route).subscribe({\n next: response => {\n resolve(response.IsMenuAllowed);\n },\n error: error => {\n reject(error);\n }\n\n });\n });\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Route, Router, UrlSegment, UrlTree } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\n\n/**\n * Protege a página de login de ser carregada quando o usuário já está logado,\n * redirecionando ele para a página home da aplicação.\n */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LoginGuard {\n\n constructor(\n private router: Router,\n private authStorageService: AuthStorageService\n ) { }\n\n /**\n * Verifica se pode carregar a tela de login caso o usuário não esteja logado e \n * a rota seja de login.\n * \n * @param route Rota atual\n * @param segments Segmentos.\n * @returns \n */\n canLoad(_route: Route, _segments: UrlSegment[]): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {\n\n if (_route.path === \"auth/login\" && this.authStorageService.isLoggedInSub.value && !this.authStorageService.isExternalLogin) {\n return this.router.createUrlTree([\"/home\"]);\n }\n \n return true;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../auth.service';\n\n/** Protege a página de processamento de login integrado OS, só permite acessá-la se o payload for informado corretamente. */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LoginOSGuard {\n\n constructor(\n private _router: Router,\n private _loginOSService: AuthService\n ) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {\n const payload = route.queryParamMap.get('payload');\n\n if (payload && payload.trim().length > 0) {\n return true;\n }\n else {\n this._loginOSService.setPendingWarning('Login integrado falhou: o parâmetro \"payload\" está inválido ou ausente');\n return this._router.parseUrl('/auth/login');\n }\n }\n\n};\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\n\nimport { Observable, from, lastValueFrom } from 'rxjs';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\nimport { CheckUrlAndMethodService } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\n/**\n * \\brief Intercepta uma chamada HTTP para inserir o usuário logado no header em conjunto\n * com o login para uso da API.\n *\n * Depende do serviço de autenticação.\n */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthAplicInterceptor implements HttpInterceptor {\n\n constructor(\n private authCheckService: CheckUrlAndMethodService,\n private token: AuthStorageService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) { }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // convert promise to observable using 'from' operator\n return from(this.handle(req, next))\n }\n\n async handle(req: HttpRequest<any>, next: HttpHandler) {\n let changedReq: HttpRequest<any> = req;\n\n if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthAplic)) {\n // Verifica se o Token precisa ser renovado\n await this.token.renewToken();\n\n // Adiciona as autenticações necessárias ao servidor.\n let headers: HttpHeaders = req.headers.set(\n 'Authorization',\n `Bearer ${this.token.authToken}`\n );\n\n changedReq = req.clone({ headers: headers });\n }\n\n return await lastValueFrom(next.handle(changedReq));\n }\n\n /* >>> Comentado por Molina - 19/10/2023 - Lógica anterior\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let changedReq: HttpRequest<any> = req;\n\n if (this.authCheckService.needsAuthRequest(req.url, req.method, environment.needsAuthAplic)) {\n\n // Adiciona as autenticações necessárias ao servidor.\n let headers: HttpHeaders = req.headers.set(\n 'Authorization',\n `Bearer ${ this.token.authToken }`\n );\n\n changedReq = req.clone({ headers: headers });\n }\n\n return next.handle(changedReq);\n }\n */\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\n\nimport { Observable } from \"rxjs\";\n\nimport { CheckUrlAndMethodService } from \"ngx-sp-infra\";\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\n\n/**\n * \\brief Intercepta uma chamada HTTP para inserir a autenticação da Sispro.\n */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthInfraInterceptor implements HttpInterceptor {\n\n constructor(\n private authCheckService: CheckUrlAndMethodService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) { }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let changedReq: HttpRequest<any> = req;\n\n if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthInfra)) {\n // Adiciona as autenticações necessárias ao servidor. Autenticação básica.\n let headers: HttpHeaders = req.headers.set(\n \"Authorization\",\n `Basic ${btoa(`${ localStorage.getItem('configServerUser') }:${ localStorage.getItem('configServerPassword') }`) }\n `);\n\n changedReq = req.clone({ headers: headers });\n }\n\n return next.handle(changedReq);\n }\n\n}","import { Routes } from \"@angular/router\";\nimport { LoginComponent } from \"./components/login/login.component\";\nimport { NovaSenhaComponent } from \"./components/nova-senha/nova-senhacomponent\";\n\nexport const AUTH_ROUTES: Routes = [\n { path: '', component: LoginComponent, data: {title: \"SisproERP | Meu portal\"} },\n { path: 'novaSenha/:param', component: NovaSenhaComponent, data: {title: \"Nova Senha\"} }\n];\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { LibIconsComponent } from 'ngx-sp-infra';\n\nimport { RouterLink } from \"@angular/router\";\nimport { MenuServicesService } from '../../components/menu-lateral/menu-services.service';\nimport { LibCustomEnvironmentService } from '../../custom/lib-custom-environment.service';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\n\nexport class NavSubmenuCards {\n titulo: string = '';\n icon: string = '';\n descricao: string = '';\n urlPath: string = '';\n isExternal: boolean = false;\n}\n\n@Component({\n selector: 'sub-menu-card, lib-submenu-card',\n imports: [\n LibIconsComponent,\n RouterLink\n ],\n template: `\n <div class=\"max-card-menu row\">\n @for(card of subMenuCards; track $index) {\n @if (card.isExternal) {\n <a [href]=\"getExternalUrl(card.urlPath)\" target=\"_blank\" class=\"card-link col-4\">\n <div class=\"card w-100 border-0 rounded text-center glb-cursor-pointer\">\n <div class=\"card-icon\">\n <div class=\"card-icon2\">\n <lib-icon class=\"bold\" [iconName]=\"card.icon ? card.icon : 'engrenagem'\" iconColor=\"blue\" [iconSize]=\"35\" />\n </div>\n </div>\n\n <h3 class=\"card-title\">{{ card.titulo }}</h3>\n <p class=\"card-text\" [title]=\"card.descricao\"> {{ card.descricao }} </p>\n </div>\n </a>\n }\n @else {\n <a [routerLink]=\"[ card.urlPath ]\" class=\"card-link col-4\">\n <div class=\"card w-100 border-0 rounded text-center glb-cursor-pointer\">\n <div class=\"card-icon\">\n <div class=\"card-icon2\">\n <lib-icon class=\"bold\" [iconName]=\"card.icon ? card.icon : 'engrenagem'\" iconColor=\"blue\" [iconSize]=\"35\" />\n </div>\n </div>\n\n <h3 class=\"card-title\">{{ card.titulo }}</h3>\n <p class=\"card-text\" [title]=\"card.descricao\"> {{ card.descricao }} </p>\n </div>\n </a>\n }\n }\n </div>\n `,\n styleUrl: './sub-menu-card.component.scss'\n})\nexport class SubMenuCardComponent implements OnInit {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Input() subMenuCards: NavSubmenuCards[] = [];\n\n public hostName:string = \"\";\n\n public getExternalUrl = (url: string): string => { return `${ this.hostName == \"\" ? `https://${ window.location.host }` : this.hostName }/${ url }` }\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor(\n private _menuService: MenuServicesService,\n private _projectUtil: ProjectUtilservice,\n\n private _customEnv: LibCustomEnvironmentService\n ) { }\n\n ngOnInit(): void {\n this.GetHostName();\n }\n\n\n // #region ==========> API METHODS <==========\n\n // #region GET\n \n public GetHostName() {\n // Validação adicionada para ignorar esta chamada caso o componente seja exibido na docs\n if (this._customEnv.product === \"InfraCodeDocs\") return;\n\n this._menuService.GetHostServerOutSystems().subscribe({\n next:response => this.hostName = response.String,\n error:error => this._projectUtil.showHttpError(error)\n })\n }\n\n // #endregion GET\n\n // #endregion ==========> API METHODS <==========\n\n\n // #region ==========> UTILS <==========\n // [...]\n // #endregion ==========> UTILS <==========\n\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TelaItem } from '../sub-menu.component';\n\n@Component({\n selector: 'app-list',\n imports: [],\n templateUrl: './list.component.html',\n styleUrl: './list.component.scss',\n standalone: true\n})\nexport class ListComponent {\n\n @Input() telasItem : TelaItem[] = [];\n @Input() hostName:string = '';\n\n @Output() onTelaSelecionada: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n public getExternalUrl = (url: string) => { return `${ this.hostName }/${ url }`; }\n\n}\n","<ul class=\"nav flex-column mt-3\">\n @if (telasItem && telasItem.length > 0) {\n @for (clickLink of telasItem; track $index) {\n <li class=\"nav-item\">\n <a class=\"nav-link\" [target]=\"clickLink.IsExternal ? '_blank' : '_self'\" (click)=\"onTelaSelecionada.emit(clickLink.titulo)\"\n [href]=\"clickLink.IsExternal\n ? getExternalUrl(clickLink.urlPath)\n : '/SisproErpCloud/' + clickLink.urlPath\" >\n {{ clickLink.titulo }}\n </a>\n </li>\n }\n }\n</ul>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ListComponent } from '../list/list.component';\nimport { SubMenuItem, TelaItem } from '../sub-menu.component';\n\n@Component({\n selector: 'app-nav-tabs',\n imports: [ ListComponent ],\n templateUrl: './nav-tabs.component.html',\n styleUrl: './nav-tabs.component.scss',\n})\nexport class NavTabsComponent implements OnInit, OnChanges {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Input() subMenus: SubMenuItem[] = [];\n @Input() hostName:string = '';\n @Input() activeItem?: string;\n\n @Output() onTituloSelecionado: EventEmitter<string | null> = new EventEmitter<string | null>();\n @Output() onTelaSelecionada: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n public telasItem: TelaItem[] = [];\n public listaAtiva: string = '';\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.subMenus.length != 0) {\n this.telasItem = this.subMenus.filter(e => e.titulo.includes(this.activeItem ?? ''))[0].telasItem;\n this.listaAtiva = this.activeItem ?? this.subMenus[0].titulo;\n\n if (this.activeItem && this.activeItem !== '') this.setAbaAtiva(this.activeItem);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['activeItem'].currentValue && changes['activeItem'].currentValue !== \"\") {\n this.setAbaAtiva(changes['activeItem'].currentValue);\n }\n\n if ((changes['subMenus'].currentValue && changes['subMenus'].currentValue !== \"\") && this.activeItem !== '') {\n this.setAbaAtiva(this.activeItem ?? '');\n }\n }\n\n\n // #region ==========> UTILS <==========\n public setAbaAtiva(titulo: string): void {\n \n // Se não encontrar o nome, sai do método\n const index = this.subMenus.findIndex(submenu => submenu.titulo == titulo);\n if (index === -1) return;\n \n this.telasItem = this.subMenus[index]?.telasItem;\n this.listaAtiva = this.subMenus[index]?.titulo;\n\n this.onTituloSelecionado.emit(titulo);\n }\n // #endregion ==========> UTILS <==========\n\n}\n","<ul class=\"menu my-3\">\n @for(menu of subMenus; track $index) {\n <li class=\"menu-item\" (click)=\"setAbaAtiva(menu.titulo)\" [class.active]=\"menu.titulo === listaAtiva\">\n <a class=\"glb-cursor-pointer\" (click)=\"setAbaAtiva(menu.titulo)\" [tabindex]=\"$index\" >\n {{ menu.titulo }}\n </a>\n </li>\n }\n</ul>\n\n@if (telasItem) {\n <app-list [telasItem]=\"telasItem\" [hostName]=\"hostName\" (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" />\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { ContentContainerComponent, LibIconsComponent } from 'ngx-sp-infra';\n\nimport { MenuServicesService } from '../../components/menu-lateral/menu-services.service';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { LibCustomEnvironmentService } from './../../custom/lib-custom-environment.service';\nimport { NavTabsComponent } from './nav-tabs/nav-tabs.component';\n\nexport class NavSubMenus {\n icon: string = '';\n titulo: string = '';\n subMenuItem: SubMenuItem[] = [];\n}\n\nexport class SubMenuItem {\n titulo: string = '';\n telasItem: TelaItem[] = [];\n}\n\nexport class TelaItem {\n titulo: string = '';\n urlPath: string = '';\n IsExternal:boolean = false;\n}\n\n@Component({\n selector: 'app-nav-sub-menu, lib-submenu',\n imports: [\n NavTabsComponent,\n LibIconsComponent,\n ContentContainerComponent\n ],\n templateUrl: './sub-menu.component.html',\n styleUrl: './sub-menu.component.scss',\n standalone: true\n})\nexport class SubMenuComponent implements OnInit {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Input() navSubmenus: NavSubMenus[] = [];\n @Input() isProduction: boolean = true;\n @Input() hostname: string = \"https://siscandesv6.sispro.com.br\";\n @Input() activeItem?: string;\n\n @Output() onTituloSelecionado: EventEmitter<string | null> = new EventEmitter<string | null>();\n @Output() onTelaSelecionada: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n public hostNameOutSystems: string = \"\";\n public listaSubMenus: SubMenuItem[] = [];\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor(\n private _menuService: MenuServicesService,\n private _projectUtil: ProjectUtilservice,\n private _customEnv: LibCustomEnvironmentService\n ) { }\n\n ngOnInit(): void {\n this.getHostName();\n\n if (\n this.navSubmenus.length > 0 &&\n this.navSubmenus[0].subMenuItem &&\n this.navSubmenus[0].subMenuItem.length > 0\n ) {\n this.activeItem = this.navSubmenus[0].subMenuItem[0].titulo.toString();\n }\n\n this.listaFunction();\n }\n\n\n // #region ==========> UTILS <==========\n private listaFunction(): void {\n for(let i = 0; i < this.navSubmenus.length; i++) {\n this.listaSubMenus.push(...this.navSubmenus[i].subMenuItem);\n }\n }\n\n private getHostName(): void {\n // Validação adicionada para ignorar esta chamada caso o componente seja exibido na docs\n if (this._customEnv.product === \"InfraCodeDocs\") return;\n\n this._menuService.GetHostServerOutSystems().subscribe({\n next: response => this.hostNameOutSystems = response.String,\n error: error => this._projectUtil.showHttpError(error)\n })\n }\n // #endregion ==========> UTILS <==========\n\n}\n","<lib-container>\n <div class=\"px-5\" innerContent1>\n @for(subMenu of navSubmenus; track $index) {\n <div [class]=\"$first && subMenu.titulo == '' && subMenu.icon == '' ? ' mb-2' : 'mt-4 mb-2'\">\n @if (subMenu.icon != '') {\n <lib-icon class=\"bold engrenagem-ajustada\" iconName=\"{{ subMenu.icon }}\" />\n }\n @if (subMenu.titulo != ''){\n <span class=\"fw-bold fs-4 ms-1\">{{ subMenu.titulo }}</span>\n }\n\n <app-nav-tabs [activeItem]=\"activeItem\" [subMenus]=\"navSubmenus[$index].subMenuItem\" [hostName]=\"hostNameOutSystems\"\n (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" (onTituloSelecionado)=\"onTituloSelecionado.emit($event)\" />\n </div>\n\n @if(!$last){ <hr /> }\n }\n </div>\n</lib-container>\n","/** Modules */\nexport * from './lib/auth.module';\n\n/** Services */\nexport * from './lib/auth.service';\nexport * from './lib/components/menu-lateral/menu-services.service';\nexport * from './lib/custom/lib-custom-environment.service';\nexport * from './lib/custom/lib-custom-login.service';\nexport * from './lib/custom/lib-custom-menu.service';\nexport * from './lib/custom/lib-custom-storage.service';\nexport * from './lib/custom/lib-menu-config.service';\nexport * from './lib/project/project-utils.service'; // Disponibilizado temporariamente até ser decidido como resolver o problema percebido na liberação do dia 13/11/2025\nexport * from './lib/services/indexed-db.service';\nexport * from './lib/services/pesquisa-telas-global.service';\nexport * from './lib/storage/auth-storage.service';\n\n/** Components */\nexport * from './lib/components/error-menu-not-allowed/error-menu-not-allowed.component';\nexport * from './lib/components/login-os/login-os.component';\nexport * from './lib/components/login/login.component';\nexport * from './lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component';\nexport * from './lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component';\nexport * from './lib/components/menu-lateral/menu/menu-lateral.component';\nexport * from './lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component';\nexport * from './lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component';\nexport * from './lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component';\nexport * from './lib/components/nova-senha/nova-senhacomponent';\n\n/** Models */\nexport * from './lib/components/menu-lateral/model/imenu-item-structure.model';\nexport * from './lib/components/menu-lateral/model/imenu.model';\nexport * from './lib/components/menu-lateral/model/infrausuarioimg';\nexport * from './lib/components/menu-lateral/model/navsubmenu-searchitem';\nexport * from './lib/components/menu-lateral/model/ret-infrausuarioimg';\nexport * from './lib/components/menu-lateral/model/ret-menu-item-structure';\nexport * from './lib/components/menu-lateral/model/ret-menu-lateral';\nexport * from './lib/components/menu-lateral/model/ret-menu-promise';\nexport * from './lib/components/menu-lateral/model/ret-navsubmenu';\n\n/** Custom */\nexport * from './lib/custom/models/icustom-environment-service';\nexport * from './lib/custom/models/icustom-login-service';\nexport * from './lib/custom/models/icustom-menu-service';\nexport * from './lib/custom/models/icustom-storage-service';\nexport * from './lib/custom/models/imenu-config';\n\n/** Guards */\nexport * from './lib/guards/auth-guard';\nexport * from './lib/guards/external-login-guard';\nexport * from './lib/guards/is-menu-allowed-guard';\nexport * from './lib/guards/login-guard';\nexport * from './lib/guards/login-os.guard';\n\n/** Interceptors */\nexport * from './lib/interceptors/auth-aplic.interceptor';\nexport * from './lib/interceptors/auth-infra.interceptor';\n\n/** Routes */\nexport * from './lib/auth.routes';\n\n/** Widgets */\nexport * from './lib/widgets/sub-menu-card/sub-menu-card.component';\nexport * from './lib/widgets/sub-menu/list/list.component';\nexport * from './lib/widgets/sub-menu/nav-tabs/nav-tabs.component';\nexport * from './lib/widgets/sub-menu/sub-menu.component';\n\n\n/** Providers */\nexport * from './lib/custom/token';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LibCustomEnvironmentService","i2.LibCustomStorageService","i3.IndexedDBService","i4.LibCustomEnvironmentService","i1","i2.AuthStorageService","take","tap","i2","i3.AuthStorageService","i4","i5.LibCustomLoginService","i6.ProjectUtilservice","i7.LibCustomEnvironmentService","i8.IndexedDBService","i1.AuthStorageService","i3.LibCustomEnvironmentService","i1.LibMenuConfigService","i2.LibCustomEnvironmentService","i3.ProjectUtilservice","i1.AuthService","i2.ProjectUtilservice","i3","i4.AuthStorageService","i5","map","i2.LibCustomLoginService","i4.ProjectUtilservice","i5.AuthService","i6.LibCustomEnvironmentService","i7.AuthStorageService","i9","i11","i1.ProjectUtilservice","i1.LibCustomMenuService","i3.MenuServicesService","i2.LibCustomMenuService","i5.ProjectUtilservice","i7","i1.MenuServicesService","i6.MenuServicesService","i8.ProjectUtilservice","i10.AuthService","i11.LibCustomMenuService","i12.PesquisaTelasGlobalService","i15","i4.AuthService","i5.AuthStorageService","i6","switchMap","i2.AuthService","i2.MenuServicesService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-sp-auth.mjs","sources":["../../../projects/ngx-sp-auth/src/lib/auth-config.ts","../../../projects/ngx-sp-auth/src/lib/auth.module.ts","../../../projects/ngx-sp-auth/src/lib/models/infraIn2FaTypeId.ts","../../../projects/ngx-sp-auth/src/lib/models/infraInAuthTypeId.ts","../../../projects/ngx-sp-auth/src/lib/custom/token.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-storage.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-environment.service.ts","../../../projects/ngx-sp-auth/src/lib/services/indexed-db.service.ts","../../../projects/ngx-sp-auth/src/lib/storage/auth-storage.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-login.service.ts","../../../projects/ngx-sp-auth/src/lib/project/project-utils.service.ts","../../../projects/ngx-sp-auth/src/lib/auth.service.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu-services.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-menu-config.service.ts","../../../projects/ngx-sp-auth/src/lib/custom/lib-custom-menu.service.ts","../../../projects/ngx-sp-auth/src/lib/services/pesquisa-telas-global.service.ts","../../../projects/ngx-sp-auth/src/lib/components/error-menu-not-allowed/error-menu-not-allowed.component.ts","../../../projects/ngx-sp-auth/src/lib/components/error-menu-not-allowed/error-menu-not-allowed.component.html","../../../projects/ngx-sp-auth/src/lib/models/login-os.model.ts","../../../projects/ngx-sp-auth/src/lib/components/login-os/login-os.component.ts","../../../projects/ngx-sp-auth/src/lib/components/login/login.component.ts","../../../projects/ngx-sp-auth/src/lib/components/login/login.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/versoes-modal/versoes-modal.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/versoes-modal/versoes-modal.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/menu-lateral.component.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/menu/menu-lateral.component.html","../../../projects/ngx-sp-auth/src/lib/components/nova-senha/nova-senhacomponent.ts","../../../projects/ngx-sp-auth/src/lib/components/nova-senha/nova-senha.component.html","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/imenu.model.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/infrausuarioimg.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/navsubmenu-searchitem.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-infrausuarioimg.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-menu-item-structure.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-menu-lateral.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-menu-promise.ts","../../../projects/ngx-sp-auth/src/lib/components/menu-lateral/model/ret-navsubmenu.ts","../../../projects/ngx-sp-auth/src/lib/guards/auth-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/external-login-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/is-menu-allowed-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/login-guard.ts","../../../projects/ngx-sp-auth/src/lib/guards/login-os.guard.ts","../../../projects/ngx-sp-auth/src/lib/interceptors/auth-aplic.interceptor.ts","../../../projects/ngx-sp-auth/src/lib/interceptors/auth-infra.interceptor.ts","../../../projects/ngx-sp-auth/src/lib/auth.routes.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu-card/sub-menu-card.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/list/list.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/list/list.component.html","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/nav-tabs/nav-tabs.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/nav-tabs/nav-tabs.component.html","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/sub-menu.component.ts","../../../projects/ngx-sp-auth/src/lib/widgets/sub-menu/sub-menu.component.html","../../../projects/ngx-sp-auth/src/public-api.ts","../../../projects/ngx-sp-auth/src/ngx-sp-auth.ts"],"sourcesContent":["import { LogLevel, Configuration } from '@azure/msal-browser';\n\nconst isIE = false;\nconst hostAuthLogin = \"http://localhost:4200/auth/login\" ;\n\nexport const msalConfig: Configuration = {\n auth: {\n clientId: \"clientId\",\n authority: \"https://login.microsoftonline.com/tenantId\",\n redirectUri: hostAuthLogin + \"/\",\n postLogoutRedirectUri: hostAuthLogin,\n navigateToLoginRequestUrl: true\n },\n cache: {\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: isIE,\n },\n system: {\n loggerOptions: {\n loggerCallback: (logLevel, message, containsPii) => {\n console.log(message);\n },\n logLevel: LogLevel.Error, // .Verbose\n \n piiLoggingEnabled: false\n }\n }\n }\n","import { importProvidersFrom, NgModule } from '@angular/core';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nimport { MsalGuard, MsalInterceptor, MsalModule } from '@azure/msal-angular';\nimport { InteractionType, PublicClientApplication } from '@azure/msal-browser';\nimport { msalConfig } from './auth-config';\n\n@NgModule({\n providers: [\n importProvidersFrom(\n MsalModule.forRoot(new PublicClientApplication(msalConfig), \n {\n // The routing guard configuration.\n interactionType: InteractionType.Redirect,\n authRequest: {\n scopes: [\n \"user.read\"\n ]\n }\n }, \n {\n // MSAL interceptor configuration.\n // The protected resource mapping maps your web API with the corresponding app scopes. If your code needs to call another web API, add the URI mapping here.\n interactionType: InteractionType.Redirect,\n protectedResourceMap: new Map([])\n }\n )),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: MsalInterceptor,\n multi: true\n },\n MsalGuard, // MsalGuard added as provider here\n ]\n})\nexport class AuthModule { }","import { IError } from \"ngx-sp-infra\";\n\nexport enum InfraIn2FaTypeId {\n Email = 1,\n Google = 2,\n Microsoft = 3\n}\n","import { IError } from \"ngx-sp-infra\";\n\nexport enum InfraInAuthTypeId {\n Local = 1,\n Azure = 2,\n LDAP = 3\n}\n","import { InjectionToken } from \"@angular/core\";\n\nimport { ICustomEnvironmentService } from \"./models/icustom-environment-service\";\nimport { ICustomLoginService } from \"./models/icustom-login-service\";\nimport { ICustomStorageService } from \"./models/icustom-storage-service\";\nimport { ICustomMenuService } from \"./models/icustom-menu-service\";\nimport { IMenuConfig } from \"./models/imenu-config\";\n\n// Token para o LibCustomEnvironmentService\nexport const LIB_CUSTOM_ENVIRONMENT_SERVICE = new InjectionToken<ICustomEnvironmentService>(\n 'LibCustomEnvironmentService'\n);\n\n// Token para o LibCustomStorageService\nexport const LIB_CUSTOM_STORAGE_SERVICE = new InjectionToken<ICustomStorageService>(\n 'LibCustomStorageService'\n);\n\n// Token para o LibCustomLoginService\nexport const LIB_CUSTOM_LOGIN_SERVICE = new InjectionToken<ICustomLoginService>(\n 'LibCustomLoginService'\n);\n\n// Token para o LibCustomMenuService\nexport const LIB_CUSTOM_MENU_SERVICE = new InjectionToken<ICustomMenuService>(\n 'LibCustomMenuService'\n);\n\n// Token para o LibMenuConfigService\nexport const LIB_MENU_CONFIG = new InjectionToken<IMenuConfig>(\n 'LibMenuConfigService'\n);\n\n","import { Inject, Injectable } from '@angular/core';\n\nimport { ICustomStorageService } from './models/icustom-storage-service';\nimport { LIB_CUSTOM_STORAGE_SERVICE } from './token';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LibCustomStorageService {\n\n constructor( \n @Inject(LIB_CUSTOM_STORAGE_SERVICE) private _customStorageService: ICustomStorageService\n ) { }\n\n // #region Métodos Customizadas para o Componente auth-storage.service.ts\n\n // Método executado no auth-storage.service.ts - método: constructor ()\n // Utilizado para inicializações diversas\n public storageConstructor(): void {\n this._customStorageService.storageConstructor();\n }\n\n // Método executado no auth-storage.service.ts - método: saveLocalInstance ()\n // Utilizado para salvar informações no localStorage\n public storageSaveLocalInstance(): void {\n this._customStorageService.storageSaveLocalInstance();\n }\n\n // Método executado no auth-storage.service.ts - método: logout ()\n // Utilizado para inicializar informações no localStorage na logout da aplicação\n public storageLogout(): void {\n this._customStorageService.storageLogout();\n }\n\n // Método executado no auth-storage.service.ts - método: reCheckLogin ()\n // Utilizado para inicializações diversas quando o Login exeutado via Pré Portal\n public storageInitializeAutoStorage(): void {\n this._customStorageService.storageInitializeAutoStorage();\n }\n\n // #endregion Métodos Customizadas para o Componente auth-storage.service.ts\n\n}\n","import { Inject, Injectable } from \"@angular/core\";\n\nimport { ICustomEnvironmentService } from \"./models/icustom-environment-service\";\nimport { LIB_CUSTOM_ENVIRONMENT_SERVICE } from \"./token\";\n\n@Injectable(\n { providedIn: 'root' }\n)\n\n/**Service responsável por pegar as opções do menu do projeto em que está sendo utilizada*/\nexport class LibCustomEnvironmentService {\n\n constructor( \n @Inject(LIB_CUSTOM_ENVIRONMENT_SERVICE) private _customEnvironmentService: ICustomEnvironmentService\n ) { }\n\n // URLs que necessitam de autenticação da infra.\n public get needsAuthInfra(): Map<string, string[]> {\n return this._customEnvironmentService.needsAuthInfra\n };\n\n // URLs que necessitam de autenticação do usuário para funcionar.\n public get needsAuthAplic(): Map<string, string[]> {\n return this._customEnvironmentService.needsAuthAplic;\n };\n\n public get production(): boolean {\n return this._customEnvironmentService.production;\n };\n\n public get hostName(): string {\n return this._customEnvironmentService.hostName;\n };\n\n public get product(): string {\n return this._customEnvironmentService.product;\n };\n\t\n\tpublic get Sp2LocalhostInfra2AuthWS(): string {\n return this._customEnvironmentService.Sp2LocalhostInfra2AuthWS\n };\n\n\tpublic get Sp2LocalhostInfra2LoginWS(): string {\n return this._customEnvironmentService.Sp2LocalhostInfra2LoginWS\n };\n\n public get Sp2LocalhostWS(): string {\n return this._customEnvironmentService.Sp2LocalhostWS;\n };\n\n\tpublic get SpInfra2AuthWS(): string {\n return this._customEnvironmentService.SpInfra2AuthWS;\n };\n\n\tpublic get SpInfra2LoginWS(): string {\n return this._customEnvironmentService.SpInfra2LoginWS;\n };\n\n public get SpInfra2ErpWS(): string {\n return this._customEnvironmentService.SpInfra2ErpWS;\n };\n}\n\n","import { Injectable } from '@angular/core';\nimport { deleteDB, IDBPDatabase, openDB } from 'idb';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\n\n/**\n * Tipo estruturado que deve ser enviado e recebido quando utilizar o armazenamento de valores no IndexedDB\n*/\nexport type ObjectToStore<T> = {\n /** Valor da chave-única para diferenciar entre outros valores salvos */\n key: string;\n\n /** Contexto da tela em que a implementação está inserida */\n context: string;\n\n /**\n * Corpo do que será de fato armazenado, filtros, formulários, etc.\n * O tipo usado é genérico e deve ser informado caso deseje utilizar este tipo no seu componente.\n */\n payload?: T;\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IndexedDBService {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _restored?: ObjectToStore<any>;\n private _dbName: string = \"Sp_Filtros_\";\n // #endregion PRIVATE\n\n protected database?: IDBDatabase;\n protected request?: IDBPDatabase<unknown>;\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor( private _customEnvironment: LibCustomEnvironmentService ) {\n if (!window.indexedDB) {\n alert(\"Seu navegador não suporta uma versão estável do IndexedDB. Salvamento de filtros em sessão não estará disponível.\");\n }\n\n this._dbName = `Sp_${ _customEnvironment.product ?? 'Modelo' }_Filtros`;\n }\n\n\n // #region ==========> ACTIONS <==========\n\n // #region ADD\n\n /**\n * Cria um registro dentro de um objectStore.\n * O valor a ser inserido precisa ser um objeto com pelo **menos a propriedade `key`**, ela é a nossa *chave-primária* dos registros\n * \n * @param value Valor a ser inserido\n */\n async add(value: ObjectToStore<any>): Promise<void> {\n const db = await openDB(this._dbName, 1);\n\n try {\n await db.add('filters', value);\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion ADD\n\n // #region GET\n\n\n /**\n * Busca um valor na base dentro de um objectStore.\n * \n * @param storeName Nome do objectStore\n * @param key Valor da chave única\n * @returns Promise<> com o valor encontrado ou undefined se não encontrar\n */\n async get(key: string): Promise<ObjectToStore<any>> {\n const db = await openDB(this._dbName, 1);\n\n try {\n return await db.get('filters', key);\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion GET\n\n // #region UPDATE\n\n /**\n * Atualiza o valor de um registro dentro de um objectStore.\n * \n * @param value Valor atualizado\n */\n async update(value: ObjectToStore<any>): Promise<void> {\n const db = await openDB(this._dbName, 1);\n\n try {\n await db.put('filters', value)\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion UPDATE\n\n // #region DELETE\n\n /**\n * Exclui um registro na base dentro de um objectStore.\n * \n * @param key Valor da chave única\n */\n async delete(key: string): Promise<void> {\n const db = await openDB(this._dbName, 1);\n\n try {\n await db.delete('filters', key);\n }\n finally {\n try { db.close(); } catch (e) { /* não faz nada */ }\n }\n }\n\n // #endregion DELETE\n\n // #endregion ==========> ACTIONS <==========\n\n\n // #region ==========> UTILS <==========\n\n /**\n * Inicializa as configurações iniciais do IndexedDB e já cria o objectStore que será utilizado caso não exista.\n * \n * O object store que será criado terá sua chave inline na propriedade `key` e o índice será a propriedade `context`, portanto todos os valores que forem inseridos **DEVEM** ser um objeto com pelo menos a propriedade `key` e `context`.\n * Deve ser chamado no constructor do seu componente para garantir inicialização correta pelo componente\n * \n * @param dbName Nome da base de dados que será usada\n */\n public async initializeDatabase() {\n this.request = await openDB(this._dbName, 1, {\n upgrade (db) {\n\n // Criar objectStore se não houver um mesmo com este nome\n if (!db.objectStoreNames.contains('filters')) {\n const store = db.createObjectStore('filters', { keyPath: 'key' });\n store.createIndex('context', 'context');\n }\n\n },\n blocked() {\n // notify user / log: another tab has old version open\n console.warn('IndexedDB blocked — feche outras abas');\n },\n blocking() {\n // this instance is blocking a future version request\n console.warn('IndexedDB blocking — considere fechar esta conexão');\n }\n })\n }\n\n /**\n * Exclui uma database do IndexedDB com base no nome.\n * \n * @param name Nome da database\n */\n public async deleteDatabase(): Promise<void> {\n // Fecha a conexão persistente local, se existir, antes de tentar excluir a DB\n if (this.request) {\n try {\n this.request.close();\n }\n catch (err) {\n console.warn('deleteDatabase() => erro ao fechar conexão local', err);\n }\n\n this.request = undefined;\n }\n\n return await deleteDB(this._dbName);\n }\n\n\n /**\n * Fecha a conexão persistente (se existir) sem excluir a database.\n * Útil para cenários onde se precisa liberar a conexão antes de chamar `deleteDatabase()`.\n */\n public async closeOpenConnection(): Promise<void> {\n if (this.request) {\n try {\n this.request.close();\n }\n catch (err) {\n console.warn('closeOpenConnection() => erro ao fechar conexão', err);\n }\n\n this.request = undefined;\n }\n }\n\n\n\n /**\n * Valida se já existe um valor cadastrado na base com a chave-única que foi informada, se houver retorna ele, caso contrário cria um registro placeholder para poder atualizar depois.\n * \n * @param key Valor da chave única\n * @param value (opcional) Valor placeholder caso não exista um valor previamente criado\n * \n * @returns Estrutura encontrada no objectStore com a chave-única informada\n */\n public async validate(key: string, value?: ObjectToStore<any> | null) {\n\n // Valida se já existe registro no DB local\n\t\tthis._restored = await this.get(key);\n\t\t\n\t\tif (!this._restored && value) {\n\t\t\t// Se não existir nada, inicializa um registro placeholder dentro do objectStore existente\n\t\t\tawait this.add(value)\n\t\t}\n\t\telse {\n // Se encontrar valor retorna apenas o payload com os dados que serão usados na tela\n return this._restored?.payload;\n\t\t}\n }\n\n // #endregion ==========> UTILS <==========\n\n}\n","import { HttpBackend, HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, take, tap } from 'rxjs';\n\nimport { Payload } from './../models/payload';\n\nimport { Utils } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\nimport { LibCustomStorageService } from '../custom/lib-custom-storage.service';\nimport { RetToken } from '../models/ret-token';\nimport { Token } from '../models/token';\nimport { IndexedDBService } from '../services/indexed-db.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthStorageService {\n \n private readonly _BASE_URL: string = ''; // SpInfra2WS\n\n private readonly __local_key = 'user_auth_v6';\n\n // indica se objeto já está marcado para salvar os dados no local storage.\n private __isSaving: boolean = false;\n\n /** Se ainda estamos com uma função rodando para verificar o login do usuário */\n private __isCheckingAuth: boolean = false;\n\n /* Variável para contornar o erro >>> NG0200: Circular dependency\" */\n private _httpClient: HttpClient;\n\n constructor(\n private _httpBackend: HttpBackend,\n private _customStorageService: LibCustomStorageService,\n private _indexedDBService: IndexedDBService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) {\n this._httpClient = new HttpClient(_httpBackend);\n \n this._BASE_URL = `${ _customEnvironmentService.SpInfra2LoginWS }/LoginSisproERP`; // SpInfra2WS\n\n this._BASE_URL = !_customEnvironmentService.production ? this._BASE_URL : `${_customEnvironmentService.SpInfra2LoginWS}/LoginSisproERP`;\n\n // Método com customizações para inicializações da storage\n this._customStorageService.storageConstructor()\n\n const expectedLocalAuthStorage = localStorage.getItem(this.__local_key);\n\n if (expectedLocalAuthStorage) {\n const localAuthStorage = JSON.parse(expectedLocalAuthStorage) as AuthStorageService;\n\n try {\n this.__ip = localAuthStorage.__ip;\n this.__tenantId = localAuthStorage.__tenantId;\n this.__infraUsuarioId = localAuthStorage.__infraUsuarioId;\n this.__infraEstabId = localAuthStorage.__infraEstabId;\n this.__infraEstabNome = localAuthStorage.__infraEstabNome;\n this.__infraEmpresaId = localAuthStorage.__infraEmpresaId;\n this.__infraEmpresaNome = localAuthStorage.__infraEmpresaNome;\n this.__user = localAuthStorage.__user;\n this.__userName = localAuthStorage.__userName;\n this.__tokenPayload = localAuthStorage.__tokenPayload;\n this.__authToken = localAuthStorage.__authToken;\n this.__dominio = localAuthStorage.__dominio;\n this.__isExternalLogin = localAuthStorage.__isExternalLogin;\n this.__infraInAuthTypeId = localAuthStorage.__infraInAuthTypeId;\n this.__infraIn2FaTypeId = localAuthStorage.__infraIn2FaTypeId;\n this.__is2FaEnabled = localAuthStorage.__is2FaEnabled;\n this.__azureTenantId = localAuthStorage.__azureTenantId;\n this.__azureClientId = localAuthStorage.__azureClientId;\n\n this.startLoginCheck();\n } catch (error) {\n this.logout();\n\n return;\n }\n\n }\n\n }\n\n // #region GETTERS/SETTERS\n\n public isLoggedInSub = new BehaviorSubject<boolean>(false);\n\n //ip\n private __ip: string = \"\";\n\n public get ip(): string {\n return this.__ip;\n }\n\n public set ip(value: string) {\n this.__ip = value;\n\n if (this.isLoggedInSub.value) {\n this.__saveLocalInstance();\n }\n\n }\n\n //tenantId\n private __tenantId: number = 0;\n\n public get tenantId(): number {\n return this.__tenantId;\n }\n\n public set tenantId(value: number) {\n this.__tenantId = value;\n\n this.__saveLocalInstance();\n }\n\n //infraUsuarioId\n private __infraUsuarioId: string = \"\";\n\n public get infraUsuarioId(): string {\n return this.__infraUsuarioId;\n }\n\n public set infraUsuarioId(value: string) {\n this.__infraUsuarioId = value;\n\n this.__saveLocalInstance();\n }\n\n // EstabelecimentoID\n private __infraEstabId: string = \"\";\n\n public get infraEstabId(): string {\n return this.__infraEstabId;\n }\n\n public set infraEstabId(value: string) {\n this.__infraEstabId = value;\n\n this.__saveLocalInstance();\n }\n\n // NomeEstabelecimento\n private __infraEstabNome: string = \"\";\n\n public get infraEstabNome(): string {\n return this.__infraEstabNome;\n }\n\n public set infraEstabNome(value: string) {\n this.__infraEstabNome = value;\n\n this.__saveLocalInstance();\n }\n\n // EmpresaID\n private __infraEmpresaId: string = \"\";\n\n public get infraEmpresaId(): string {\n return this.__infraEmpresaId;\n }\n\n public set infraEmpresaId(value: string) {\n this.__infraEmpresaId = value;\n\n this.__saveLocalInstance();\n }\n\n // NomeEmpresa\n private __infraEmpresaNome: string = \"\";\n\n public get infraEmpresaNome(): string {\n return this.__infraEmpresaNome;\n }\n\n public set infraEmpresaNome(value: string) {\n this.__infraEmpresaNome = value;\n\n this.__saveLocalInstance();\n }\n\n //user\n private __user: string = \"\";\n\n public get user(): string {\n return this.__user;\n }\n\n public set user(value: string) {\n this.__user = value;\n\n this.__saveLocalInstance();\n }\n\n //username\n private __userName: string = \"\";\n\n public get userName(): string {\n return this.__userName;\n }\n\n public set userName(value: string) {\n this.__userName = value;\n\n this.__saveLocalInstance();\n }\n\n //tokenPayload\n private __tokenPayload!: Payload;\n\n public get tokenPayload(): Payload {\n return this.__tokenPayload;\n }\n\n public set tokenPayload(value: Payload) {\n this.__tokenPayload = value;\n\n this.__saveLocalInstance();\n }\n\n //authToken\n private __authToken: string = \"\";\n\n public get authToken(): string {\n return this.__authToken;\n }\n\n public set authToken(value: string) {\n this.__authToken = value;\n\n if (this.__authToken != '') {\n // Utiliza-se a função dos Utils para pegar o segundo valor do Token, separados por um '.'\n // e define o __tokenPayload como o objeto resultante do JSON.parse(payloadJson)\n const payloadJson: string = Utils.b64DecodeUnicode(this.__authToken.split('.')[1]);\n\n this.__tokenPayload = JSON.parse(payloadJson);\n\n this.startLoginCheck();\n }\n\n this.__saveLocalInstance();\n }\n\n /** Domínio */\n private __dominio: string = \"\";\n\n public get dominio(): string {\n return this.__dominio;\n }\n\n public set dominio(value: string) {\n this.__dominio = value;\n\n this.__saveLocalInstance();\n }\n\n //url para redirecionamento\n private __UrlRedirect: string = \"/\";\n\n public get urlRedirect(): string {\n return this.__UrlRedirect;\n }\n\n public set urlRedirect(value: string) {\n this.__UrlRedirect = value;\n }\n\n //indica Login Externo\n private __isExternalLogin: boolean = false;\n\n public get isExternalLogin(): boolean {\n return this.__isExternalLogin;\n }\n\n public set isExternalLogin(value: boolean) {\n this.__isExternalLogin = value;\n\n this.__saveLocalInstance();\n }\n\n /** Se é para ignorar o método reCheckLogin */\n private __ignoreCheckLogin: boolean = false;\n\n public get ignoreCheckLogin(): boolean {\n return this.__ignoreCheckLogin;\n }\n\n public set ignoreCheckLogin(value: boolean) {\n this.__ignoreCheckLogin = value;\n\n this.__saveLocalInstance();\n }\n\n //infraInAuthTypeId\n private __infraInAuthTypeId: number = 0;\n\n public get infraInAuthTypeId(): number {\n return this.__infraInAuthTypeId;\n }\n\n public set infraInAuthTypeId(value: number) {\n this.__infraInAuthTypeId = value;\n\n this.__saveLocalInstance();\n }\n\n //infraIn2FaTypeId\n private __infraIn2FaTypeId: number | null | undefined = null;\n\n public get infraIn2FaTypeId(): number | null | undefined {\n return this.__infraIn2FaTypeId;\n }\n\n public set infraIn2FaTypeId(value: number | null | undefined) {\n this.__infraIn2FaTypeId = value;\n\n this.__saveLocalInstance();\n }\n\n //is2FaEnabled\n private __is2FaEnabled: boolean = false;\n\n public get is2FaEnabled(): boolean {\n return this.__is2FaEnabled;\n }\n\n public set is2FaEnabled(value: boolean) {\n this.__is2FaEnabled = value;\n\n this.__saveLocalInstance();\n }\n\n // azureTenantId\n private __azureTenantId: string = \"\";\n\n public get azureTenantId(): string {\n return this.__azureTenantId;\n }\n\n public set azureTenantId(value: string) {\n this.__azureTenantId = value;\n\n this.__saveLocalInstance();\n }\n\n // azureClientId\n private __azureClientId: string = \"\";\n\n public get azureClientId(): string {\n return this.__azureClientId;\n }\n\n public set azureClientId(value: string) {\n this.__azureClientId = value;\n\n this.__saveLocalInstance();\n }\n\n // #endregion GETTERS/SETTERS\n\n private async __saveLocalInstance(): Promise<void> {\n\n if (this.__isSaving) {\n return;\n }\n\n this.__isSaving = true;\n\n localStorage.setItem(this.__local_key, this.toJson());\n\n // Método com customizações para salvar informações na storage\n this._customStorageService.storageSaveLocalInstance();\n\n this.__notSaving();\n }\n\n private async __notSaving(): Promise<void> {\n this.__isSaving = false;\n }\n\n /**\n * Salva a instância como JSON seguro, ignorando objetos que não podem se tornar um JSON.\n */\n public toJson(): string {\n const json = `\n {\n \"__ip\": \"${this.ip}\",\n \"__tenantId\": ${this.tenantId},\n \"__infraUsuarioId\": \"${this.infraUsuarioId}\",\n \"__infraEstabId\": \"${this.infraEstabId}\",\n \"__infraEstabNome\": \"${this.infraEstabNome}\",\n \"__infraEmpresaId\": \"${this.infraEmpresaId}\",\n \"__infraEmpresaNome\": \"${this.infraEmpresaNome}\",\n \"__user\": \"${this.user}\",\n \"__userName\": \"${this.userName}\",\n \"__authToken\": \"${this.authToken}\",\n \"__tokenPayload\": ${JSON.stringify(this.tokenPayload)},\n \"__dominio\": \"${this.dominio}\",\n \"__isExternalLogin\": ${this.isExternalLogin},\n \"__infraInAuthTypeId\": ${this.infraInAuthTypeId},\n \"__infraIn2FaTypeId\": ${this.infraIn2FaTypeId},\n \"__is2FaEnabled\": ${this.is2FaEnabled},\n \"__azureTenantId\": \"${this.azureTenantId}\",\n \"__azureClientId\": \"${this.azureClientId}\"\n }\n `;\n\n return json;\n }\n\n /** Inicia a verificação do login. */\n public startLoginCheck() {\n\n if (!this.__isCheckingAuth) {\n this.reCheckLogin();\n }\n\n }\n\n /**\n * Verifica a cada diferença de tempo entre a data atual e a data do token.\n */\n public async reCheckLogin() {\n\n if (this.__authToken === undefined || this.__authToken === '' || this.authToken === null || this.authToken === '') {\n this.__isCheckingAuth = false;\n return;\n }\n\n this.__isCheckingAuth = true;\n\n let isRenewToken: boolean = false;\n let nowDate: number = Math.round(Date.now() / 1000);\n\n if (this.tokenPayload.exp <= nowDate) {\n isRenewToken = true;\n }\n\n let leftTime: number = this.tokenPayload.exp - nowDate\n\n if (leftTime <= 0) {\n isRenewToken = true;\n }\n\n // TODO: Alterar aqui para não deslogar e avisar o usuário para logar denovo.\n if (isRenewToken) {\n const response = await this.getNewToken();\n\n if (response !== undefined && response !== null && response != '') {\n this.authToken = response;\n nowDate = Math.round(Date.now() / 1000);\n leftTime = this.tokenPayload.exp - nowDate;\n } else {\n this.logout();\n\n return;\n }\n\n }\n\n if (this.ignoreCheckLogin) {\n this.ignoreCheckLogin = false;\n } else {\n // Método com customizações para inicializações da AutoStorage\n this._customStorageService.storageInitializeAutoStorage();\n }\n\n this.isLoggedInSub.next(true);\n\n setTimeout(this.reCheckLogin.bind(this), leftTime * 1000);\n }\n\n public logout(): void {\n this.__isCheckingAuth = false;\n this.isLoggedInSub.next(false);\n this.__UrlRedirect = \"/\";\n this.__ip = \"\";\n this.__tenantId = 0;\n this.__infraUsuarioId = \"\";\n this.__infraEstabId = \"\";\n this.__infraEstabNome = \"\";\n this.__infraEmpresaId = \"\";\n this.__infraEmpresaNome = \"\";\n this.__user = \"\";\n this.__userName = \"\";\n this.__authToken = \"\";\n this.__dominio = \"\";\n this.__tokenPayload = {} as Payload;\n this.__isExternalLogin = false;\n this.__infraInAuthTypeId = 0;\n this.__infraIn2FaTypeId = null;\n this.__is2FaEnabled = false;\n this.__azureTenantId = \"\";\n this.__azureClientId = \"\";\n\n localStorage.removeItem(this.__local_key);\n\n // Limpa o armazenamento local do navegador que contém os filtros de um produto específico\n // Fecha a conexão local (se houver) antes de excluir a database para evitar o callback 'blocking'\n this._indexedDBService.closeOpenConnection()\n .then(() => this._indexedDBService.deleteDatabase())\n .catch((err) => console.warn('logout() => falha ao limpar conexão', err) );\n\n // Método com customizações para finalizações da storage\n this._customStorageService.storageLogout();\n }\n\n private getNewTokenBack(): Observable<RetToken> {\n let token: Token = {\n domain: this.__dominio,\n user: this.__user,\n tenantId: this.tenantId,\n token: this.authToken,\n infraUsuarioId: this.__infraUsuarioId,\n userName: this.__userName\n }\n\n const url = `${this._BASE_URL}/GetNewToken`;\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json')\n .set('Authorization',\n `Basic ${btoa(`${localStorage.getItem('configServerUser')}:${localStorage.getItem('configServerPassword')}`)}`\n );\n\n return this._httpClient\n .post<RetToken>(url, token, { 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n }),\n );\n\n }\n\n private getNewToken(): Promise<any> {\n\n return new Promise((resolve, reject) => {\n this.getNewTokenBack().subscribe({\n next: response => {\n resolve(response.Token);\n },\n error: error => {\n reject(error);\n }\n });\n });\n\n }\n\n /**\n * Renova o Token quando este estiver vencido.\n */\n public async renewToken() {\n\n if (!this.isLoggedInSub || this.__authToken === undefined || this.__authToken === '' || this.authToken === null || this.authToken === '') {\n return;\n }\n\n let isRenewToken: boolean = false;\n let nowDate: number = Math.round(Date.now() / 1000);\n\n if (this.tokenPayload.exp <= nowDate) {\n isRenewToken = true;\n }\n\n let leftTime: number = this.tokenPayload.exp - nowDate\n\n if (leftTime <= 0) {\n isRenewToken = true;\n }\n\n if (isRenewToken) {\n const response = await this.getNewToken();\n\n if (response !== undefined && response !== null && response != '') {\n this.authToken = response;\n }\n\n }\n\n }\n\n private isPrePortal(): boolean {\n\n // Identifica se a origem é PrePortal\n var url = new URL(window.location.href);\n var isPrePortal = url.searchParams.get(\"PrePortal\");\n\n if (isPrePortal != null) {\n\n if (isPrePortal.toString() == \"true\") {\n return true\n } else {\n return false\n }\n\n } else {\n return false\n }\n\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ICustomLoginService } from './models/icustom-login-service';\nimport { LIB_CUSTOM_LOGIN_SERVICE } from './token';\n\n@Injectable(\n { providedIn: 'root' }\n)\n\nexport class LibCustomLoginService {\n \n constructor( \n @Inject(LIB_CUSTOM_LOGIN_SERVICE) private _customLoginService: ICustomLoginService\n ) { }\n\n // #region Propriedade Customizadas para o Componente login.component.ts\n\n public get loginTitle(): string {\n return this._customLoginService.loginTitle;\n }\n\n public get loginSubtitle(): string {\n return this._customLoginService.loginSubtitle;\n }\n\n public get loginBackground(): string {\n return this._customLoginService.loginBackground;\n }\n\n public get loginLogotipo(): string {\n return this._customLoginService.loginLogotipo;\n }\n\n public get loginAltLogotipo(): string {\n return this._customLoginService.loginAltLogotipo;\n }\n\n public get loginPageTitle(): string {\n return this._customLoginService.loginPageTitle;\n }\n\n public get loginDesenvDomain(): string {\n return this._customLoginService.loginDesenvDomain;\n }\n\n public get loginDesenvUser(): string {\n return this._customLoginService.loginDesenvUser;\n }\n\n public get loginDesenvPassword(): string {\n return this._customLoginService.loginDesenvPassword;\n }\n\n // #endregion Propriedade Customizadas para o Componente login.component.ts\n\n // #region Métodos Customizadas para o Componente auth.service.ts\n\n /**\n * Método executado no auth.service.ts - método: login ()\n * Utilizado para inicializações diversas\n */\n public authLogin(): void {\n this._customLoginService.authLogin();\n }\n\n /**\n * Método executado no auth.service.ts - método: logout ()\n * Utilizado para inicializações diversas\n */\n public authLogout(): void {\n this._customLoginService.authLogout();\n }\n\n /**\n * Método executado no auth.service.ts - método: login ()\n * Utilizado para informar o redirecionamento para a tela inicial após o login ok\n * \n * @param router Objeto de Router que será utilizado\n */\n public authNavigateToPage(router: Router): void {\n this._customLoginService.authNavigateToPage(router);\n }\n\n // #endregion Métodos Customizadas para o Componente auth.service.ts\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { CheckUrlAndMethodService, MessageService, Utils } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\nimport { AuthStorageService } from '../storage/auth-storage.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProjectUtilservice {\n\n constructor(\n private router: Router,\n private authStorageService: AuthStorageService,\n private checkUrlAndMethodService: CheckUrlAndMethodService,\n private messageService: MessageService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) { }\n\n // Exibe a mensagem de erro de uma requisição http\n public showHttpError(error: any) {\n\n if (error.error instanceof ErrorEvent) {\n // Erro ocorreu no lado do cliente\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n } else {\n // Erro ocorreu no lado do servidor\n let isUnauthorizedAccess = error.status === 401;\n\n if (isUnauthorizedAccess) {\n let isFromAplic = this.checkUrlAndMethodService.needsAuthRequest(error.url, \"*\", this._customEnvironmentService.needsAuthAplic);\n\n if (isFromAplic) {\n // Remove a autenticação do usuário.\n this.authStorageService.isLoggedInSub.next(false);\n this.authStorageService.urlRedirect = \"/\";\n\n let promise = this.router.navigate([\"/auth/login\"]);\n\n promise.then(this.showExpiredAccess.bind(this));\n } else {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n }\n\n } else {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n }\n\n }\n\n }\n\n // Exibe a mensagem de erro de uma requisição HTTP em caso de lógica integrada OS\n public showHTTPErrorOS(error: any) {\n\n if (error.error instanceof ErrorEvent) {\n // Erro ocorreu no lado do cliente\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n } else {\n // Erro ocorreu no lado do servidor\n let isUnauthorizedAccess = error.status === 401;\n\n if (isUnauthorizedAccess) {\n let isFromAplic = this.checkUrlAndMethodService.needsAuthRequest(error.url, \"*\", this._customEnvironmentService.needsAuthAplic);\n\n if (isFromAplic) {\n // Remove a autenticação do usuário.\n this.authStorageService.isLoggedInSub.next(false);\n this.authStorageService.urlRedirect = \"/\";\n\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n } else {\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n }\n\n } else {\n this.router.navigate([\"/auth/login\"]).then(e => {\n this.messageService.showAlertDanger(Utils.getHttpErrorMessage(error));\n });\n }\n\n }\n\n }\n\n // Mostra uma mensagem de sessão expirada.\n private showExpiredAccess(navigationResult: boolean) {\n\n if (navigationResult) {\n this.messageService.showAlertWarning(\"Sessão expirada, logue-se novamente.\");\n }\n\n }\n\n // Obtém o hostName\n\tpublic getHostName(): string {\n\t\treturn this._customEnvironmentService.hostName\n\t}\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { Observable } from 'rxjs';\nimport { map, take, tap } from 'rxjs/operators';\n\nimport { Code2Fa } from './models/code-2fa';\nimport { ForgottenPasswordForm } from './models/forgotten-password-form';\nimport { InfraIn2FaTypeId } from './models/infraIn2FaTypeId';\nimport { InfraInAuthTypeId } from './models/infraInAuthTypeId';\nimport { Login } from './models/login';\nimport { LoginForm } from './models/login-form';\nimport { NovaSenhaForm } from './models/nova-senha-form';\nimport { PasswordRecup } from './models/password-recup';\nimport { Payload } from './models/payload';\nimport { RetAutenthication } from './models/ret-autenthication';\nimport { RetLogin } from './models/ret-login';\n\nimport { IpServiceService, RetError } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from './custom/lib-custom-environment.service';\nimport { LibCustomLoginService } from './custom/lib-custom-login.service';\nimport { ProjectUtilservice } from './project/project-utils.service';\nimport { IndexedDBService } from './services/indexed-db.service';\nimport { AuthStorageService } from './storage/auth-storage.service';\n@Injectable(\n { providedIn: 'root' }\n)\n\nexport class AuthService {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _pendingWarning: string | null = null;\n \n private readonly _BASE_URL: string = ''; // SpInfra2WS\n private readonly _AUTH_BASE_URL: string = ''; // SpInfra2AuthWS\n private readonly _BASE_OS_URL: string = ''; // SpInfra2LoginWS\n\n private readonly _HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');\n private ip: string = \"undefined\";\n private city: string = \"undefined\";\n private state: string = \"undefined\";\n private country: string = \"undefined\";\n\n // #endregion PRIVATE\n\n // #endregion ==========> PROPERTIES <==========\n\n constructor(\n private _httpClient: HttpClient,\n private _router: Router,\n private _authStorageService: AuthStorageService,\n private _ipServiceService: IpServiceService,\n private _customLoginService: LibCustomLoginService,\n private _projectUtilservice: ProjectUtilservice,\n private _customEnvironmentService: LibCustomEnvironmentService,\n private _indexedDBService: IndexedDBService\n ) {\n this._BASE_URL = `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginSisproERP`; // SpInfra2WS\n this._AUTH_BASE_URL = `${ this._customEnvironmentService.SpInfra2AuthWS }/Auth`; // SpInfra2AuthWS\n this._BASE_OS_URL = `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginIntegradoOS`; // SpInfra2LoginWS\n\n this._BASE_URL = !this._customEnvironmentService.production ? this._BASE_URL : `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginSisproERP`;\n this._AUTH_BASE_URL = !this._customEnvironmentService.production ? this._AUTH_BASE_URL : `${ this._customEnvironmentService.SpInfra2AuthWS }/Auth`;\n this._BASE_OS_URL = !this._customEnvironmentService.production ? this._BASE_OS_URL : `${ this._customEnvironmentService.SpInfra2LoginWS }/LoginIntegradoOS`;\n\n this.getParms();\n }\n\n // #region ==========> SERVICE METHODS <==========\n\n // #region GET\n\n private getParms(): void {\n this.ip = \"undefined\";\n\n this._ipServiceService.getIPAddress().subscribe({\n next: (res: any) => {\n this.ip = res.ip;\n },\n error: (error: any) => {\n },\n });\n\n this.city = \"undefined\";\n this.state = \"undefined\";\n this.country = \"undefined\";\n\n this._ipServiceService.getDataUser().subscribe({\n next: (res: any) => {\n this.city = res.city;\n this.state = res.region_code;\n this.country = res.country_name;\n },\n error: (error: any) => {\n },\n });\n\n }\n\n private getHostName(): string {\n let product: string = window.location.pathname;\n\n let index: number = product.indexOf(\"/auth/login\");\n\n if (index != -1) {\n product = product.substring(0, index);\n } else {\n product = \"\";\n }\n\n return this._projectUtilservice.getHostName() + product; }\n\n // #endregion GET\n\n // #region POST\n\n /** Obtém o método de autenticação\n * @param domain Domínio do login\n * @returns Observable com os dados do método de autenticação, seja erro ou sucesso\n */\n public getAuthentication(domain: string): Observable<RetAutenthication> {\n \n const params = new HttpParams()\n .set('domain', domain)\n \n const url = `${ this._AUTH_BASE_URL }/GetAuthentication`;\n\n const headers = this._HTTP_HEADERS;\n \n return this._httpClient\n .post<RetAutenthication>(url, null , { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n \n localStorage.setItem('configServerUser', response.User);\n localStorage.setItem('configServerPassword', response.Password);\n\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.dominio = response.Domain;\n this._authStorageService.infraInAuthTypeId = response.InfraInAuthTypeId;\n this._authStorageService.infraIn2FaTypeId = response.InfraIn2FaTypeId;\n this._authStorageService.is2FaEnabled = response.Is2FaEnabled;\n this._authStorageService.azureTenantId = response.AzureTenantId;\n this._authStorageService.azureClientId = response.AzureClientId;\n\n this._authStorageService.tokenPayload = {} as Payload;\n })\n \n );\n }\n\n /** Realiza o login no sistema\n * @param login Informações do formulário de login\n * @returns Observable com os dados do login realizado, seja erro ou sucesso\n */\n public login(domain: string, user: string, password: string): Observable<RetLogin> {\n \n let login: Login = {\n usuario: user,\n senha: password\n }\n\n const params = new HttpParams()\n\n .set('dominio', domain)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${ this._ipServiceService.getDataBrowserUser().browser } - ${ this._ipServiceService.getDataBrowserUser().so }`)\n .set('localization', `${ this.city }, ${ this.state }, ${ this.country }`)\n .set('infraInAuthTypeId', this._authStorageService.infraInAuthTypeId)\n .set('infraIn2FaTypeId', this._authStorageService.infraIn2FaTypeId!)\n .set('is2FaEnabled', this._authStorageService.is2FaEnabled);\n\n const url = `${ this._BASE_URL }/ValidateLogin`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n // Limnpa o armazenamento local do navegador que contém os filtros de um produto específico (com base na prop 'product' do environment)\n this._indexedDBService.closeOpenConnection()\n .then(() => this._indexedDBService.deleteDatabase())\n .catch((err) => console.warn('login() => falha ao limpar conexão', err) );\n\n if (response.FeedbackMessage != \"\") {\n return;\n }\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n if (response.InitializePassword) {\n //Inicializar password\n this._authStorageService.logout();\n\n } else if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n //Inicializar Autenticação Local 2 Fatores via Email\n this._authStorageService.logout();\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n this._authStorageService.infraInAuthTypeId = InfraInAuthTypeId.Local;\n this._authStorageService.infraIn2FaTypeId = InfraIn2FaTypeId.Email;\n this._authStorageService.is2FaEnabled = true;\n } else {\n this._authStorageService.ignoreCheckLogin = true;\n\n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n\n // Método com customizações para inicializações do Login\n this._customLoginService.authLogin();\n\n if (this._authStorageService.urlRedirect == '' || this._authStorageService.urlRedirect == '/' || this._authStorageService.urlRedirect == '/auth/login') {\n // Método com customizações para redirecionamento da tela inicial após login ok\n this._customLoginService.authNavigateToPage(this._router);\n } else {\n this._router.navigate([this._authStorageService.urlRedirect]);\n }\n\n this._authStorageService.urlRedirect = \"/\";\n }\n\n })\n );\n }\n\n /** Realiza o login no sistema (Azure)\n * @param domain Domínio de login\n * @param user usuário de login (mail)\n * @returns Observable com os dados do login realizado, seja erro ou sucesso\n */\n public loginAzure(domain: string, user: string): Observable<RetLogin> {\n \n let login: Login = {\n usuario: user,\n senha: \"azure\"\n }\n\n const params = new HttpParams()\n\n .set('dominio', domain)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${ this._ipServiceService.getDataBrowserUser().browser } - ${ this._ipServiceService.getDataBrowserUser().so }`)\n .set('localization', `${ this.city }, ${ this.state }, ${ this.country }`)\n .set('infraInAuthTypeId', this._authStorageService.infraInAuthTypeId)\n .set('infraIn2FaTypeId', this._authStorageService.infraIn2FaTypeId!)\n .set('is2FaEnabled', this._authStorageService.is2FaEnabled);\n\n const url = `${ this._BASE_URL }/ValidateLogin`;\n\n const headers = this._HTTP_HEADERS;\n \n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.FeedbackMessage != \"\") {\n return;\n }\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n \n this._authStorageService.ignoreCheckLogin = true;\n \n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n \n // Método com customizações para inicializações do Login\n this._customLoginService.authLogin();\n\n if (this._authStorageService.urlRedirect == '' || this._authStorageService.urlRedirect == '/' || this._authStorageService.urlRedirect == '/auth/login') {\n // Método com customizações para redirecionamento da tela inicial após login ok\n this._customLoginService.authNavigateToPage(this._router);\n } else {\n this._router.navigate([this._authStorageService.urlRedirect]);\n }\n\n this._authStorageService.urlRedirect = \"/\";\n })\n \n );\n }\n\n public loginExternal(dominio: string, user: string, password: string): Observable<boolean> {\n\n let login: Login = {\n usuario: user,\n senha: password\n }\n\n const params = new HttpParams()\n .set('dominio', dominio);\n\n const url = `${this._BASE_URL}/ValidateExternalLogin`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (!response.Error) {\n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = true;\n }\n\n }),\n map((response) => {\n return response.Error;\n }\n )\n\n );\n }\n\n /** Este método é utilizado para realizar o login no sistema integrado com a OS.\n * Originalmente pensado para utilizar apenas pelo componente de integração de login.\n * @param parmsLogin Informações do formulário de login\n * @param serialV6 Serial do V6\n * \n * @returns Observable com os dados do login realizado, seja erro ou sucesso\n */\n public loginOS(parmsLogin: LoginForm, serialV6: string): Observable<RetLogin> {\n let login: Login = {\n usuario: parmsLogin.usuario,\n senha: parmsLogin.senha\n }\n\n const params = new HttpParams()\n .set('dominio', parmsLogin.dominio)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${ this._ipServiceService.getDataBrowserUser().browser } - ${ this._ipServiceService.getDataBrowserUser().so }`)\n .set('localization', `${ this.city }, ${ this.state }, ${ this.country }`)\n .set('infraInAuthTypeId', this._authStorageService.infraInAuthTypeId)\n .set('infraIn2FaTypeId', this._authStorageService.infraIn2FaTypeId!)\n .set('is2FaEnabled', this._authStorageService.is2FaEnabled)\n .set('serialV6', serialV6);\n\n const url = `${ this._BASE_OS_URL }/ValidateOSLogin`;\n\n const headers = this._HTTP_HEADERS;\n \n return this._httpClient\n .post<RetLogin>(url, login, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {if (response.FeedbackMessage != \"\" && response.FeedbackMessage != null) { return; }\n\n if (response.Error) {\n this._authStorageService.logout();\n throw Error(response.ErrorMessage);\n }\n \n if (response.InitializePassword) {\n //Inicializar password\n this._authStorageService.logout();\n }\n else if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n //Inicializar Autenticação Local 2 Fatores via Email\n this._authStorageService.logout();\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n }\n else {\n this._authStorageService.ignoreCheckLogin = true;\n \n this._authStorageService.isLoggedInSub.next(true);\n \n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = login.usuario;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n }\n })\n );\n }\n \n /** Realiza o logout do sistema, removendo tokens do localStorage e limpando cache */\n public logout() {\n this._authStorageService.logout();\n\n localStorage.removeItem('configsServerUser');\n localStorage.removeItem('configsServerPassword');\n\n // Método com customizações para inicializações do Logout\n this._customLoginService.authLogout();\n \n this._router.navigate([\"/auth/login\"]);\n }\n\n public validateAuthentication2Fa(code: string): Observable<RetLogin> {\n\n let Code2Fa: Code2Fa = {\n infraUsuarioId: this._authStorageService.infraUsuarioId,\n code: code\n }\n\n const params = new HttpParams()\n .set('domain', this._authStorageService.dominio)\n .set('user', this._authStorageService.user)\n .set('userName', this._authStorageService.userName)\n\n const url = `${this._BASE_URL}/ValidadeLogin2FaWithEmail`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, Code2Fa, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n this._authStorageService.ignoreCheckLogin = true;\n\n this._authStorageService.isLoggedInSub.next(true);\n\n this._authStorageService.ip = this.ip;\n this._authStorageService.tenantId = response.TenantId;\n this._authStorageService.infraUsuarioId = response.InfraUsuarioId;\n this._authStorageService.infraEstabId = response.EstabelecimentoId;\n this._authStorageService.infraEstabNome = response.NomeEstabelecimento;\n this._authStorageService.infraEmpresaId = response.EmpresaId;\n this._authStorageService.infraEmpresaNome = response.NomeEmpresa;\n this._authStorageService.user = this._authStorageService.user;\n this._authStorageService.userName = response.UserName;\n this._authStorageService.authToken = response.Token;\n this._authStorageService.dominio = response.Dominio;\n this._authStorageService.isExternalLogin = false;\n\n // Método com customizações para inicializações do Login\n this._customLoginService.authLogin();\n\n if (this._authStorageService.urlRedirect == '' || this._authStorageService.urlRedirect == '/' || this._authStorageService.urlRedirect == '/auth/login') {\n // Método com customizações para redirecionamento da tela inicial após login ok\n this._customLoginService.authNavigateToPage(this._router);\n } else {\n this._router.navigate([this._authStorageService.urlRedirect]);\n }\n\n this._authStorageService.urlRedirect = \"/\";\n })\n\n );\n }\n\n public GetNewCode2Fa(): Observable<RetError> {\n\n const params = new HttpParams()\n .set('domain', this._authStorageService.dominio)\n .set('user', this._authStorageService.user)\n .set('ip', this.ip)\n .set('browse', `${this._ipServiceService.getDataBrowserUser().browser} - ${this._ipServiceService.getDataBrowserUser().so}`)\n .set('localization', `${this.city}, ${this.state}, ${this.country}`);\n\n const url = `${this._BASE_URL}/GetNewCode2FaWithEmail`;\n\n const headers = this._HTTP_HEADERS;\n\n return this._httpClient\n .post<RetLogin>(url, null, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n\n );\n }\n\n public forgottenPassword(parms: ForgottenPasswordForm): Observable<RetError> {\n\n this._authStorageService.logout();\n\n const params = new HttpParams()\n .set('domain', parms.dominioFgtPsw)\n .set('user', parms.usuarioFgtPsw)\n .set('urlServidor', this.getHostName())\n .set('ip', this.ip)\n .set('browse', `${this._ipServiceService.getDataBrowserUser().browser} - ${this._ipServiceService.getDataBrowserUser().so}`)\n .set('localization', `${this.city}, ${this.state}, ${this.country}`);\n\n const headers = this._HTTP_HEADERS;\n\n const url = `${this._BASE_URL}/ForgottenPassword`;\n\n return this._httpClient\n .post<RetError>(url, null, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n\n );\n\n }\n\n public recoverPassword(dominio: string, usuario: string, parms: NovaSenhaForm): Observable<RetError> {\n\n let recupPassword: PasswordRecup = {\n password: parms.password,\n confirmPassword: parms.confirmPassword,\n code: parms.code\n }\n\n const params = new HttpParams()\n .set('domain', dominio)\n .set('user', usuario)\n\n const headers = this._HTTP_HEADERS;\n\n const url = `${this._BASE_URL}/RecoverPassword`;\n\n return this._httpClient\n .post<RetError>(url, recupPassword, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n\n );\n\n }\n\n public createPassword(dominio: string, usuario: string, parms: NovaSenhaForm): Observable<RetError> {\n\n let recupPassword: PasswordRecup = {\n password: parms.password,\n confirmPassword: parms.confirmPassword,\n code: parms.code\n }\n\n const params = new HttpParams()\n .set('domain', dominio)\n .set('user', usuario)\n\n const headers = this._HTTP_HEADERS;\n\n const url = `${this._BASE_URL}/CreatePassword`;\n\n return this._httpClient\n .post<RetError>(url, recupPassword, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap((response) => {\n\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n })\n );\n }\n\n // #endregion POST\n\n // #endregion ==========> SERVICE METHODS <==========\n\n // #region ==========> UTILS <==========\n public setPendingWarning(message: string) {\n this._pendingWarning = message;\n }\n\n public consumePendingWarning(): string | null {\n const message = this._pendingWarning;\n this._pendingWarning = null;\n\n return message;\n }\n\n // #endregion ==========> UTILS <==========\n\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable, Subject, take, tap } from 'rxjs';\n\nimport { RetError, RetEstabelecimentosModal, RetString } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../../custom/lib-custom-environment.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\nimport { RetDynamicMenu } from './model/dynamic-menu';\nimport { NavSubmenuSearchItem } from './model/navsubmenu-searchitem';\nimport { RetDropDown } from './model/ret-dropdown';\nimport { RetEstabelecimentoSession } from './model/ret-estabelecimento-session';\nimport { RetInfraUsuarioEmail } from './model/ret-infrausuarioemail';\nimport { RetInfraUsuarioImg } from './model/ret-infrausuarioimg';\nimport { RetIsMenuAllowed } from './model/ret-is-menu-allowed';\nimport { RetNavSubMenu, RetSubmenuWithCards } from './model/ret-navsubmenu';\nimport { RetVersion } from './model/ret-version';\nimport { Usuario_IMG } from './model/usuario-img';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MenuServicesService {\n private readonly _BASE_URL: string = \"\"; // SpInfra2ErpWS\n private readonly _BASE_URL_VERSION_INFRA: string = \"\"; // SpInfra2Version\n private readonly _BASE_URL_VERSION_CORPORATIVO: string = \"\"; // SpCrp2Version\n\n private readonly _HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');\n\n constructor(\n private _authStorageService: AuthStorageService,\n private _httpClient: HttpClient,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) {\n this._BASE_URL = `${ this._customEnvironmentService.SpInfra2ErpWS }`; // SpInfra2ErpWS\n this._BASE_URL = !this._customEnvironmentService.production ? this._BASE_URL : `${ this._customEnvironmentService.SpInfra2ErpWS }`;\n\n this._BASE_URL_VERSION_INFRA = `${ this._customEnvironmentService.SpInfra2AuthWS.replace('SpInfra2AuthWS', 'SpInfra2VersionWS') }`; // SpInfra2VersionWS\n this._BASE_URL_VERSION_INFRA = !this._customEnvironmentService.production ? this._BASE_URL_VERSION_INFRA : `${ this._customEnvironmentService.SpInfra2AuthWS.replace('SpInfra2AuthWS', 'SpInfra2VersionWS') }`;\n \n this._BASE_URL_VERSION_CORPORATIVO = `${ this._customEnvironmentService.SpInfra2AuthWS.replace('/Infra', '/Corporativo').replace('SpInfra2AuthWS', 'SpCrp2VersionWS') }`; // SpCrp2VersionWS\n this._BASE_URL_VERSION_CORPORATIVO = !this._customEnvironmentService.production ? this._BASE_URL_VERSION_CORPORATIVO : `${ this._customEnvironmentService.SpInfra2AuthWS.replace('/Infra', '/Corporativo').replace('SpInfra2AuthWS', 'SpCrp2VersionWS') }`;\n }\n\n // #region ==========> SERVICES <==========\n\n // #region PREPARATION\n\n // #region Menu: Usuário\n // [...]\n // #endregion Menu: Usuário\n\n // #region Menu: Estabelecimentos\n\n public getEstabelecimentosModalList(usuarioID: string, pesquisa: string): Observable<RetEstabelecimentosModal> {\n const params = new HttpParams()\n .set('pesquisa', pesquisa)\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json');\n\n const url = `${this._BASE_URL}/InfraEstabelecimento/GetEstabelecimentosModal`;\n\n return this._httpClient\n .get<RetEstabelecimentosModal>(url, { 'params': params, 'headers': headers })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Estabelecimentos\n\n // #endregion PREPARATION\n\n // #region GET\n\n // #region Menu: Usuário\n\n public getImagemMenu(): Observable<RetInfraUsuarioImg> {\n\n const url = `${this._BASE_URL}/InfraUsuario/GetImagemMenu`;\n\n return this._httpClient\n .get<RetInfraUsuarioImg>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n\n this.saveImageToStorage(response.InfraUsuarioImg.Imagem, response.InfraUsuarioImg.Filename);\n })\n )\n }\n\n // #endregion Menu: Usuário\n\n // #region Menu: Estabelecimentos\n\n public getEstabelecimentoSession(estabID: string): Observable<RetEstabelecimentoSession> {\n const params = new HttpParams()\n .set('id', estabID);\n\n const url = `${this._BASE_URL}/InfraEstabelecimento/GetEstabelecimentoSession`;\n\n return this._httpClient\n .get<RetEstabelecimentoSession>(url, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Estabelecimentos\n\n // #region Get Usuario Email\n\n public getUsuarioEmail(): Observable<RetInfraUsuarioEmail> {\n const url = `${this._BASE_URL}/InfraUsuario/GetUsuarioEmail`;\n\n return this._httpClient\n .get<RetInfraUsuarioEmail>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Get Usuario Email\n\n // #region Menu: Version\n\n public getVersionInfra(): Observable<RetVersion> {\n const url = `${this._BASE_URL_VERSION_INFRA}/Version/GetVersion`;\n\n return this._httpClient\n .get<RetVersion>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n public getVersionCorporativo(): Observable<RetVersion> {\n const url = `${this._BASE_URL_VERSION_CORPORATIVO}/Version/GetVersion`;\n\n return this._httpClient\n .get<RetVersion>(url, { 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Version\n\n // #region Menu: IsMenuAllowed\n\n /** Método executado para validar a permissão de acesso a uma opção do menu\n */\n public isMenuAllowed(route: string){\n const params = new HttpParams()\n .set('route', route)\n\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/IsMenuAllowed`;\n\n return this._httpClient\n .get<RetIsMenuAllowed>(url, { 'params': params, headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n // #endregion Menu: IsMenuAllowed\n\n // #endregion GET\n\n // #region UPDATE\n\n // #region Menu: Usuário\n public updateLastLogEstabID(estabID: string): Observable<RetError> {\n const params = new HttpParams()\n .set('estabID', estabID)\n\n const url = `${this._BASE_URL}/InfraUsuario/UpdateLastSelectedEstabelecimento`;\n\n return this._httpClient\n .post<RetError>(url, null, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) { throw Error(response.ErrorMessage); }\n })\n )\n }\n // #endregion Menu: Usuário\n\n // #region Menu: Estabelecimentos\n public defineDefaultEstabelecimento(estabID: string, usuarioID: string, isDefault: boolean): Observable<RetError> {\n const params = new HttpParams()\n .set('estabID', estabID)\n .set('isDefault', isDefault)\n\n const url = `${this._BASE_URL}/InfraEstabelecimento/DefineDefaultEstab`;\n\n return this._httpClient\n .post<RetError>(url, null, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n )\n }\n\n // #endregion Menu: Estabelecimentos\n\n // #endregion UPDATE\n\n // #region Menu Dinâmico\n\n /** Método executado para pegar o Menu lateral levando em conta as permissões do usuário, grupo e o tenant ativo\n * Executado caso o getter do boolean Menu Dynamic seja true\n */\n public getMenuLateral(projetoId: number){\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/GetMenuLateral`;\n\n const params: HttpParams = new HttpParams()\n .set('projetoId', projetoId)\n\n return this._httpClient\n .get<RetDynamicMenu>(url, {params:params, headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para montar estrutura de título, submenu e telas de acordo com os modelos presentes na ngx-sp-infra\n * envia-se o título deste grupo de submenus, ícone e enum daqueles submenus que\n * ficarão alocados no grupo de determinado título enviado\n */\n public getTelaSubmenus(NavSubmenuSearchItems: NavSubmenuSearchItem[]): Observable < RetNavSubMenu > {\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json');\n\n const url = `${this._BASE_URL}/Menu/GetTelaSubmenus`;\n\n return this._httpClient\n .post<RetNavSubMenu>(url, JSON.stringify(NavSubmenuSearchItems), {'headers': headers })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para montar estrutura da tela de submenu com os cards baseado no IdUnico do menu acessado em específico\n */\n public getTelaSubmenusWithCards(MenuIdUnico:number): Observable < RetSubmenuWithCards > {\n\n const headers = new HttpHeaders()\n .set('Content-Type', 'application/json');\n\n const url = `${this._BASE_URL}/Menu/GetTelaSubmenusWithCards`;\n\n const params : HttpParams = new HttpParams()\n .set('MenuIdUnico', MenuIdUnico)\n\n return this._httpClient\n .get<RetSubmenuWithCards>(url, {'params':params, 'headers': headers })\n .pipe(\n take(1),\n tap(response => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para pegar os produtos para monta o MenuDropdown\n */\n public getProjects(){\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/GetProjects`;\n\n return this._httpClient\n .get<RetDropDown>(url, { headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n /** Método executado para pegar o HostName de direcionamento para OS\n */\n public GetHostServerOutSystems(){\n const headers = new HttpHeaders().set(\"Content-Type\", \"application/json\");\n\n const url = `${this._BASE_URL}/Menu/GetHostServerOutSystems`;\n\n return this._httpClient\n .get<RetString>(url, {headers: headers })\n .pipe(\n take(1),\n tap((response) => {\n if (response.Error) {\n throw Error(response.ErrorMessage);\n }\n })\n );\n\n }\n\n // #endregion Menu Dinâmico\n\n // #endregion ==========> SERVICES <==========\n\n\n // #region ==========> UTILITIES <==========\n private _menuFooterImg: Usuario_IMG | null = null;\n\n public getMenuFooterImg(): Usuario_IMG | null {\n const cachedFooterImg = JSON.parse(localStorage.getItem('menuFooterImg')!);\n\n if (cachedFooterImg) { return cachedFooterImg; }\n return this._menuFooterImg;\n }\n public setMenuFooterImg(value: Usuario_IMG): void {\n this._menuFooterImg = value;\n localStorage.setItem('menuFooterImg', JSON.stringify(value));\n }\n\n\n public saveImageToStorage(footerImgSrc: string, footerImgName: string): void {\n this.setMenuFooterImg({ USUARIOID: this._authStorageService.infraUsuarioId, FILENAME: footerImgName, FILE: footerImgSrc });\n }\n\n\n // #region NewImg Event\n\n // Implementação de lógica vista no link: https://hasangalakdinu.medium.com/how-to-call-a-function-in-another-component-angular-using-rxjs-3f2e85920705\n private _subject = new Subject<any>();\n\n public newUserImageEvent(value: any): void {\n this._subject.next(value);\n }\n\n public getNewUserImageEvent(): Observable<any> {\n return this._subject.asObservable();\n }\n\n // #endregion NewImg Event\n\n // #endregion ==========> UTILITIES <==========\n\n}\n","import { Inject, Injectable } from \"@angular/core\";\n\nimport { IMenuItemStructure } from '../components/menu-lateral/model/imenu-item-structure.model';\nimport { IMenuConfig } from \"./models/imenu-config\";\nimport { LIB_MENU_CONFIG } from \"./token\";\n\n@Injectable(\n { providedIn: 'root' }\n)\n/**Service responsável por pegar as opções do menu do projeto em que está sendo utilizada*/\nexport class LibMenuConfigService {\n\n constructor( \n @Inject(LIB_MENU_CONFIG) private _menuConfig: IMenuConfig\n ) { }\n\n public menu: IMenuItemStructure[] = []\n public menuDropdown: any[] = [];\n\n /** Inicializa as opções do menu com base na rota atual e em uma lista personalizada (opcional).\n * @param currentRoute A rota atual da aplicação\n * @param customList Uma lista personalizada de opções de menu (opcional).\n * @returns As opções do menu inicializadas.\n */\n public initializeMenu(currentRoute: string, customList?: IMenuItemStructure[]): IMenuItemStructure[] {\n \n this.menu = this._menuConfig.initializeMenu(currentRoute, customList);\n \n return this.menu;\n }\n\n public setMenuType(isStaticMenu: boolean): void {\n this._menuConfig.setMenuType(isStaticMenu);\n }\n\n public updateRouteSelection(currentRoute: string, currentList: IMenuItemStructure[]): IMenuItemStructure[] {\n return this._menuConfig.updateRouteSelection(currentRoute, currentList);\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { IMenuItemStructure } from '../components/menu-lateral/model/imenu-item-structure.model';\nimport { AuthStorageService } from '../storage/auth-storage.service';\nimport { LibMenuConfigService } from './lib-menu-config.service';\nimport { ICustomMenuService } from './models/icustom-menu-service';\nimport { LIB_CUSTOM_MENU_SERVICE } from './token';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LibCustomMenuService {\n\n // #region Propriedade Customizadas do Menu\n\n public get menuDynamic(): boolean {\n return this._customMenuService.menuDynamic;\n }\n\n public get menuDynamicCustom(): boolean {\n return this._customMenuService.menuDynamicCustom;\n }\n\n public get moduleName(): string {\n return this._customMenuService.moduleName;\n }\n\n public get moduleSvg(): string {\n return this._customMenuService.moduleSvg;\n }\n\n public get themeColor(): string {\n return this._customMenuService.themeColor;\n }\n\n // #endregion Propriedade Customizadas do Menu\n\n // #region Propriedade do Menu\n\n public menuConfig: LibMenuConfigService;\n\n /** Obtém as opções do menu. */\n public get menuItems(): IMenuItemStructure[] {\n return this._customMenuService.menuItems;\n }\n\n public set menuItems(value: IMenuItemStructure[]) {\n this._customMenuService.menuItems = value;\n }\n \n // #endregion Propriedade do Menu\n\n constructor(\n @Inject(LIB_CUSTOM_MENU_SERVICE) private _customMenuService: ICustomMenuService,\n private _menuConfig: LibMenuConfigService,\n private _authStorageService: AuthStorageService\n ) {\n // inicializações do Menu Dinâmico\n this.menuConfig = _menuConfig;\n }\n\n // #region - Métodos Customizadas para o Menu dinâmico\n\n // Método executado no menu-lateral.component.ts - método: onInit ()\n // Utilizado para obter o Módulo para montagem do Menu Dinâmico Lateral\n public menuDynamicGetProjetoId(): number\n {\n return this._customMenuService.menuDynamicGetProjetoId();\n }\n \n // Método executado no menu-lateral.component.ts - método: onInit ()\n // Utilizado para inicializações diversas\n public menuDynamicOnInit(): void {\n this._customMenuService.menuDynamicOnInit();\n }\n\n // Método executado no menu-lateral.component.ts - método: onInit ()\n // Utilizado para inicializações diversas\n public menuStaticOnInit(): void {\n this._customMenuService.menuStaticOnInit();\n }\n\n // Método executado no menu-lateral.component.ts - método: openExpansibleMenu()\n // Utilizado para inicializações ao Expandir a opção de Menu\n public menuOpenExpansibleMenu(ref: HTMLDivElement): void {\n this._customMenuService.menuOpenExpansibleMenu(ref);\n }\n\n /** Método que deve ser chamado na seleção de um novo estabelecimento, ele atualizará os valores do nosso BehaviorSubject para que possamos utilizá-lo em outras partes do sistema. */\n public menuEmitEstabelecimentoEvent(): void {\n this._customMenuService.menuEmitEstabelecimentoEvent();\n }\n\n // #endregion - Métodos Customizadas para o Menu dinâmico\n}\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { ApplicationRef, ComponentFactoryResolver, ComponentRef, EmbeddedViewRef, Injectable, Injector } from '@angular/core';\n\nimport { RetError, SearchInputComponent } from 'ngx-sp-infra';\nimport { debounceTime, distinctUntilChanged, filter, Observable, Subject, Subscription, switchMap, take, tap } from 'rxjs';\n\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\nimport { RetTelasPesquisa } from '../models/ret-telas-pesquisa.model';\nimport { ProjectUtilservice } from '../project/project-utils.service';\n\n/**\n * Serviço responsável por criar e gerenciar uma instância global do componente SearchInput.\n * \n * Este serviço utiliza a API do Angular para criar e renderizar componentes dinamicamente,\n * anexando-os diretamente ao DOM (fora da hierarquia normal de componentes).\n * \n * Características principais:\n * - Cria apenas uma instância do componente por vez (singleton)\n * - Gerencia o ciclo de vida do componente (criação, anexação ao DOM, destruição)\n * - Lida com eventos do componente via RxJS Subjects\n * - Garante limpeza apropriada de recursos (subscriptions, referencias DOM)\n * \n * @example\n * constructor(private pesquisaService: PesquisaTelasGlobalService) {\n * // Para exibir o componente de pesquisa\n * pesquisaService.show();\n * \n * // Para esconder o componente\n * pesquisaService.hide();\n * }\n */\n@Injectable({ providedIn: 'root' })\nexport class PesquisaTelasGlobalService {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n\n // #region GERENCIAMENTO DINÂMICO DO COMPONENTE\n\n /**\n * Referência ao componente dinâmico criado.\n * Usado para gerenciar o ciclo de vida e estado do componente.\n * Null quando o componente não está visível/criado.\n */\n private _componentRef?: ComponentRef<SearchInputComponent> | null = null;\n\n /**\n * Subject que centraliza eventos de fechamento do componente.\n * Ao invés de tratar o evento onClose diretamente, emitimos neste Subject para permitir um ponto único de tratamento no serviço.\n */\n private _onClose$ = new Subject<void>();\n \n /**\n * Subject que centraliza eventos de pesquisa do componente.\n * Ao invés de tratar o evento onSearch diretamente, emitimos neste Subject para permitir um ponto único de tratamento no serviço.\n */\n private _onSearch$ = new Subject<string>();\n\n /**\n * Agregador de subscriptions de longa duração.\n * Contém principalmente a inscrição do constructor que observa _onClose$.\n * Usado para garantir limpeza adequada em ngOnDestroy.\n */\n private _subscriptions: Subscription = new Subscription();\n\n /**\n * Subscription específica do evento onClose do componente atual.\n * Mantida separadamente para permitir limpeza imediata em hide().\n * Null quando não há componente ativo.\n */\n private _componentCloseSub: Subscription | null = null;\n \n /**\n * Subscription específica do evento onSearch do componente atual.\n * Null quando não há componente ativo.\n */\n private _componentSearchSub: Subscription | null = null;\n\n // #endregion GERENCIAMENTO DINÂMICO DO COMPONENTE\n\n private readonly _BASE_URL: string = `${ this._customEnvironmentService.SpInfra2ErpWS }/PesquisaGlobalTela`; // SpInfra2ErpWS\n private readonly _HTTP_HEADERS = new HttpHeaders().set('Content-Type', 'application/json');\n\n // #endregion PRIVATE\n\n // #region PUBLIC\n\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _appRef: ApplicationRef,\n private _injector: Injector,\n\n private _httpClient: HttpClient,\n private _customEnvironmentService: LibCustomEnvironmentService,\n private _projectUtils: ProjectUtilservice,\n ) {\n\n this._BASE_URL = this._customEnvironmentService.production\n ? `${ this._customEnvironmentService.SpInfra2ErpWS }/PesquisaGlobalTela`\n : this._BASE_URL;\n\n // Inscreve uma vez no Subject que receberá os eventos onClose dos componentes\n // Quando recebermos, executamos a ação desejada (aqui, esconder o componente)\n if (this._onClose$) {\n this._subscriptions.add(\n this._onClose$.subscribe(() => this.hide())\n );\n }\n\n // Inscreve uma vez no Subject que receberá os eventos onSearch dos componentes\n // Quando recebermos, executamos a ação desejada (aqui, chamar o backend)\n if (this._onSearch$) {\n this._subscriptions.add(\n this._onSearch$\n .pipe(\n debounceTime(500), // Aguarda 500ms de \"silêncio\" antes de emitir\n distinctUntilChanged(), // Emite apenas se o valor mudou desde a última emissão\n filter(pesquisa => pesquisa.length >= 3), // Emite apenas se a quantidade de caracteres da pesquisa for maior que 3\n switchMap(pesquisa => this.getTelas(pesquisa) ) // Cancela a chamada anterior se uma nova pesquisa chegar\n )\n .subscribe({\n next: res => {\n this._componentRef!.instance.loading = false;\n\n this._componentRef!.instance.telas = res.MenuSubmenuTela.Telas;\n this._componentRef!.instance.menus = res.MenuSubmenuTela.Menus;\n this._componentRef!.instance.submenus = res.MenuSubmenuTela.Submenus;\n },\n error: err => {\n this._componentRef!.instance.loading = false;\n this._projectUtils.showHttpError(err);\n }\n })\n \n );\n }\n\n }\n\n /**\n * Lifecycle hook do Angular chamado quando o serviço é destruído.\n * \n * Realiza limpeza completa de recursos para evitar memory leaks:\n * 1. Destrói qualquer instância ativa do componente\n * 2. Cancela todas as inscrições de longa duração\n * 3. Completa o Subject de eventos\n * \n * NOTA: Como este serviço é providedIn: 'root', ele normalmente\n * só será destruído quando a aplicação for encerrada. Ainda assim,\n * manter essa limpeza é uma boa prática e ajuda em testes.\n */\n public ngOnDestroy(): void {\n // Tenta esconder/destruir componente ativo se houver\n // Wrapped em try/catch pois pode haver erros ao destruir o componente se a aplicação estiver sendo encerrada\n if (this._componentRef) {\n try { this.hide(); } catch (e) { /* ignora */ }\n }\n\n // Cancela todas as inscrições de longa duração\n this._subscriptions.unsubscribe();\n\n // Completa os Subjects de eventos\n // Isso notifica todos os observadores que não haverá mais eventos\n this._onClose$.complete();\n this._onSearch$.complete();\n }\n\n\n // #region ==========> API METHODS <==========\n\n // #region GET\n\n /**\n * Método responsável pela busca por telas via API.\n * \n * @param pesquisa Termo de pesquisa para filtrar as telas.\n * @returns Observable emitindo o resultado da pesquisa de telas.\n */\n public getTelas(pesquisa: string): Observable<RetTelasPesquisa> {\n\n // Sempre que iniciar uma nova pesquisa seta o loading para true para melhor feedback para o usuário\n if (this._componentRef) this._componentRef!.instance.loading = true;\n\n const params = new HttpParams().set('pesquisa', pesquisa);\n const url = `${ this._BASE_URL }`;\n\n return this._httpClient.get<RetTelasPesquisa>(url, { 'params': params, 'headers': this._HTTP_HEADERS })\n .pipe(take(1), tap(response => this.showErrorMessage(response) ));\n }\n\n // #endregion GET\n\n // #endregion ==========> API METHODS <==========\n\n\n // #region ==========> UTILS <==========\n \n // #region GERENCIAMENTO DO COMPONENTE\n\n /**\n * Cria e exibe uma instância do componente SearchInput na tela.\n * \n * Este método utiliza a API baixo nível do Angular para criar um componente dinamicamente e anexá-lo ao DOM. O processo envolve:\n * \n * 1. Criar o componente via ComponentFactoryResolver\n * 2. Configurar suas propriedades iniciais\n * 3. Registrá-lo no mecanismo de detecção de mudanças do Angular\n * 4. Anexá-lo ao DOM (fora da hierarquia normal de componentes)\n * \n * IMPORTANTE: Este método garante que apenas uma instância do componente existe por vez, retornando early se já houver um componente ativo.\n * \n * @example\n * service.show(); // Cria e exibe o componente\n * service.show(); // Não faz nada (componente já existe)\n */\n public show(): void {\n // Garante que apenas uma instância existe por vez\n if (this._componentRef) { return; }\n\n // 1. Resolve a fábrica do componente - primeiro passo para criar\n // um componente dinamicamente no Angular. A fábrica contém os metadados\n // necessários para instanciar o componente.\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(SearchInputComponent);\n \n // 2. Cria uma nova instância do componente usando o injector raiz\n // Isso garante que o componente tenha acesso aos mesmos serviços\n // que componentes criados normalmente via template\n this._componentRef = componentFactory.create(this._injector);\n \n // 3. Registra a view do componente no ApplicationRef\n // Isso é CRÍTICO: sem este passo, o componente não participaria\n // do ciclo de detecção de mudanças do Angular\n this._appRef.attachView(this._componentRef.hostView);\n \n // 4. Obtém o elemento DOM raiz do componente e o anexa ao body\n // Como este componente é criado fora da hierarquia normal,\n // precisamos anexá-lo manualmente ao DOM\n const domElem = (this._componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n // 5. Configura os listeners dos eventos do componente\n // Em vez de tratar o hide() diretamente aqui, encaminhamos o evento para o Subject _onClose$ e guardamos a subscription para poder removê-la quando escondermos o componente.\n this._componentCloseSub = this._componentRef.instance.onClose.subscribe(() => this._onClose$.next());\n\n // Em vez de tratar o getTelas() diretamente aqui, encaminhamos o evento para o Subject _onSearch$ e guardamos a subscription para poder removê-la quando escondermos o componente.\n this._componentSearchSub = this._componentRef.instance.onSearch.subscribe(pesquisa => this._onSearch$.next(pesquisa));\n }\n\n /**\n * Esconde e destrói a instância atual do componente.\n * \n * Este método realiza a limpeza completa do componente:\n * 1. Remove o componente do ciclo de detecção de mudanças\n * 2. Destrói o componente e sua árvore de componentes\n * 3. Remove referências e cancela inscrições\n * \n * IMPORTANTE: Este método é idempotente - é seguro chamá-lo múltiplas vezes ou quando não há componente ativo.\n */\n public hide(): void {\n if (!this._componentRef) { return; }\n\n // Remove do ciclo de detecção de mudanças e do DOM\n // Estes passos são críticos para evitar memory leaks:\n // 1. detachView remove do ciclo de detecção de mudanças\n // 2. destroy limpa event handlers e remove do DOM\n this._appRef.detachView(this._componentRef.hostView);\n this._componentRef.destroy();\n this._componentRef = null;\n\n // Cancela a inscrição no evento onClose do componente\n // Isso é necessário mesmo que o componente seja destruído,\n // pois a subscription pode manter referências vivas\n if (this._componentCloseSub) {\n this._componentCloseSub.unsubscribe();\n this._componentCloseSub = null;\n }\n\n // Cancela a inscrição no evento onSearch do componente\n // Isso é necessário mesmo que o componente seja destruído, pois a subscription pode manter referências vivas\n if (this._componentSearchSub) {\n this._componentSearchSub.unsubscribe();\n this._componentSearchSub = null;\n }\n }\n\n // #endregion GERENCIAMENTO DO COMPONENTE\n\n private showErrorMessage(response: RetError): void { if (response.Error) throw Error(response.ErrorMessage); }\n\n // #endregion ==========> UTILS <==========\n\n}","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { NgIf } from '@angular/common';\nimport { InfraModule } from 'ngx-sp-infra';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\n@Component({\n selector: 'app-menu-not-allowed',\n templateUrl: './error-menu-not-allowed.component.html',\n styleUrls: ['./error-menu-not-allowed.component.css'],\n preserveWhitespaces: true,\n imports: [\n NgIf,\n InfraModule\n ]\n})\nexport class ErrorMenuNotAllowed {\n\n constructor(private router: Router,\n public authStorageService: AuthStorageService\n) { }\n\n onHome() {\n this.router.navigate([\"/home\"]);\n }\n\n}\n"," <div class=\"content\">\n <div class=\"image mb-4\">\n <lib-icon iconName=\"cadeado\" [iconSize]=\"128\" />\n </div>\n <h1 class=\"tittle\">Você não possui permissão para acessar esta tela!</h1>\n <button *ngIf=\"!this.authStorageService.isExternalLogin\" class=\"btn button mt-3\" (click)=\"onHome()\">\n Voltar para a tela inicial\n </button>\n </div>\n","export class LoginOSModel {\n public dominio: string = \"\";\n public usuario: string = \"\";\n public redirectUrl: string = \"\";\n public serialV6: string = \"\";\n\n // Sugestão do GPT: \"Pra facilitar instanciar a partir de objetos.\"\n constructor(init?: Partial<LoginOSModel>) {\n Object.assign(this, init);\n }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { InfraModule, MessageService } from 'ngx-sp-infra';\nimport { Subscription, take, timer } from 'rxjs';\nimport { AuthService } from '../../auth.service';\nimport { LoginForm } from '../../models/login-form';\nimport { LoginOSModel } from '../../models/login-os.model';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\n@Component({\n selector: 'login-os',\n\tstandalone: true,\n imports: [\n InfraModule\n ],\n template: `\n <div class=\"d-flex flex-column justify-content-center align-items-center h-100 w-100 bg-light\" >\n\n @switch (loginStatus) {\n @case (\"loading\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Carregando Informações...</h2>\n <p class=\"text-muted\">Por favor, aguarde enquanto os dados são carregados.</p>\n </div>\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n }\n @case (\"success\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Login efetuado com sucesso</h2>\n <h2 class=\"fw-bold\">Bem-vindo à V6!</h2>\n @if (timer > 0) { <span class=\"text-muted\">Redirecionando você em {{ timer }} segundos...</span> }\n @else { <span class=\"text-muted\">Se você não foi redirecionado automaticamente, <b class=\"text-primary glb-cursor-pointer\" (click)=\"redirect()\">clique aqui</b></span> }\n <div><lib-icon iconName=\"p-check\" iconColor=\"green\" [iconSize]=\"50\" /></div>\n </div>\n }\n @case (\"error\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"text-danger fw-bold\">Não foi possível efetuar o login</h2>\n <span class=\"text-muted\">Verifique os parâmetros enviados e tente novamente.</span>\n <div><lib-icon iconName=\"p-pare\" iconColor=\"red\" [iconSize]=\"50\" /></div>\n </div>\n }\n @case (\"updated\") {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Sessão atualizada com sucesso</h2>\n @if (timer > 0) { <span class=\"text-muted\">Redirecionando você em {{ timer }} segundos...</span> }\n @else { <span class=\"text-muted\">Se você não foi redirecionado automaticamente, <b class=\"text-primary glb-cursor-pointer\" (click)=\"redirect()\">clique aqui</b></span> }\n <div><lib-icon iconName=\"p-check\" iconColor=\"green\" [iconSize]=\"50\" /></div>\n </div>\n }\n @default {\n <div class=\"text-center\">\n <img src=\"assets/imgs/logo.png\" alt=\"Loading Logo\" class=\"mb-3\" style=\"max-width: 150px;\">\n <h2 class=\"fw-bold\">Carregando Informações...</h2>\n <p class=\"text-muted\">Por favor, aguarde enquanto os dados são carregados.</p>\n </div>\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n }\n }\n\n </div>\n `,\n styles: ``\n})\nexport class LoginOSComponent implements OnInit, OnDestroy {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _parmsLogin!: LoginForm;\n private _loginOSModel?: LoginOSModel;\n \n private _timerSubscription: Subscription | undefined;\n // #endregion PRIVATE\n\n // #region PUBLIC\n public loginStatus: \"loading\" | \"success\" | \"error\" | \"updated\" = \"loading\";\n public timer: number = 3;\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n // #region ==========> INITIALIZATION <==========\n constructor(\n private _authService: AuthService,\n\t\tprivate _projectUtilService: ProjectUtilservice,\n private _route: ActivatedRoute,\n private _router: Router,\n private _storageService: AuthStorageService,\n private _messageService: MessageService\n ) { }\n\n ngOnInit(): void {\n this._storageService.logout();\n\n this.getParams();\n this.logOn();\n }\n // #endregion ==========> INITIALIZATION <==========\n\n\n // #region ==========> API METHODS <==========\n\n // #region LOGIN\n public logOn(): void {\n this.loginStatus = \"loading\";\n\n let status: \"none\" | \"keep\" | \"updated\" = \"none\";\n\n const currDominio = this._storageService.dominio ?? undefined;\n const currUsuario = this._storageService.user ?? undefined;\n\n this._authService.getAuthentication(this._loginOSModel!.dominio).subscribe({\n next: () => {\n\n if (currDominio === this._loginOSModel!.dominio && currUsuario === this._loginOSModel!.usuario) {\n status = \"keep\";\n this.redirect();\n return;\n }\n\n status = (!currDominio || !currUsuario) ? \"none\" : \"updated\";\n\n this._authService.loginOS(this._parmsLogin, this._loginOSModel!.serialV6).subscribe({\n next: () => {\n if (status === \"none\") {\n this.startTimer();\n this.loginStatus = \"success\";\n }\n else {\n this.startTimer();\n this.loginStatus = \"updated\";\n }\n },\n error: (error) => {\n this.loginStatus = \"error\";\n this._projectUtilService.showHTTPErrorOS(error);\n },\n });\n },\n error: (error) => {\n this.loginStatus = \"error\";\n this._projectUtilService.showHTTPErrorOS(error);\n }\n });\n\n }\n // #endregion LOGIN\n\n // #endregion ==========> API METHODS <==========\n\n\n // #region ==========> UTILS <==========\n public redirect(): void {\n let hostname = window.location.host == \"localhost\" ? \"siscandesv6.sispro.com.br\" : window.location.host;\n let baseURL = `https://${hostname}/SisproErpCloud`;\n\n if (!this._loginOSModel!.redirectUrl) this._router.navigateByUrl(\"/home\");\n else window.location.replace(`${baseURL}${this._loginOSModel!.redirectUrl}`);\n }\n\n private startTimer(): void {\n this._timerSubscription = timer(0, 1000)\n .pipe(take(this.timer + 1))\n .subscribe(count => {\n this.timer = this.timer - count;\n if (this.timer === 0) this.redirect();\n });\n }\n\n\n\n private getParams(): void {\n const payloadString = this._route.snapshot.queryParamMap.get('payload');\n\n if (!payloadString) {\n this.loginStatus = \"error\";\n\n this._router.navigate([\"/auth/login\"]).then(e => {\n this._messageService.showAlertDanger('Payload não encontrado na URL.');\n });\n \n console.warn('Payload não encontrado na URL.');\n throw new Error('Payload não encontrado na URL.');\n }\n\n try {\n const payloadJson = JSON.parse(atob(payloadString)) as LoginOSModel;\n \n this._loginOSModel = new LoginOSModel({\n dominio: payloadJson.dominio ?? '',\n usuario: payloadJson.usuario ?? '',\n redirectUrl: payloadJson.redirectUrl ?? '',\n serialV6: payloadJson.serialV6 ?? ''\n });\n\n this._parmsLogin = {\n dominio: payloadJson.dominio,\n usuario: payloadJson.usuario,\n senha: \"\"\n };\n }\n catch (error) {\n this.loginStatus = \"error\";\n\n this._router.navigate([\"/auth/login\"]).then(e => {\n this._messageService.showAlertDanger('Erro ao fazer parse do payload.');\n });\n\n console.error('Erro ao fazer parse do payload:', error);\n throw error;\n }\n }\n // #endregion ==========> UTILS <==========\n\n\n ngOnDestroy(): void {\n this._timerSubscription?.unsubscribe();\n }\n\n}\n","import { CommonModule, NgIf } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Title } from '@angular/platform-browser';\nimport { Router } from '@angular/router';\n\nimport { Subscription, map, take, timer } from 'rxjs';\n\nimport { MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalService } from '@azure/msal-angular';\nimport { AuthenticationResult, LogLevel, PublicClientApplication, RedirectRequest } from '@azure/msal-browser';\n\nimport { ToastrService } from 'ngx-toastr';\n\nimport { FormUtils, InfraModule, MessageService } from 'ngx-sp-infra';\n\nimport { AuthService } from '../../auth.service';\nimport { LibCustomEnvironmentService } from '../../custom/lib-custom-environment.service';\nimport { LibCustomLoginService } from '../../custom/lib-custom-login.service';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\nimport { InfraIn2FaTypeId } from '../../models/infraIn2FaTypeId';\nimport { InfraInAuthTypeId } from '../../models/infraInAuthTypeId';\n\nexport enum LoginProgress {\n\tDomain = 1,\n\tLocal = 2,\n\tAzure = 3\n}\n// ajustes ERICK\nexport enum SituacaoLogin {\n\tLOGIN = 0,\n\tAUTENTICACAO_2_FATORES = 1,\n\tESQUECEU_SENHA = 2\n};\n// ajustes ERICK\n\n@Component( {\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [\n ReactiveFormsModule,\n InfraModule,\n CommonModule,\n\t\tNgIf\n ],\n preserveWhitespaces: true\n} )\nexport class LoginComponent implements OnInit {\n\n\tconstructor(\n\t\t@Inject(MSAL_GUARD_CONFIG) private _msalGuardConfiguration: MsalGuardConfiguration,\n\t\tprivate _msalService: MsalService,\t\t\n\t\tpublic _customLoginService: LibCustomLoginService,\n\t\tprivate _formBuilder: FormBuilder,\n\t\tprivate _projectUtilservice: ProjectUtilservice,\n\t\tprivate _authService: AuthService,\n\t\tprivate _customEnvironmentService: LibCustomEnvironmentService,\n\t\tprivate _authStorageService: AuthStorageService,\n\t\tprivate _title: Title,\n\t\tprivate _router: Router,\n\t\tprivate _toastrService: ToastrService,\n\t\t\n\t\t// Exibição de alerta para caso o payload do login OS não seja infromado corretamente\n\t\tprivate _messageService: MessageService,\n\t) { }\n\n\t// #region ==========> PROPERTIES <==========\n\n\t// #region PRIVATE\n\n\tprivate _situacaoLogin: SituacaoLogin = SituacaoLogin.LOGIN;\n\n\t// #endregion PRIVATE\n\n\t// #region PUBLIC\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários\n\tpublic currentTime: Date = new Date();\n\tpublic year: number = this.currentTime.getFullYear();\n\n\tpublic isLoadingDomain: boolean = false;\n\tpublic isLoadingLogin: boolean = false;\n\tpublic isLoadingAzure: boolean = false;\n\tpublic isLoadingForgottenPassword: boolean = false;\n\tpublic isLoadingSendAuthentication2Fa: boolean = false;\n\tpublic isLoadingGetNewCode: boolean = false;\n\tpublic showParmsAuthentication2Fa = false;\n\tpublic loginProgress: number = LoginProgress.Domain;\n\n\tpublic get situacaoLogin(): SituacaoLogin { return this._situacaoLogin; }\n\tpublic set situacaoLogin(value: SituacaoLogin) {\n\t\tthis._situacaoLogin = value;\n\n\t\tif (value === SituacaoLogin.ESQUECEU_SENHA) this.createFormForgottenPassword();\n\t}\n\n\t// #endregion PUBLIC\n\n\t// #region Timer\n\n\tprivate _subscription: Subscription = new Subscription();\n\tprivate timerDuration: number = 90;\n\tpublic secondsLeft: number = this.timerDuration;\n\n\tprivate countdown$ = timer(0, 1000).pipe(\n\t\ttake(this.timerDuration + 1),\n\n\t\tmap(secondsElapsed => this.timerDuration - secondsElapsed)\n\t);\n\n\t// #endregion Timer\n\n\t// #region ==========> FORM BUILDER <==========\n\n\tpublic formDomain!: FormGroup;\n\tpublic formLogin!: FormGroup;\n\tpublic formAzure!: FormGroup;\n\tpublic formFgtPsw!: FormGroup;\n\tpublic formAuthentication2Fa!: FormGroup;\n\n\t// Propriedade necessário para que a classe static FormUtils possa ser utilizada no Html\n\tpublic get FormUtils(): typeof FormUtils {\n\t\treturn FormUtils;\n\t}\n\n\t// #region FORM DATA\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários (Login)\n\tpublic get dominio(): string {\n\t\treturn this.formDomain.get('dominio')?.value;\n\t}\n\n\tpublic get usuario(): string {\n\t\treturn this.formLogin.get('usuario')?.value;\n\t}\n\n\tpublic get senha(): string {\n\t\treturn this.formLogin.get('senha')?.value;\n\t}\n\n\tpublic get usuarioAzure(): string {\n\t\treturn this.formAzure.get('usuario')?.value;\n\t}\n\n\tpublic get senhaAzure(): string {\n\t\treturn this.formAzure.get('senha')?.value;\n\t}\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários (RequestRecoverPassword)\n\tpublic get dominioFgtPsw(): string {\n\t\treturn this.formFgtPsw.get('dominioFgtPsw')?.value;\n\t}\n\n\tpublic get usuarioFgtPsw(): string {\n\t\treturn this.formFgtPsw.get('usuarioFgtPsw')?.value;\n\t}\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários (Autenticação 2 Fatores)\n\tpublic get code(): string {\n\t\treturn this.formAuthentication2Fa.get('code')?.value;\n\t}\n\n\t// #endregion FORM DATA\n\n\t// #endregion ==========> PROPERTIES <==========\n\n\tasync ngOnInit() {\n\n\t\tthis._title.setTitle(this._customLoginService.loginPageTitle);\n\n\t\tif (this._customLoginService.loginTitle != \"\") {\n\t\t\tdocument.getElementById(\"title\")!.innerHTML = this._customLoginService.loginTitle;\n\t\t}\n\n\t\tif (this._customLoginService.loginSubtitle != \"\") {\n\t\t\tdocument.getElementById(\"subtitle\")!.innerHTML = this._customLoginService.loginSubtitle;\n\t\t}\n\n\t\tthis.loginProgress = LoginProgress.Domain;\n\t\tthis.createFormDomain();\n\t\t\n\t\tif (this._router.url.toLowerCase().startsWith('/auth/login#code=')) {\n\t\t\tthis.loginProgress = LoginProgress.Azure;\n\t\t\tthis.createFormAzure();\n\n\t\t\tawait this.initMsalForLoginOk().then;\n\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// #region FORM VALIDATORS\n\n\t// Método para configuração dos campos de edição do formulário (Login)\n\tprivate createFormDomain(): void {\n\t\t// Dados originais de Login (Domínio)\n\n\t\tif (this._customEnvironmentService.production)\n\t\t{\n\t\t\tthis.formDomain = this._formBuilder.group({\n\t\t\t\tdominio: ['', [Validators.required, Validators.maxLength(50)]],\n\t\t\t});\n\t\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.formDomain = this._formBuilder.group({\n\t\t\t\tdominio: [this._customLoginService.loginDesenvDomain, [Validators.required, Validators.maxLength(50)]],\n\t\t\t});\n\t\t}\n\n\t}\n\n\tprivate createFormLogin(): void {\n\t\t// Dados originais de Login (Usuário e Senha)\n\n\t\tif (this._customEnvironmentService.production)\n\t\t{\n\t\t\tthis.formLogin = this._formBuilder.group({\n\t\t\t\tusuario: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t\t\tsenha: ['', [Validators.required, Validators.maxLength(100)]]\n\t\t\t});\n\t\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.formLogin = this._formBuilder.group({\n\t\t\t\tusuario: [this._customLoginService.loginDesenvUser, [Validators.required, Validators.maxLength(100)]],\n\t\t\t\tsenha: [this._customLoginService.loginDesenvPassword, [Validators.required, Validators.maxLength(100)]]\n\t\t\t});\n\t\t}\n\n\t}\n\n\tprivate createFormAzure(): void {\n\t\t// Dados originais de Login (Azure)\n\n\t\tthis.formAzure = this._formBuilder.group({\n\t\t\tusuario: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t\tsenha: ['', [Validators.required, Validators.maxLength(100)]]\n\t\t});\n\t}\n\n\t// Método para configuração dos campos de edição do formulário (RequestRecoverPassword)\n\tprivate createFormForgottenPassword(): void {\n\n\t\tthis.formFgtPsw = this._formBuilder.group({\n\t\t\tdominioFgtPsw: ['', [Validators.required, Validators.maxLength(50)]],\n\t\t\tusuarioFgtPsw: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t});\n\n\t\tthis.formFgtPsw.get('dominioFgtPsw')?.setValue('');\t\n\t\tthis.formFgtPsw.get('usuarioFgtPsw')?.setValue('');\t\n\t}\n\n\t// Método para configuração dos campos de edição do formulário (Autenticação 2 Fatores)\n\tprivate createFormAuthentication2Fa(): void {\n\n\t\tthis.formAuthentication2Fa = this._formBuilder.group({\n\t\t\tcode: ['', [Validators.required, Validators.maxLength(6)]],\n\t\t});\n\n\t\tthis.formAuthentication2Fa.get('code')?.setValue('');\n\t}\n\n\t// #endregion FORM VALIDATORS\n\n\t// #endregion ==========> FORM BUILDER <==========\n\n\t// #region ==========> SERVICE METHODS <==========\n\n\t// #region Azure\n\n\tprivate async configMsal() {\n\t\tconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\n\t\tconst hostAuthLogin = !this._customEnvironmentService.production ? \"http://localhost:4200/auth/login\" : `${ this._customEnvironmentService.hostName }/SisproErpCloud/${ this._customEnvironmentService.product }/auth/login`;\n\n\t\tthis._msalService.instance = new PublicClientApplication({\n\t\t\tauth: {\n\t\t\t\tclientId: `${ this._authStorageService.azureClientId }`,\n\t\t\t\tauthority: `https://login.microsoftonline.com/${ this._authStorageService.azureTenantId }`,\n\t\t\t\tredirectUri: hostAuthLogin + \"/\",\n\t\t\t\tpostLogoutRedirectUri: hostAuthLogin,\n\t\t\t\tnavigateToLoginRequestUrl: true\n\t\t\t\t},\n\t\t\tcache: {\n\t\t\t\tcacheLocation: \"localStorage\",\n\t\t\t\tstoreAuthStateInCookie: isIE\n\t\t\t},\n\t\t\tsystem: {\n\t\t\t\tloggerOptions: {\n\t\t\t\t\tloggerCallback: (logLevel, message, containsPii) => {\n\t\t\t\t\t\tconsole.log(message);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlogLevel: LogLevel.Error,\n\t\t\t\t\t\tpiiLoggingEnabled: false\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async initMsal() {\n\t\tawait this.configMsal().then(() => {\n\t\t\tthis._msalService.handleRedirectObservable().subscribe({\n\t\t\t\tnext: (result: AuthenticationResult) => {\n\n\t\t\t\t\tif (!this._msalService.instance.getActiveAccount() && this._msalService.instance.getAllAccounts().length > 0) {\n\t\t\t\t\t\tthis._msalService.instance.setActiveAccount(result.account);\n\t\t\t\t\t}\n\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis._toastrService.warning(`Erro na inicialização dos parâmetros de configuração do 'Azure': ${ error }`, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async initMsalForLoginOk() {\n\t\tawait this.configMsal().then(() => {\n\t\t\tthis._msalService.handleRedirectObservable().subscribe({\n\t\t\t\tnext: (result: AuthenticationResult) => {\n\t\t\t\t\t\n\t\t\t\t\tif (!this._msalService.instance.getActiveAccount() && this._msalService.instance.getAllAccounts().length > 0) {\n\t\t\t\t\t\tthis._msalService.instance.setActiveAccount(result.account);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.logOnAzureOk();\n \t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.loginProgress = LoginProgress.Domain;\n\t\t\t\t\tthis.createFormDomain();\n\n\t\t\t\t\tthis._router.navigate([\"/auth/login\"]);\n\t\t\t\n\t\t\t\t\tthis._toastrService.warning(`Erro na inicialização dos parâmetros de configuração do 'Azure': ${ error }`, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// #endregion Azure\n\t\n\t// #region GET\n\n\t// Obtém a Url do Config Erp\n\tpublic geturlErpConfig(): string {\n\t\t// verificar depois \n\t\treturn `${this._customEnvironmentService.hostName}/SisproErpCloud/ConfigErp`;\n\t}\n\n\t/*\n\t* Obtém os parâmetros de método de autenticação\n\t*/\n\tpublic async getAuthentication() {\n\n\t\tif (this.formDomain.valid) {\n\t\t\tthis.isLoadingDomain = true;\n\n\t\t\tthis._authService.getAuthentication(this.dominio).subscribe({\n\t\t\t\tnext: async response => {\n\n\t\t\t\t\tif (response.InfraInAuthTypeId == InfraInAuthTypeId.Local) {\n\t\t\t\t\t\tthis.loginProgress = LoginProgress.Local;\n\t\t\t\t\t\tthis.createFormLogin();\n\t\t\t\t\t} else if (response.InfraInAuthTypeId == InfraInAuthTypeId.Azure) {\n\t\t\t\t\t\tthis.loginProgress = LoginProgress.Azure;\n\t\t\t\t\t\tthis.createFormAzure();\n\n\t\t\t\t\t\tawait this.initMsal();\n\t\t\t\t\t} else if (response.InfraInAuthTypeId == InfraInAuthTypeId.LDAP) {\n\t\t\t\t\t\tthis.loginProgress = LoginProgress.Local;\n\t\t\t\t\t\tthis.createFormLogin();\t\t\t\t\t\t\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.isLoadingDomain = false;\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoadingDomain = false;\n\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formDomain);\n\t\t}\n\t}\n\n\t// #endregion GET\n\n\t// #region POST\n\n\t// Executa o Login\n\tpublic logOn(): void {\n\n\t\tif (this.formLogin.valid) {\n\t\t\tthis.isLoadingLogin = true;\n\n\t\t\tthis._authService.login(this.dominio, this.usuario, this.senha).subscribe({\n\t\t\t\tnext: (response) => {\n\t\t\t\t\tthis.isLoadingLogin = false;\n\t\t\t\t\t\n\t\t\t\t\tif (response.FeedbackMessage != \"\") {\n\t\t\t\t\t\tthis._toastrService.warning( response.FeedbackMessage, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t//Incialização de Senha\n\t\t\t\t\tif (response.InitializePassword) {\n\t\t\t\t\t\tlet param: string = btoa(`true$${ this.dominio }$${ this.usuario }$${response.StatusSenha}`);\n\t\t\t\t\t\tthis._router.navigate([`auth/login/novaSenha/${ param }`]);\n\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n\t\t\t\t\t\tthis.createFormAuthentication2Fa();\n\t\n\t\t\t\t\t\tthis._subscription = this.countdown$.subscribe(secondsLeft => {\n\t\t\t\t\t\t\tthis.secondsLeft = secondsLeft;\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis.showParmsAuthentication2Fa = true;\n\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoadingLogin = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t});\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formLogin);\n\t\t}\n\t\t\t\n\t}\n\n\t// Executa o Login (Admin)\n\tpublic logOnAdmin(): void {\n\n\t\tif (this.formAzure.valid) {\n\n\t\t\tif (this.usuarioAzure.toUpperCase() != \"ADMIN\") {\n\t\t\t\t\tthis._toastrService.warning( \"Esta opção é somente permitida para o usuário 'Admin'.\", '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t} else {\n\t\t\t\tconst infraInAuthTypeId: number = this._authStorageService.infraInAuthTypeId;\n\t\t\t\tconst infraIn2FaTypeId: number | null | undefined = this._authStorageService.infraIn2FaTypeId;\n\t\t\t\tconst is2FaEnabled: boolean = this._authStorageService.is2FaEnabled;\n\t\n\t\t\t\tthis._authStorageService.infraInAuthTypeId = InfraInAuthTypeId.Local;\n\t\t\t\tthis._authStorageService.infraIn2FaTypeId = null;\n\t\t\t\tthis._authStorageService.is2FaEnabled = false;\n\t\t\t\t\n\t\t\t\tthis.isLoadingAzure = true;\n\n\t\t\t\tthis._authService.login(this.dominio, this.usuarioAzure, this.senhaAzure).subscribe({\n\t\t\t\t\tnext: (response) => {\n\t\t\t\t\t\tthis.isLoadingAzure = false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (response.FeedbackMessage != \"\") {\n\t\t\t\t\t\t\tthis._toastrService.warning( response.FeedbackMessage, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\t//Incialização de Senha\n\t\t\t\t\t\tif (response.InitializePassword) {\n\t\t\t\t\t\t\tlet param: string = btoa(`true$${ this.dominio }$${ this.usuarioAzure }$${response.StatusSenha}`);\n\t\t\t\t\t\t\tthis._router.navigate([`auth/login/novaSenha/${ param }`]);\n\t\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Local && this._authStorageService.infraIn2FaTypeId != null && this._authStorageService.infraIn2FaTypeId == InfraIn2FaTypeId.Email && this._authStorageService.is2FaEnabled) {\n\t\t\t\t\t\t\tthis.createFormAuthentication2Fa();\n\t\t\n\t\t\t\t\t\t\tthis._subscription = this.countdown$.subscribe(secondsLeft => {\n\t\t\t\t\t\t\t\tthis.secondsLeft = secondsLeft;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tthis.showParmsAuthentication2Fa = true;\n\t\t\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\terror: (error) => {\n\t\t\t\t\t\tthis.isLoadingAzure = false;\n\t\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\n\t\t\t\tthis._authStorageService.infraInAuthTypeId = infraInAuthTypeId;\n\t\t\t\tthis._authStorageService.infraIn2FaTypeId = infraIn2FaTypeId;\n\t\t\t\tthis._authStorageService.is2FaEnabled = is2FaEnabled;\n\t\t\t}\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formAzure);\n\t\t}\t\n\t\t\n\t}\n\n\t// Executa o Login (Azure)\n\tpublic logOnAzure(): void {\n\n\t\tif (this._msalGuardConfiguration.authRequest){\n\t\t\tthis._msalService.loginRedirect({...this._msalGuardConfiguration.authRequest} as RedirectRequest);\n\t\t} else {\n\t\t\tthis._msalService.loginRedirect();\n\t\t}\n\t\t\n\t}\n\n\t// Executa o Login após o retorno ok do Azure\n\tpublic async logOnAzureOk() {\n\t\tlet username = this._msalService.instance.getActiveAccount()?.idTokenClaims?.preferred_username;\n\n\t\tthis._authService.loginAzure(this._authStorageService.dominio, username ?? \"\").subscribe({\n\t\t\tnext: (response) => {\n\n\t\t\t\tif (response.FeedbackMessage != \"\") {\n\t\t\t\t\tthis._toastrService.warning( response.FeedbackMessage, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n\t\t\t\t}\n\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.loginProgress = LoginProgress.Domain;\n\t\t\t\tthis.createFormDomain();\n\n\t\t\t\tthis._router.navigate([\"/auth/login\"]);\n\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Envia requisição para esquecer senha\n\tpublic sendForgottenPassword(): void {\n\n\t\tif (this.formFgtPsw.valid) {\n\t\t\tthis.isLoadingForgottenPassword = true;\n\n\t\t\tthis._authService.getAuthentication(this.dominio).subscribe({\n\t\t\t\tnext: response => {\n\t\t\t\t\tthis.forgottenPassword();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoadingForgottenPassword = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formFgtPsw);\n\t\t}\n\t}\n\n\t// Requisição para esquecer senha\n\tpublic forgottenPassword(): void {\n\n\t\tthis._authService.forgottenPassword(this.formFgtPsw.value).subscribe({\n\t\t\tnext: () => {\n\t\t\t\tthis.isLoadingForgottenPassword = false;\n\n\t\t\t\tlet param: string = btoa(`false$${ this.dominioFgtPsw }$${ this.usuarioFgtPsw }$${3}`);\n\t\t\t\tthis._router.navigate([`auth/login/novaSenha/${ param }`]).then(() => {\n\t\t\t\t\tthis._toastrService.success(\"Verifique no seu e-mail o código de validação.\");\n\t\t\t\t});\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.isLoadingForgottenPassword = false;\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Envia requisição para validar código 2 fatores\n\tpublic sendCode(): void {\n\n\t\tif (this.formAuthentication2Fa.valid) {\n\t\t\tthis.isLoadingSendAuthentication2Fa = true;\n\n\t\t\tthis.validateCode();\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.formAuthentication2Fa);\n\t\t}\n\t\t\n\t}\n\n\t// Validação do código 2 fatores\n\tpublic validateCode(): void {\n\n\t\tthis._authService.validateAuthentication2Fa(this.code).subscribe({\n\t\t\tnext: (response) => {\n\t\t\t\tthis._subscription.unsubscribe();\n\n\t\t\t\tthis.isLoadingSendAuthentication2Fa = false;\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.isLoadingSendAuthentication2Fa = false;\n\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Envia requisição para validar código 2 fatores\n\tpublic getNewCode(): void {\n\t\tthis.isLoadingGetNewCode = true;\n\n\t\tthis._authService.getAuthentication(this._authStorageService.dominio).subscribe({\n\t\t\tnext: response => {\n\t\t\t\tthis._subscription = this.countdown$.subscribe(secondsLeft => {\n\t\t\t\t\tthis.secondsLeft = secondsLeft;\n\t\t\t\t});\n\n\t\t\t\tthis.GetNewCode2Fa();\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// Validação do código 2 fatores\n\tpublic GetNewCode2Fa(): void {\n\n\t\tthis._authService.GetNewCode2Fa().subscribe({\n\t\t\tnext: (response) => {\n\t\t\t\tthis.isLoadingGetNewCode = false;\n\n\t\t\t\tthis._toastrService.success(\"Enviamos um novo código para o endereço de e-mail vinculado ao seu usuário. Verifique o lixo eletrônico (SPAM) da sua caixa de entrada, caso não tenha encontrado nossa mensagem.\");\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\tthis.isLoadingGetNewCode = false;\n\t\t\t\t\n\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t},\n\t\t});\n\n\t}\n\n\t// #endregion POST\n\n\t// #region UTILIDADES\n\n\t// Retorno para a tela de login\n\tpublic voltar(): void {\n\t\tthis.loginProgress = LoginProgress.Domain;\n\t\tthis.createFormDomain();\n\n\t\tthis._subscription.unsubscribe();\n\t\tthis.showParmsAuthentication2Fa = false;\n\n\t\tthis._authStorageService.logout();\n\n\t\tthis._router.navigate([\"/auth/login\"]);\n\t}\t\n\n\t// Retorno para a tela de login\n\tpublic returnDomain(): void {\n\t\tthis.loginProgress = LoginProgress.Domain;\n\t\tthis.createFormDomain();\n\n\t\tthis._authStorageService.logout();\n\n\t\tthis._router.navigate([\"/auth/login\"]);\n\t}\n\n\tprivate showIntegracaoAlert(): void {\n\t\tconst warningMessage = this._authService.consumePendingWarning();\n\n\t\tif (warningMessage) {\n\t\tthis._messageService.showAlertWarning(warningMessage);\n\t\t}\n\t}\n\n\t// #endregion UTILIDADES\n\n\t// #endregion ==========> SERVICE METHODS <==========\n\n}\n","<div id=\"login\" class=\"container-fluid\">\n\t<div class=\"row\">\n\t\t<!-- Conteúdo da DIV do background -->\n\t\t<div class=\"col-md-6 px-0\">\n\t\t\t<div class=\"background\" style=\"background-image: linear-gradient(to bottom, rgba(10, 44, 81, 0.9), rgba(10, 44, 81, 0.9)), url({{_customLoginService.loginBackground}})\">\n\t\t\t\t<div class=\"text-position texto-apresentacao ps-5\">\n\t\t\t\t\t<h1 class=\"title\" id=\"title\"></h1>\n\t\t\t\t\t<p class=\"subtitle\" id=\"subtitle\"></p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- Conteúdo da DIV de Login -->\n\t\t<div class=\"col-md-6 px-0\">\n\n\t\t\t<div class=\"div-size\">\n\t\t\t\t<div class=\"logotipo\">\n\t\t\t\t\t<img style=\"height: 95px;\" src=\"{{ this._customLoginService.loginLogotipo }}\" alt=\"{{ this._customLoginService.loginAltLogotipo }}\" />\n\t\t\t\t</div>\n\n\t\t\t\t@if (situacaoLogin !== 2) {\n\t\t\t\t\t@if (!showParmsAuthentication2Fa) {\n\t\t\t\t\t\t@switch (loginProgress) {\n\t\t\t\t\t\t\t@case(1) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formDomain\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div class=\"col mb-3\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" placeholder=\"Domínio\" formControlName=\"dominio\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formDomain.get('dominio'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formDomain.get('dominio')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingDomain\" loadingText=\"Acessando...\" class=\"btn btn-primary\" [disabled]=\"isLoadingDomain\" (click)=\"getAuthentication()\">\n\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t@case(2) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formLogin\" class=\"form-position\">\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usuário\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formLogin.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formLogin.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\tVoltar\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingLogin\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingLogin\" (click)=\"logOn()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 2\" class=\"fw-bold text-decoration-none text-secondary\"\n\t\t\t\t\t\t\t\t\t\t\ttooltip=\"Não se preocupe, clique aqui e informe o domínio e o usuário desejados que enviaremos um e-mail com maiores informações.\">\n\t\t\t\t\t\t\t\t\t\t\tEsqueceu sua senha? </a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t@case(3) {\n\t\t\t\t\t\t\t\t<form [formGroup]=\"formAzure\" class=\"form-position formAzure\">\n\t\t\t\t\t\t\t\t\t<div class=\"w-100 mb-3\">\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" loadingText=\"Acessando...\" class=\"btn btn-primary p-2 mb-3 w-100 d-flex align-items-center justify-content-center gap-2\" (click)=\"logOnAzure()\">\n\t\t\t\t\t\t\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" heigth=\"14\" width=\"14\" viewBox=\"0 0 23 23\"><path fill=\"transparent\" d=\"M0 0h23v23H0z\"/><path fill=\"#f35325\" d=\"M1 1h10v10H1z\"/><path fill=\"#81bc06\" d=\"M12 1h10v10H12z\"/><path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\"/><path fill=\"#ffba08\" d=\"M12 12h10v10H12z\"/></svg>\n\t\t\t\t\t\t\t\t\t\t\tMicrosoft\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t<div class=\"w-100 text-center text-secondary\">\n\t\t\t\t\t\t\t\t\t\t\t<span id=\"ou-text\"> ou </span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control px-3\" formControlName=\"usuario\" placeholder=\"Usuário\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('usuario'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('usuario')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\n\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-lock-text\"><lib-icon iconName=\"chave\" /></span>\n\t\t\t\t\t\t\t\t\t\t\t<input type=\"password\" class=\"form-control px-3\" formControlName=\"senha\" placeholder=\"Senha\"\n\t\t\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAzure.get('senha'))\">\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAzure.get('senha')\" />\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"row\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button (click)=\"returnDomain()\" type=\"button\" class=\"btn btn-outline-secondary w-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<lib-icon iconName=\"seta-esquerda\" /> VOLTAR\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingAzure\" loadingText=\"Acessando...\" class=\"btn btn-primary btn-heigth-48 w-100\" [disabled]=\"isLoadingAzure\" (click)=\"logOnAdmin()\">\n\t\t\t\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@else {\n\t\t\t\t\t\t<form [formGroup]=\"formAuthentication2Fa\" class=\"form-position\">\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group mb-3\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><img src=\"assets/icons/lock.svg\" alt=\"lock-icon\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" formControlName=\"code\" id=\"code\" placeholder=\"Código de 2 fatores\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formAuthentication2Fa.get('code'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formAuthentication2Fa.get('code')\" />\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center gap-3 mb-3\">\n\t\t\t\t\t\t\t\t<button (click)=\"voltar()\" type=\"button\" class=\"btn btn-outline-secondary col\"> <lib-icon iconName=\"seta-esquerda\" /> VOLTAR </button>\n\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingSendAuthentication2Fa\" [disabled]=\"isLoadingSendAuthentication2Fa\" (click)=\"sendCode()\" type=\"button\" class=\"btn btn-primary col\">\n\t\t\t\t\t\t\t\t\tACESSAR <lib-icon iconName=\"login\" />\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center\">\n\t\t\t\t\t\t\t\t@if (secondsLeft === 0) {\n\t\t\t\t\t\t\t\t\t<button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"getNewCode()\" type=\"button\" class=\"btn btn-outline-primary col\">\n\t\t\t\t\t\t\t\t\t\tEnviar novo código <lib-icon iconName=\"aviao-papel\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t@else {\n\t\t\t\t\t\t\t\t\t<span class=\"fw-bold text-secondary\">{{ secondsLeft }} {{ secondsLeft == 1 ? 'segundo' : 'segundos' }} para obter novo código</span>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</form>\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@else {\n\t\t\t\t\t<form [formGroup]=\"formFgtPsw\" class=\"form-position\">\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"predio\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"dominioFgtPssInput\" placeholder=\"Domínio\" formControlName=\"dominioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('dominioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('dominioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"row mb-3\">\n\t\t\t\t\t\t\t<div class=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"input-group input-group\">\n\t\t\t\t\t\t\t\t\t<span class=\"input-group-text\" id=\"input-at-sign-text\"><lib-icon iconName=\"usuario-quadro\" /></span>\n\t\t\t\t\t\t\t\t\t<input type=\"text\" class=\"form-control\" id=\"usuarioFgtPssInput\" placeholder=\"Usuário\" formControlName=\"usuarioFgtPsw\"\n\t\t\t\t\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(formFgtPsw.get('usuarioFgtPsw'))\">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<app-field-error-message [control]=\"formFgtPsw.get('usuarioFgtPsw')\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t\t\t@if(formFgtPsw.get('usuarioFgtPsw')?.value === 'admin' || formFgtPsw.get('usuarioFgtPsw')?.value === 'CRMadmin'){\n <p class=\"texto-admin\">Não é possível alterar a senha do usuário 'admin'</p>\n }@else{\n <button [libLoading]=\"isLoadingForgottenPassword\" loadingText=\"Enviando...\" class=\"btn btn-primary btn-heigth-48\" [disabled]=\"isLoadingForgottenPassword\" (click)=\"sendForgottenPassword()\">\n Enviar e-mail <lib-icon iconName=\"aviao-papel\" />\n </button>\n }\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t\t<a type=\"button\" (click)=\"situacaoLogin = 0\" class=\"fw-bold text-decoration-none text-secondary\" tooltip=\"Retornar para o login.\"> <lib-icon iconName=\"seta-esquerda\" /> Voltar para o login </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t<div class=\"footer-position\">\n\t\t\t\t\t<footer>\n\t\t\t\t\t\t<div class=\"d-flex flex-row align-items-center justify-content-center gap-2\">\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/JmGeNlJdw/1/poli%CC%81tica-de-privacidade/pt_BR?s=1685731510066\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POLÍTICA DE PRIVACIDADE </a>\n\t\t\t\t\t\t\t<span> | </span>\n\t\t\t\t\t\t\t<a href=\"https://dpo.privacytools.com.br/policy-view/Rork35NN2/2/poli%CC%81tica-de-cookies/pt_BR?s=1685731551976\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> POLÍTICA DE COOKIES </a>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<p class=\"text-secondary\">\n\t\t\t\t\t\t\tDesenvolvido por <a href=\"https://www.sispro.com.br/\" target=\"_blank\" class=\"text-primary text-decoration-none fw-bold\"> SISPRO </a> © {{ year }} Todos os direitos reservados\n\t\t\t\t\t\t</p>\n\n\t\t\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t\t\t<a href=\"https://pt-br.facebook.com/SisproERP/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"facebook\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://www.instagram.com/accounts/login/?next=/sispro_software/\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"instagram\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t\t<a href=\"https://br.linkedin.com/company/sispro\" target=\"_blank\"> <lib-icon class=\"text-primary\" iconName=\"linkedin\" iconSize=\"medium-small\"/> </a>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class=\"text-center\">\n\t\t\t\t\t\t\t<a class=\"text-primary fw-bold text-decoration-none glb-font-size-12\" [href]=\"geturlErpConfig()\"> Configurar ERP </a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</footer>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { InfraModule } from 'ngx-sp-infra';\n\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\n\n@Component({\n selector: 'app-secondary-dropdown',\n templateUrl: './secondary-dropdown.component.html',\n styleUrls: ['./secondary-dropdown.component.scss'],\n imports: [\n InfraModule,\n CommonModule\n ]\n})\nexport class SecondaryDropdownComponent implements OnInit {\n\n @Input() public modulo: any = { id: null, icon: null, label: null, URL: null, secondary_level: null }\n ;\n @Output() public backPrimaryDropdown = new EventEmitter<boolean>();\n\n constructor(private _projectUtilservice: ProjectUtilservice) { }\n\n ngOnInit(): void {\n }\n\n public backToPrimary() {\n this.backPrimaryDropdown.emit(true);\n }\n\n public redirectToModulo(urlModulo: string): void {\n let url = `${ this._projectUtilservice.getHostName() }/SisproErpCloud`;\n url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo\n\n window.open(url, '_blank');\n }\n\n}\n","<div class=\"d-flex flex-row\">\n <button class=\"chevron d-flex m-0 p-0 align-items-start\" (click)=\"backToPrimary()\"> \n <lib-icon iconName=\"seta-esquerda\" iconSize=\"small\"/>\n </button>\n\n <div class=\"d-flex flex-column flex-row\">\n <li class=\"ms-1 mb-3\" *ngIf=\"modulo != null\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n <span>{{ modulo.label }}</span>\n </li>\n <div *ngIf=\"modulo && modulo.secondary_level != null\">\n <li *ngFor=\"let moduloItem of modulo.secondary_level;\" (click)=\"redirectToModulo(moduloItem.URL)\">\n <a class=\"dropdown-item mb-2 ms-2\">\n <lib-icon class=\"me-2\" [iconName]=\"moduloItem.icon\"></lib-icon>\n {{ moduloItem.label }}\n </a>\n <li>\n </div>\n </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { InfraModule } from 'ngx-sp-infra';\n\nimport { LibCustomMenuService } from '../../../../custom/lib-custom-menu.service';\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { SecondaryDropdownComponent } from '../secondary-dropdown/secondary-dropdown.component';\nimport { MenuServicesService } from '../../menu-services.service';\nimport { IProjeto } from '../../model/iprojeto';\n\n@Component({\n selector: 'app-primary-dropdown',\n templateUrl: './primary-dropdown.component.html',\n styleUrls: ['./primary-dropdown.component.scss'],\n imports: [\n SecondaryDropdownComponent,\n CommonModule,\n InfraModule\n ]\n})\nexport class PrimaryDropdownComponent implements OnInit {\n\n public selectDataState: boolean = false;\n public modulo: any;\n\n @Input() buttonWasClicked!: Observable<boolean>;\n\n public primaryDropdown: Array<any> = [\n ]\n\n constructor(private _customMenuService: LibCustomMenuService,\n private _projectUtilservice: ProjectUtilservice,\n private _menuServices: MenuServicesService\n ) { }\n\n ngOnInit(): void {\n this.buttonWasClicked.subscribe(() => { this.selectDataState = true });\n \n // Resolver colisão de eventos\n if (this._customMenuService.menuDynamic || this._customMenuService.menuDynamicCustom) {\n\n if (!this._customMenuService.menuConfig) {\n setTimeout(() => {\n this.getProjects();\n }, 2000);\n } else {\n this.getProjects();\n }\n \n } else {\n this.getProjects();\n }\n \n }\n\n public openDropdown(modulo: any, desiredDropdown: TemplateRef<any>) {\n this.modulo = modulo;\n \n if (desiredDropdown == null) {\n this.selectDataState = true;\n } else {\n this.selectDataState = false;\n }\n }\n\n public onClickedOutside(e: Event, ref: HTMLDivElement) {\n if (this.selectDataState = false) {\n this.selectDataState = true;\n }\n }\n\n public backToPrimary(data: boolean) {\n this.selectDataState = true;\n }\n\n public redirectToPrePortal(): void {\n const url: string = `${ this._projectUtilservice.getHostName() }/SisproErpCloud/PrePortal`;\n\n window.open(url, '_blank');\n }\n\n public redirectToModulo(urlModulo: string): void {\n let url = `${ this._projectUtilservice.getHostName() }/SisproErpCloud`;\n url += urlModulo.startsWith('/') ? urlModulo : '/' + urlModulo\n\n window.open(url, '_blank');\n }\n\n /** Inicializa as opções do menu dropdown.\n * @returns As opções do dropdown inicializadas.\n */\n public getProjects(): void {\n this._menuServices.getProjects().subscribe({\n next: response => {\n this.primaryDropdown = this.initializeMenuDropdown(response.Dropdown)\n }, error: error => {\n this.primaryDropdown = [];\n }\n })\n\n }\n\n public initializeMenuDropdown(projects: IProjeto[]): Array<any> {\n\n let primaryDropdownList: Array<any> = [];\n\n for (let project of projects) {\n\n if (project.Produtos.length == 0)\n {\n primaryDropdownList.push({ id: project.IdUnico, icon: project.Icon, label: project.Nome, URL: project.UrlHome, secondary_level: null });\n } else {\n let productList: Array<any> = [];\n let id = project.IdUnico * 100;\n\n for (let product of project.Produtos) {\n id++;\n\n productList.push({ id: id, icon: product.Icon, label: product.Nome, URL: product.UrlHome });\n } \n \n primaryDropdownList.push({ id: project.IdUnico, icon: project.Icon, label: project.Nome, URL: '', secondary_level: productList });\n }\n \n } \n\n /*\n { id: 1, icon: 'assets/icons/sispro/corporativo.svg', label: 'Corporativo', URL: 'Corporativo', secondary_level: null },\n { id: 2, icon: 'assets/icons/sispro/contratos.svg', label: 'Contratos', URL: 'Contratos', secondary_level: null },\n { id: 3, icon: 'assets/icons/sispro/fiscal.svg', label: 'Fiscal', URL: 'Fiscal', secondary_level: null },\n { id: 4, icon: 'assets/icons/sispro/contabilidade.svg', label: 'Contabilidade', URL: 'Contabilidade', secondary_level: null },\n { id: 5, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Recursos Humanos', URL: '',\n secondary_level: [\n { id: 201, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Folha de Pagamento', URL: 'Folha' },\n { id: 202, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'eSocial', URL: 'eSocial' },\n { id: 203, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Workflow', URL: 'Workflow' },\n { id: 204, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'PortalRh', URL: 'PortalRh' },\n { id: 205, icon: 'assets/icons/sispro/recursos-humanos.svg', label: 'Rh Básicos', URL: 'RhBase' }\n ]\n },\n { id: 6, icon: 'assets/icons/sispro/financeiro.svg', label: 'Financeiro', URL: 'Financeiro', secondary_level: null },\n { id: 7, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Suprimentos', URL: '',\n secondary_level: [\n { id: 701, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Compras', URL: 'Compras' },\n { id: 702, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Recebimento', URL: 'Recebimento' },\n { id: 703, icon: 'assets/icons/sispro/suprimentos.svg', label: 'Estoque', URL: 'Estoque' }\n ]\n },\n { id: 8, icon: 'assets/icons/sispro/vendas.svg', label: 'Negociação', URL: 'Vendas', secondary_level: null },\n { id: 9, icon: 'assets/icons/sispro/patrimonio.svg', label: 'Patrimônio', URL: 'Patrimonio', secondary_level: null }\n */\n\n return primaryDropdownList;\n }\n\n}\n","<div class=\"p-2\">\n <div *ngIf=\"selectDataState; else secondary_dropdown\" class=\"mb-2 w-100\">\n <li *ngFor=\"let modulo of primaryDropdown\" (click)=\"(modulo.secondary_level != null ? openDropdown(modulo, secondary_dropdown) : redirectToModulo(modulo.URL))\">\n <a class=\"dropdown-item mb-2\">\n <lib-icon class=\"me-2\" [iconName]=\"modulo.icon\"></lib-icon>\n {{ modulo.label }}\n </a>\n </li>\n <hr class=\"dropdown-divider\">\n <li>\n <a class=\"dropdown-item link-portal mt-2\" (click)=\"redirectToPrePortal()\" target=\"_blank\">Portal Sispro</a>\n </li>\n </div>\n\n <ng-template #secondary_dropdown>\n <div #secondary_ref (clickOutside)=\"onClickedOutside($event, secondary_ref)\">\n <app-secondary-dropdown [modulo]=\"this.modulo\" (backPrimaryDropdown)=\"backToPrimary($event)\"></app-secondary-dropdown>\n </div>\n </ng-template>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { Router, RouterLink } from '@angular/router';\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { IMenuItemStructure } from '../../model/imenu-item-structure.model';\n\n@Component({\n selector: 'app-dynamic-menu',\n templateUrl: './dynamic-menu.component.html',\n styleUrls: ['./dynamic-menu.component.scss'],\n imports: [\n // AuthRoutingModule,\n CommonModule,\n RouterLink\n ]\n})\nexport class DynamicMenuComponent implements OnInit {\n\n @Output() selectTemplate: EventEmitter<any> = new EventEmitter;\n\n @Input() submenuRef!: HTMLDivElement;\n\n @Input() recebeParam!: Function;\n\n @Input() titleSubmenu = \"\";\n\n @Input() submenuList?: IMenuItemStructure[] = [];\n\n @Input() hostServerOutSystems = \"\";\n\n menuList: IMenuItemStructure[] = [];\n\n menuStatic: IMenuItemStructure[] = [];\n\n selectedMenuItem: number[] = [];\n\n selectedItem: number = -1;\n\n @ContentChild(TemplateRef) desiredContent?: TemplateRef<any>;\n\n constructor(public router: Router,\n private _projectUtilService: ProjectUtilservice\n ) { }\n\n ngOnInit(): void {\n }\n\n onClickedOutside(e: Event, ref: HTMLDivElement) {\n ref.classList.remove(\"opened-sub\");\n this.submenuList = [];\n this.indicateSelectedMenuItem();\n }\n\n indicateSelectedMenuItem() {\n if (this.selectedMenuItem.length) {\n this.selectedItem = this.selectedMenuItem[0];\n }\n }\n\n changeStar(ref: HTMLButtonElement, id: IMenuItemStructure | undefined) {\n ref.classList.toggle(\"star\");\n ref.classList.toggle(\"yellow-star\");\n }\n\n public getExternalUrl(url: string) {\n return `${ this.hostServerOutSystems == \"\" ? this._projectUtilService.getHostName() : this.hostServerOutSystems }/${ url }`;\n }\n\n}\n","<div #submenu class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">{{ titleSubmenu }}</h1>\n <div class=\"itens-list\">\n <ul style=\"width: 100%\">\n\n <li *ngFor=\"let itemList of submenuList; let i = index\" [id]=\"itemList!.id\"\n class=\"d-flex justify-content-between align-items-center\"\n [class]=\"i == 0 ? 'mt-1' : ''\">\n\n <a *ngIf=\"!itemList.isExternal; else externalMenu\"\n [routerLink]=\"itemList!.route != null ? ['/' + itemList!.route] : null\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(itemList.route)\"\n target=\"_blank\"\n (click)=\"recebeParam($event, submenuRef)\">\n <span>{{ itemList!.label }}</span>\n </a>\n </ng-template>\n\n <!-- <button class=\"star favoritos\" #star (click)=\"changeStar(star, itemList)\"></button> -->\n </li>\n </ul>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-notif-submenu',\n templateUrl: './notif-submenu.component.html',\n styleUrls: ['./notif-submenu.component.scss'],\n imports: []\n})\nexport class NotifSubmenuComponent implements OnInit {\n\nconstructor() { }\n\nngOnInit(): void {\n \n}\n}\n","<div class=\"header-submenu\">\n <h1 class=\"titulo pb-3 pt-4\">Notificações</h1>\n</div>\n<div class=\"body-notif\">\n <div class=\"new-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Novas (2)</p><p>Marcar todas como Lidas</p>\n </div>\n <div class=\"scroll\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"read-notif\">\n <div class=\"session-header p-2\">\n <p class=\"session-h-item\">Lidas</p>\n </div>\n <div class=\"scroll-second\">\n <div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has\n Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n <div class=\"session mb-3 pb-3\">\n <div class=\"session-start mt-3 ms-3\">\n <img src=\"assets/icons/file-text.svg\" alt=\"\"><p>Contratos</p>\n </div>\n <div class=\"m-4\">\n <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has </p>\n </div>\n <div class=\"item-end ms-4 mx-4\">\n <button>Marcar como lida</button>\n <p>2h atrás</p>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\n\nimport { NgxPaginationModule } from 'ngx-pagination';\n\nimport { InfraEstabelecimentoFavoritoDefault, InfraModule, MessageService } from 'ngx-sp-infra';\nimport { AuthStorageService } from '../../../../storage/auth-storage.service';\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { LibCustomMenuService } from '../../../../custom/lib-custom-menu.service';\nimport { MenuServicesService } from '../../menu-services.service';\n\n@Component({\n selector: 'selecao-estabelecimentos-modal',\n templateUrl: './selecao-estabelecimentos-modal.component.html',\n styleUrls: ['./selecao-estabelecimentos-modal.component.scss'],\n imports: [\n NgxPaginationModule,\n InfraModule,\n CommonModule\n ]\n})\nexport class SelecaoEstabelecimentosModalComponent implements OnInit {\n constructor(\n private _authStorageService: AuthStorageService,\n private _customMenuService: LibCustomMenuService,\n private _menuServicesService: MenuServicesService,\n private _messageService: MessageService,\n private _projectUtilService: ProjectUtilservice\n ) { }\n\n ngOnInit(): void {\n this.getEstabelecimentos(\"\");\n }\n\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n // [...]\n // #endregion PRIVATE\n\n // #region PUBLIC\n @Output() public onClose = new EventEmitter<any>();\n @Output() public onSelected = new EventEmitter<any>();\n\n public $estabelecimentosList!: InfraEstabelecimentoFavoritoDefault[];\n\n public page: number = 1;\n public itemsPerPage: number = 10;\n\n public response_messages = {\n 'emptyMessage': 'Consulta não retornou registros...',\n 'totalMessage': 'Linhas encontradas.'\n };\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n // #region ==========> FORM BUILDER <==========\n\n // #region DATA\n // [...]\n // #endregion DATA\n\n // #region VALIDATORS\n // [...]\n // #endregion VALIDATORS\n\n // #endregion ==========> FORM BUILDER <==========\n\n\n // #region ==========> SERVICES <==========\n\n // #region PREPARATION\n\n public refreshList(pesquisa: string): void {\n this.getEstabelecimentos(pesquisa);\n }\n\n private getEstabelecimentos(pesquisa: string = \"\"): void {\n this._menuServicesService.getEstabelecimentosModalList(this._authStorageService.infraUsuarioId, pesquisa).subscribe({\n next: response => {\n this.$estabelecimentosList = response.InfraEstabelecimentos;\n\n this.resetPagination(this.$estabelecimentosList);\n\n if (response.InfraEstabelecimentos.length == 0) {\n this._messageService.showAlertDanger(this.response_messages.emptyMessage);\n }\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n\n this.$estabelecimentosList = [];\n }\n })\n }\n\n // #endregion PREPARATION\n\n // #region GET\n // [...]\n // #endregion GET\n\n // #region CREATE OR UPDATE\n\n /**\n * Atualiza o estado do Estabelecimento, informando se ele é Padrão ou não.\n * @param estabID ID do Estabelecimento a ser alterado\n * @param isDefault Informa se ele é Padrão ou não\n */\n public defineDefaultEstabelecimento(estabID: string, isDefault: boolean): void {\n this._menuServicesService.defineDefaultEstabelecimento(estabID, this._authStorageService.infraUsuarioId, isDefault).subscribe({\n next: () => {\n this.getEstabelecimentos(\"\");\n\n isDefault\n ? this._messageService.showAlertSuccess('Novo estabelecimento definido como padrão para o usuário')\n : this._messageService.showAlertSuccess('Estabelecimento padrão removido para o usuário');\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n }\n\n // #endregion CREATE OR UPDATE\n\n // #region DELETE\n // [...]\n // #endregion DELETE\n\n // #endregion ==========> SERVICES <==========\n\n\n // #region ==========> UTILITIES <==========\n\n /**\n * Envia um sinal ao componente pai com o ID e Nome do Estabelecimento selecionado no Modal\n * @param estabID ID do Estabelecimento que será enviado\n * @param estabNome Nome do Estabelecimento que será enviado\n */\n public selectEstabelecimento(estabID: string, estabNome: string): void {\n\n // * Método customizado para emissão de evento ao trocar de estabelecimento\n this._customMenuService.menuEmitEstabelecimentoEvent();\n\n this.onSelected.emit(estabID + \" - \" + estabNome);\n }\n\n\n /**\n * Realiza uma nova pesquisa no banco para atualizar a lista a cada 3 caracteres digitados\n * @param pesquisa Texto do input de pesquisa\n */\n public updateSearch(pesquisa: string): void {\n pesquisa.length % 3 == 0\n ? this.getEstabelecimentos(pesquisa)\n : null;\n }\n\n /**\n * Verifica se a string passada é alfanumérica.\n * @param str String que será verificada\n * @returns TRUE se for alfanumérica, caso contrário FALSE.\n */\n private isAlphanumeric(str: string) {\n var code, i, len;\n\n for (i = 0, len = str.length; i < len; i++) {\n code = str.charCodeAt(i);\n if (!(code > 47 && code < 58) && // (0-9)\n !(code > 64 && code < 91) && // (A-Z)\n !(code > 96 && code < 123)) { // (a-z)\n\n return false;\n }\n }\n return true;\n };\n\n /** Modifica a quantidade de itens a ser mostrada na lista.\n * @param event parâmetro de evento que irá selecionar a nova quantidade.\n */\n public onSelectChange(event: any) {\n this.itemsPerPage = parseInt(event.target.value, 10);\n this.page = 1;\n }\n\n /** Reseta a paginação da listagem.\n */\n public resetPagination(list: any[]): void {\n // Cálculo para encontrar o valor inicial do index da página atual\n const startIndex = (this.page - 1) * this.itemsPerPage;\n\n // Condição para resetar o valor da paginação\n if (list.length <= startIndex) {\n this.page = 1;\n }\n }\n // #endregion ==========> UTILITIES <==========\n\n // #region ==========> MODALS <==========\n\n public closeSelf() {\n this.onClose.emit();\n }\n\n // #endregion ==========> MODALS <==========\n\n}\n","<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left color-modal\" style=\"font-size: 20px; font-weight: bold;\"> Selecione um\n estabelecimento </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"modal-message\">\n <div class=\"search-and-filters d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row w-100\">\n <div class=\"input-group\">\n <span class=\"input-group-text px-2\" id=\"basic-addon1\"\n style=\"background-color: transparent; border-right: none;\">\n <lib-icon iconName=\"lupa\" iconColor=\"gray\"/>\n </span>\n <input type=\"text\" class=\"form-control border-start-0 ps-0\" id=\"pesquisaInput\" #pesquisa\n placeholder=\"Digite o Código\" (keyup.enter)=\"refreshList(pesquisa.value)\">\n </div>\n </div>\n\n <div class=\"filters d-flex align-items-center justify-content-between ms-3\">\n <div class=\"search-buttons d-flex flex-row align-items-center my-0 mx-0\">\n <button id=\"clearFilterBtn\" class=\"btn btn-outline-primary ms-0 no-hover-btn me-2\"\n (click)=\"pesquisa.value = ''; refreshList(pesquisa.value)\"> Limpar </button>\n <button id=\"searchFilterBtn\" class=\"btn btn-primary me-0\" (click)=\"refreshList(pesquisa.value)\"> Pesquisar\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"table-list w-100 mt-3\" *ngIf=\"$estabelecimentosList; else loading\">\n <table class=\"table table-bordered table-hover mb-0\">\n <thead class=\"fs-6\">\n <tr>\n <th scope=\"col\" class=\"col-11 align-middle th\">Estabelecimento</th>\n <th scope=\"col\" class=\"col-1 align-middle text-center th\">Ações</th>\n </tr>\n </thead>\n\n <tbody *ngIf=\"$estabelecimentosList.length > 0; else emptyList\">\n <tr\n *ngFor=\"let estabelecimento of $estabelecimentosList | paginate: { itemsPerPage: itemsPerPage, currentPage: page }\">\n <td>\n <div style=\"cursor: pointer;\" (click)=\"selectEstabelecimento(estabelecimento.ID, estabelecimento.NOMEEXIBICAO)\">\n <span class=\"row-name\"> {{ estabelecimento.CODIGO }} - {{ estabelecimento.NOMEEXIBICAO }} </span>\n <span class=\"subname\"> {{ estabelecimento.IS_MATRIZ ? \"Matriz \" : null }} CNPJ: {{ estabelecimento.CNPJ\n }} </span>\n </div>\n </td>\n <td class=\"text-center align-middle\">\n <div class=\"action-icons d-flex flex-row align-items-center justify-content-around\">\n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" id=\"flexSwitchCheckChecked\"\n tooltip=\"Estabelecimento padrão\" [checked]=\"estabelecimento.IS_DEFAULT\"\n style=\"transform: translateY(3px); height: 1rem; width: 28px;\" #isDefaultRow\n (click)=\"estabelecimento.IS_DEFAULT = !estabelecimento.IS_DEFAULT; defineDefaultEstabelecimento(estabelecimento.ID, estabelecimento.IS_DEFAULT)\">\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n\n <!-- #region EMPTY LIST CELL -->\n <ng-template #emptyList>\n <tbody>\n <tr>\n <td colspan=\"2\" class=\"align-middle\"><span class=\"row-name fw-light fst-italic text-center\"> {{\n response_messages.emptyMessage }} </span></td>\n </tr>\n </tbody>\n </ng-template>\n <!-- #endregion EMPTY LIST CELL -->\n </table>\n\n <!-- #region PAGINATION -->\n <div class=\"d-flex justify-content-end mt-2\" *ngIf=\"$estabelecimentosList.length > 0\">\n <div class=\"d-flex align-items-center\">\n <label class=\"me-2\" style=\"white-space: nowrap;\">Itens por página</label>\n <select class=\"form-select select-search\" (change)=\"onSelectChange($event)\">\n <option class=\"selected\" value=\"10\" selected>10</option>\n <option value=\"25\">25</option>\n <option value=\"50\">50</option>\n </select>\n </div>\n\n <pagination-controls class=\"sp-pagination mt-3\" (pageChange)=\"page = $event\"\n previousLabel=\"« \" nextLabel=\" »\" [maxSize]=\"5\">\n </pagination-controls>\n </div>\n <!-- #endregion PAGINATION -->\n \n </div>\n\n <!-- <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <span style=\"color: #6C757D\"> Registros {{$estabelecimentosList.length}} de {{$estabelecimentosList.length}} </span>\n <nav aria-label=\"...\">\n <ul class=\"pagination mb-0\">\n <li class=\"page-item disabled\"> <a class=\"page-link\" href=\"#\" tabindex=\"-1\">Anterior</a> </li>\n <li class=\"page-item active\"> <a class=\"page-link\" href=\"#\">1</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">2</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">3</a> </li>\n <li class=\"page-item\"> <a class=\"page-link\" href=\"#\">Próximo</a> </li>\n </ul>\n </nav>\n </div> -->\n\n\n <ng-template #loading>\n <lib-spinner></lib-spinner>\n </ng-template>\n </div>\n </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\n\nimport { InfraModule } from 'ngx-sp-infra';\n\nimport { ProjectUtilservice } from '../../../../project/project-utils.service';\nimport { MenuServicesService } from '../../menu-services.service';\n\n@Component({\n selector: 'versoes-modal',\n templateUrl: './versoes-modal.component.html',\n styleUrls: ['./versoes-modal.component.scss'],\n imports: [\n InfraModule,\n CommonModule\n ]\n})\nexport class VersoesModalComponent implements OnInit {\n constructor(\n private _menuServicesService: MenuServicesService,\n private _projectUtilService: ProjectUtilservice\n ) { }\n\n ngOnInit(): void {\n this.getVersions();\n }\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Output() public onClose = new EventEmitter<any>();\n \n public versionInfra: string = '';\n public versionCorporativo: string = '';\n\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n // #region ==========> SERVICES <==========\n\n // #region PREPARATION\n\n private getVersions(): void {\n \n // Obtém Versão da Infra\n this._menuServicesService.getVersionInfra().subscribe({\n next: response => {\n this.versionInfra = response.Version;\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n\n // Obtém Versão do Corporativo\n this._menuServicesService.getVersionCorporativo().subscribe({\n next: response => {\n this.versionCorporativo = response.Version;\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n\n }\n\n // #endregion PREPARATION\n\n // #endregion ==========> SERVICES <==========\n\n // #region ==========> MODALS <==========\n\n public closeSelf() {\n this.onClose.emit();\n }\n\n // #endregion ==========> MODALS <==========\n\n}\n","<div class=\"main-container\">\n <div class=\"modal-header modal-style modal-dialog-centered\">\n <h4 class=\"modal-title pull-left color-modal\" style=\"font-size: 20px; font-weight: bold;\"> Versões </h4>\n <button (click)=\"closeSelf()\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col\">\n <span><strong>Versão Infra:</strong> {{versionInfra}}</span>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col\">\n <span><strong>Versão Corporativo:</strong> {{versionCorporativo}}</span>\n </div>\n </div>\n </div>\n</div>","import { CommonModule, NgIf } from '@angular/common';\nimport { Component, ContentChild, ElementRef, Inject, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { NavigationEnd, Router, RouterLink, RouterOutlet } from '@angular/router';\nimport { filter, Subject } from 'rxjs';\n\nimport { MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalService } from '@azure/msal-angular';\nimport { AuthenticationResult, LogLevel, PublicClientApplication } from '@azure/msal-browser';\n\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ToastrService } from 'ngx-toastr';\n\nimport { InfraModule, MessageService } from 'ngx-sp-infra';\nimport { LibCustomMenuService } from '../../../custom/lib-custom-menu.service';\nimport { ProjectUtilservice } from '../../../project/project-utils.service';\nimport { AuthStorageService } from '../../../storage/auth-storage.service';\nimport { MenuServicesService } from '../menu-services.service';\n\nimport { AuthService } from '../../../auth.service';\nimport { LibCustomEnvironmentService } from '../../../custom/lib-custom-environment.service';\nimport { InfraInAuthTypeId } from '../../../models/infraInAuthTypeId';\nimport { PesquisaTelasGlobalService } from '../../../services/pesquisa-telas-global.service';\nimport { PrimaryDropdownComponent } from '../dropdown/primary-dropdown/primary-dropdown.component';\nimport { DynamicMenu } from '../model/dynamic-menu';\nimport { IMenuItemStructure } from '../model/imenu-item-structure.model';\nimport { ISubmenuItemStructure } from '../model/isubmenu-item-structure.model';\nimport { Usuario_IMG } from '../model/usuario-img';\nimport { DynamicMenuComponent } from '../submenus/dynamic-menu/dynamic-menu.component';\nimport { NotifSubmenuComponent } from '../submenus/notif-submenu/notif-submenu.component';\nimport { SelecaoEstabelecimentosModalComponent } from './selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component';\nimport { VersoesModalComponent } from './versoes-modal/versoes-modal.component';\n@Component({\n selector: 'app-menu-lateral',\n templateUrl: './menu-lateral.component.html',\n styleUrls: ['./menu-lateral.component.scss'],\n imports: [\n PopoverModule,\n TooltipModule,\n InfraModule,\n SelecaoEstabelecimentosModalComponent,\n VersoesModalComponent,\n NotifSubmenuComponent,\n DynamicMenuComponent,\n PrimaryDropdownComponent,\n CommonModule,\n RouterLink,\n RouterOutlet,\n NgIf\n ]\n})\nexport class MenuLateralComponent implements OnInit, OnDestroy {\n constructor(\n @Inject(MSAL_GUARD_CONFIG) private _msalGuardConfiguration: MsalGuardConfiguration,\n private _msalService: MsalService,\n private _toastrService: ToastrService,\n private _customEnvironmentService: LibCustomEnvironmentService,\n private _authStorageService: AuthStorageService,\n private _bsModalService: BsModalService,\n private _menuServices: MenuServicesService,\n private _messageService: MessageService,\n private _projectUtilService: ProjectUtilservice,\n private _router: Router,\n private _authService: AuthService,\n \n public _customMenuService: LibCustomMenuService,\n public _pesquisaTelas: PesquisaTelasGlobalService,\n ) {\n // Implementação que verifica eventos acionados na classe de service.\n this._menuServices.getNewUserImageEvent().subscribe( () => { this.getMenuUserImg(); })\n }\n\n public async ngOnInit() {\n\n document.addEventListener('keydown', this.handleKeyboardShortcut);\n\n // Inscreva-se no evento NavigationEnd para receber notificações quando a rota mudar, serve para atualizar a seleção do menu corretamente\n this._router.events.pipe(filter((event): event is NavigationEnd => event instanceof NavigationEnd)).subscribe((event: any) => { this._customMenuService.menuItems = this._customMenuService.menuConfig.updateRouteSelection(this._router.url, this._customMenuService.menuItems) });\n\n if (!this._customMenuService.menuDynamic && !this._customMenuService.menuDynamicCustom) {\n this._customMenuService.menuConfig.setMenuType(true);\n\n this._customMenuService.menuItems = this._customMenuService.menuConfig.initializeMenu(this._router.url);\n\n // Método com customizações para inicialização do Menu Estático\n this._customMenuService.menuStaticOnInit();\n }\n else\n {\n // Método com customizações para inicialização do Menu Dinâmico\n\n if (this._customMenuService.menuDynamic) {\n this._customMenuService.menuConfig.setMenuType(false);\n\n // Método com customizações obter o Módulo para montagem do Menu Dinâmico Lateral\n const projetoId: number = this._customMenuService.menuDynamicGetProjetoId();\n\n this._menuServices.getMenuLateral(projetoId).subscribe({\n next: response => {\n const menus = this.constroiRegrasDynamicMenu(response.MenuSubmenu);\n\n this._customMenuService.menuItems = this._customMenuService.menuConfig.initializeMenu(this._router.url, menus);\n }, error: error => {\n this._customMenuService.menuItems = this._customMenuService.menuConfig.initializeMenu(this._router.url);\n }\n })\n\n //Atualmente o erro é tratado no back para retornar vazio, feito assim para garantir que não quebre em clientes que ainda não tem essa tabela\n //Feito para implementação do APP9\n this._menuServices.GetHostServerOutSystems().subscribe({\n next:response => {\n this._hostServeUrlOutSystems = response.String\n },\n error:error => console.error(error)\n })\n\n }\n\n this._customMenuService.menuDynamicOnInit();\n }\n\n this.nomeEstabelecimento = this._authStorageService.infraEstabNome;\n this.footerUserName = this._authStorageService.userName;\n\n this.checkForCachedImage();\n\n this.getUserEmail();\n\n // Tratamemto exclusivo para o método de autenticação Azure\n if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Azure && this._authStorageService.user.toLowerCase() != \"admin\") {\n await this.initMsal();\n }\n\n }\n\n ngOnDestroy(): void {\n document.removeEventListener('keydown', this.handleKeyboardShortcut);\n }\n\n @ViewChild('sidebar', { static: true }) sidebar!: ElementRef<HTMLDivElement>;\n\n handleKeyboardShortcut = (event: KeyboardEvent): void => {\n if (event.ctrlKey && event.key.toLowerCase() === 'b') {\n event.preventDefault(); // Prevents any default behavior (like bold in text editors)\n this.openExpansibleMenu(this.sidebar.nativeElement);\n }\n };\n // #region ==========> PROPERTIES <==========\n\n // #region PRIVATE\n private _hostServeUrlOutSystems: string = \"\";\n\n private readonly MODAL_ESTABELECIMENTO: number = 1;\n private readonly MODAL_VERSION: number = 2;\n\n // ERICK: vou manter este por enquanto para quando for necessário esta funcionalidade eu consiga refazê-las sem muito problema\n @ViewChild(\"notif_menu\") private notif_template?: TemplateRef<any>;\n\n // #region PUBLIC\n\n @ViewChild('menuLink') public menuLink!: HTMLAnchorElement;\n @ContentChild(TemplateRef) public desiredContent?: TemplateRef<any>;\n\n public nomeEstabelecimento: string = 'Estabelecimento padrão';\n public titleSubmenu: string = \"\";\n public submenuList: (ISubmenuItemStructure | undefined)[] = [];\n\n public messageIfClicked = new Subject<boolean>();\n\n /** Esta variável é usada na abertura do submenu e do submenu secundário para\n * que a função onClickedOutside() que está na segunda div principal do HTML do\n * componente não seja ativada, pois se ela for ativada ela irá fechar o menu\n * lateral, e quando vamos do submenu para o submenu secundário não queremos\n * fechar o menu lateral, e quando vamos do submenu secundário para o submenu\n * também não queremos fechar o menu lateral;\n */\n public closeMenu: boolean = true;\n\n /** Utilizada como a fonte da imagem de perfil do usuário logado no sistema. */\n public footerUserImgSrc: string = \"\";\n\n /** Emai do usuário logado para ser exibido no popover */\n public footerUserEmail: string = \"\";\n\n /** Nome do usuário logado para ser exibido no rodapé do menu. */\n public footerUserName: string = \"Usuário\";\n\n public isPopoverVisible: boolean = false;\n public showBalloon: boolean = false;\n\n public get HostServerOutSystems():string { return this._hostServeUrlOutSystems }\n\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n // #region ==========> SERVICES <==========\n\n // #region GET\n private getEstabelecimentoSession(estabID: string): void {\n this._menuServices.getEstabelecimentoSession(estabID).subscribe({\n next: response => {\n this.nomeEstabelecimento = response.InfraEstabNome;\n this._authStorageService.infraEmpresaId = response.InfraEmpresaId;\n this._authStorageService.infraEmpresaNome = response.InfraEmpresaNome;\n },\n error: error => {\n this._projectUtilService.showHttpError(error);\n }\n })\n }\n\n private getMenuUserImg(): void {\n this._menuServices.getImagemMenu().subscribe({\n next: response => { this.footerUserImgSrc = response.InfraUsuarioImg.Imagem; },\n error: error => { this._projectUtilService.showHttpError(error); }\n })\n }\n\n public getUserEmail(): void {\n this._menuServices.getUsuarioEmail().subscribe({\n next: response => { this.footerUserEmail = response.Email; },\n error: error => { this._projectUtilService.showHttpError(error); }\n })\n }\n // #endregion GET\n\n // #region UPDATE\n public updateLastLogEstabelecimento(estab: string): void {\n this._menuServices.updateLastLogEstabID(estab.split(\" - \")[0]).subscribe({\n next: () => {\n this._messageService.showAlertSuccess('Estabelecimento alterado com sucesso!');\n\n this.getEstabelecimentoSession(estab.split(\" - \")[0]);\n }\n })\n\n this._authStorageService.infraEstabId = estab.split(\" - \")[0];\n this._authStorageService.infraEstabNome = estab.split(\" - \")[1];\n }\n // #endregion UPDATE\n\n // #endregion ==========> SERVICES <==========\n\n // #region ==========> UTILITIES <==========\n\n public togglePopover() { this.showBalloon = !this.showBalloon; }\n\n public dropdownWasOpened(value: boolean): void { this.messageIfClicked.next(value); }\n\n public openExpansibleMenu(ref: HTMLDivElement): void {\n ref.classList.toggle(\"closed\");\n ref.classList.toggle(\"col\");\n document.querySelector(\".sidebar-control\")?.classList.toggle(\"col\");\n\n // Método com customizações para inicialização do Menu Estático\n this._customMenuService.menuOpenExpansibleMenu(ref);\n }\n\n public openSubmenu(menu: IMenuItemStructure, ref: HTMLDivElement, desiredMenu: TemplateRef<any>): void {\n\n if (menu.children && menu.children.length > 0 && menu.route == \"\") {\n this.titleSubmenu = menu.label\n this.desiredContent = desiredMenu;\n ref.classList.remove(\"opened-notif-sub\");\n\n if (this.submenuList === menu.children) {\n this.closeMenu = false;\n }\n else if (!ref.classList.contains(\"opened-sub\")) { ref.classList.toggle(\"opened-sub\"); }\n this.submenuList = menu.children;\n }\n\n else if (!menu.children || (menu.children && menu.children.length == 0) || menu.route != \"\") {\n this.submenuList = [];\n ref.classList.toggle(\"selectedItem\");\n this.onClickedOutside(new Event(\"\"), ref);\n }\n }\n\n public onClickedOutside(e: Event, ref: HTMLDivElement): void {\n ref.classList.remove(\"opened-sub\");\n this.submenuList = [];\n }\n\n // #region MENU FOOTER USER IMAGE\n private validateCachedImg(footerImg: Usuario_IMG | null): boolean {\n let usuarioId: string = this._authStorageService.infraUsuarioId;\n\n if (!footerImg || footerImg == null) { return true; }\n\n if (usuarioId != footerImg.USUARIOID) { return true; }\n\n this.footerUserImgSrc = footerImg.FILE;\n return false;\n }\n\n private checkForCachedImage(): void {\n const isAPIRequestNeeded = this.validateCachedImg(this._menuServices.getMenuFooterImg());\n if (isAPIRequestNeeded) { this.getMenuUserImg(); }\n }\n // #endregion MENU FOOTER USER IMAGE\n\n public logout(): void {\n\n // Verifica se é Login Azure\n if (this._authStorageService.infraInAuthTypeId == InfraInAuthTypeId.Azure && this._authStorageService.user.toLowerCase() != \"admin\") {\n const hostAuthLogin = !this._customEnvironmentService.production ? \"http://localhost:4200/auth/login\" : `${ this._customEnvironmentService.hostName }/SisproErpCloud/${ this._customEnvironmentService.product }/auth/login`;\n\n\n this._msalService.logoutRedirect({\n postLogoutRedirectUri: hostAuthLogin\n });\n }\n\n this._authService.logout();\n }\n\n public getExternalUrl(url: string) {\n return `${ this._hostServeUrlOutSystems == \"\" ? this._projectUtilService.getHostName() : this._hostServeUrlOutSystems }/${ url }`;\n }\n\n public constroiRegrasDynamicMenu(menus: DynamicMenu[]) {\n const home = { id: 1, label: \"Início\", descricao: \"Tela inicial\", icon: \"casa\", route: \"home\", isExternal: false, isSelected: this._router.url.includes(\"home\"), }\n menus.unshift(home);\n return menus;\n }\n\n // #endregion ==========> UTILITIES <==========\n\n // #region Azure\n\n private async configMsal() {\n const isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\n\t\tconst hostAuthLogin = !this._customEnvironmentService.production ? \"http://localhost:4200/auth/login\" : `${ this._customEnvironmentService.hostName }/SisproErpCloud/${ this._customEnvironmentService.product }/auth/login`;\n\n this._msalService.instance = new PublicClientApplication({\n auth: {\n clientId: `${ this._authStorageService.azureClientId }`,\n authority: `https://login.microsoftonline.com/${ this._authStorageService.azureTenantId }`,\n redirectUri: hostAuthLogin + \"/\",\n postLogoutRedirectUri: hostAuthLogin,\n navigateToLoginRequestUrl: true\n },\n cache: {\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: isIE\n },\n system: {\n loggerOptions: {\n loggerCallback: (logLevel, message, containsPii) => {\n console.log(message);\n },\n logLevel: LogLevel.Error,\n piiLoggingEnabled: false\n }\n }\n });\n }\n\n private async initMsal() {\n await this.configMsal().then(() => {\n this._msalService.handleRedirectObservable().subscribe({\n next: (result: AuthenticationResult) => {\n\n if (!this._msalService.instance.getActiveAccount() && this._msalService.instance.getAllAccounts().length > 0) {\n this._msalService.instance.setActiveAccount(result.account);\n }\n\n },\n error: (error) => {\n this._toastrService.warning(`Erro na inicialização dos parâmetros de configuração do 'Azure': ${ error }`, '', { timeOut: 3000, extendedTimeOut: 2000 } );\n }\n });\n });\n }\n\n\n // #region ==========> MODALS <==========\n\n // #region modal - Seleção de Estabelecimentos\n\n /** Função simples com o objetivo de abrir os modais no centro da tela.\n * @param template Template HTML do modal que será aberto.\n */\n public openModalEstabelecimento(template: TemplateRef<any>) {\n this._bsModalService.show(template, {\n class: 'modal-dialog-centered modal-lg',\n ignoreBackdropClick: false,\n keyboard: false,\n id: this.MODAL_ESTABELECIMENTO\n });\n }\n\n /** Função simples com o objetivo de fechar os modais que estiverem abertos (baseados pelo ID).\n */\n public closeModalEstabelecimento() {\n this._bsModalService.hide(this.MODAL_ESTABELECIMENTO);\n }\n\n // #endregion modal - Seleção de Estabelecimentos\n\n // #region modal - Versões\n\n /** Função simples com o objetivo de abrir os modais no centro da tela.\n * @param template Template HTML do modal que será aberto.\n */\n public openModalVersion(template: TemplateRef<any>) {\n this._bsModalService.show(template, {\n class: 'modal-dialog-centered modal-sm',\n ignoreBackdropClick: false,\n keyboard: false,\n id: this.MODAL_VERSION\n });\n }\n\n /** Função simples com o objetivo de fechar os modais que estiverem abertos (baseados pelo ID).\n */\n public closeModalVersion() {\n this._bsModalService.hide(this.MODAL_VERSION);\n }\n\n // #endregion modal - Versões\n\n // #endregion ==========> MODALS <==========\n\n}\n","<!-- #region MAIN CONTENT -->\n<div id=\"menu\" class=\"main col-12\">\n\n <div style=\"height: 100vh; z-index: 3;\" class=\"sidebar-control position-relative d-flex flex-row\"\n (clickOutside)=\"closeMenu == true ? onClickedOutside($event, submenu_ref) : closeMenu = true\">\n <div class=\"sidebar {{_customMenuService.themeColor}} closed\" #sidebar>\n <div class=\"menu-header\">\n <ul>\n <li class=\"mb-3\">\n <div class=\"logo-hamburguer\">\n <img src=\"assets/icons/logotipo-sispro.svg\" alt=\"logo-sispro\" class=\"logo-sispro\" title=\"logo\" width=\"136px\" height=\"48px\">\n <button class=\"button-hamburguer\" (click)=\"openExpansibleMenu(sidebar)\">\n <img src=\"assets/icons/menu.svg\" alt=\"menu hamburguer\">\n </button>\n </div>\n </li>\n\n <!-- #region MÓDULOS -->\n <li class=\"mb-3\" style=\"margin-left: 8px; margin-right: 8px\">\n <div class=\"btn-group\">\n <button (click)=\"dropdownWasOpened(true)\" type=\"button\" class=\"dropdown-button\" data-bs-toggle=\"dropdown\"\n aria-expanded=\"false\" data-bs-auto-close=\"outside\">\n <ng-container>\n <lib-icon iconColor=\"white\" [iconName]=\"_customMenuService.moduleSvg\" />\n <span class=\"ps-2\"> {{ this._customMenuService.moduleName }} <lib-icon iconName=\"seta-direita\" iconColor=\"white\" /> </span>\n </ng-container>\n </button>\n <ul class=\"dropdown-menu\" #dropdown_ref>\n <app-primary-dropdown [buttonWasClicked]=\"messageIfClicked\"></app-primary-dropdown>\n </ul>\n </div>\n </li>\n <!-- #endregion MÓDULOS -->\n\n <!-- #region ESTABELECIMENTOS -->\n <li class=\"mx-3\" style=\"margin-bottom: 16px;\">\n <div class=\"icon-estabelecimento\">\n <button class=\"row justify-content-between bg-transparent border-0\"\n (click)=\"openModalEstabelecimento(modalEstabelecimento)\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : nomeEstabelecimento\" placement=\"right\">\n\n <lib-icon class=\"col-1\" iconName=\"predio\" iconColor=\"white\" />\n <span *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-9 ps-2 glb-text-width-160 text-start text-truncate\"> {{ nomeEstabelecimento }} </span>\n <lib-icon *ngIf=\"!sidebar.classList.contains('closed')\" class=\"col-1\" iconName=\"seta-direita\" iconColor=\"white\" />\n </button>\n </div>\n </li>\n <!-- #endregion ESTABELECIMENTOS -->\n\n\n <!-- #region PESQUISA -->\n @if (_customMenuService.menuDynamic) {\n <li class=\"mx-3 mb-3\">\n <div class=\"icon-pesquisa\">\n <button class=\"d-flex align-items-center justify-content-start gap-2 bg-transparent border-0\" (click)=\"_pesquisaTelas.show()\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : 'Pesquisar telas'\" placement=\"right\">\n \n <lib-icon class=\"col-1\" iconName=\"lupa\" iconColor=\"white\" />\n @if (!sidebar.classList.contains('closed')) { <span class=\"col ps-2 text-start text-truncate\"> Pesquisar telas </span> }\n </button>\n </div>\n </li>\n }\n <!-- #endregion PESQUISA -->\n\n </ul>\n\n </div>\n\n <!-- #region MENUS DE NAVEGAÇÃO -->\n <div class=\"main-menu\">\n <div class=\"scroll\">\n <div class=\"list-menu px-2 pb-1\">\n\n <!-- #region MENU DINÂMICO -->\n <div class=\"dynamic-menu\">\n <ul #dynamic_menu_items *ngIf=\"_customMenuService.menuItems; else isLoading\">\n\n <li *ngFor=\"let menuItem of _customMenuService.menuItems; let i = index\"\n class=\"p-1 rounded\"\n (click)=\"openSubmenu(menuItem, submenu_ref, dynamic_menu)\"\n [class.selectedItem]=\"menuItem.isSelected\">\n\n <a *ngIf=\"!menuItem.isExternal; else externalMenu\"\n [routerLink]=\"menuItem.route != '' ? menuItem.route : null\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImg\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImg>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n\n <ng-template #externalMenu>\n <a [href]=\"getExternalUrl(menuItem.route)\"\n target=\"_blank\"\n [id]=\"'item' + menuItem.id\"\n [tooltip]=\"!sidebar.classList.contains('closed') ? '' : menuItem.label\"\n placement=\"left\" class=\"w-100 d-flex align-items-center button-icons text-decoration-none p-1 glb-cursor-pointer\"\n [class]=\"sidebar.classList.contains('closed') ? 'justify-content-center' : 'justify-content-between'\">\n\n <div class=\"container\">\n <lib-icon *ngIf=\"!menuItem.icon.includes('assets/icons'); else iconImgExternal\" [iconName]=\"menuItem.icon\" iconColor=\"white\"/>\n <span class=\"span-main\">{{ menuItem.label }}</span>\n <ng-template #iconImgExternal>\n <img [src]=\"menuItem.icon\" [alt]=\"'icone: ' + menuItem.label\">\n </ng-template>\n </div>\n <lib-icon *ngIf=\"(menuItem.children && menuItem.children.length > 0) && !sidebar.classList.contains('closed')\"\n iconName=\"seta-direita\" iconColor=\"white\"/>\n </a>\n </ng-template>\n </li>\n\n </ul>\n </div>\n\n <ng-template #isLoading>\n <li class=\"spinner-border spinner-border-sm mt-2\" role=\"status\" aria-hidden=\"true\"></li>\n </ng-template>\n <!-- #endregion MENU DINÂMICO -->\n\n </div>\n </div>\n </div>\n <!-- #endregion MENUS DE NAVEGAÇÃO -->\n\n <!-- #region FOOTER -->\n <div class=\"footer-menu\" (mouseenter)=\"showBalloon = true\" (mouseleave)=\"showBalloon = false\"\n [popover]=\"popoverContent\" placement=\"right bottom\" [outsideClick]=\"true\" containerClass=\"width: 200px\" >\n <div class=\"footer-components d-flex flex-row align-items-center gap-2 py-2 px-1 justify-content-center gap-2\" [class.open]=\"showBalloon\">\n @if (footerUserImgSrc) {\n <img class=\"photo-profile\" [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n }\n @else {\n <lib-icon iconName=\"contraparte\" iconColor=\"white\"/>\n }\n\n <span class=\"text-truncate fw-bold text-start\" style=\"max-width: 100%;\"> {{ footerUserName }} </span>\n </div>\n </div>\n\n <ng-template #popoverContent>\n <div class=\"footer-menu\" style=\"width: 1000px;\">\n <div class=\"d-flex align-items-center\">\n <img *ngIf=\"footerUserImgSrc; else noUserImg\" class=\"photo-profile\"\n [src]=\"['data:image/jpeg;base64,' + footerUserImgSrc]\" alt=\"foto-perfil\">\n <ng-template #noUserImg>\n <lib-icon iconName=\"contraparte\" iconColor=\"currentColor\"/>\n </ng-template>\n <div class=\"d-flex flex-column ms-1\">\n <div [tooltip]=\"footerUserName\" class=\"dynamic-container\" style=\"white-space: nowrap; flex-grow: 1;max-width: 200px; font-size: 16px;\">{{footerUserName}}</div>\n <div [tooltip]=\"footerUserEmail\" class=\"dynamic-container\" style=\"white-space: nowrap; font-size: 12px; flex-grow: 1;max-width: 200px;\">{{footerUserEmail}}</div>\n </div>\n </div>\n </div>\n <hr class=\"mb-2 mt-2\">\n <div routerLink=\"meu-perfil\" style=\"cursor: pointer;\" (click)=\"togglePopover(); $event.stopPropagation()\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"contraparte\"/> Meu Perfil\n </div>\n <div class=\"mt-2\" style=\"cursor: pointer;\" (click)=\"openModalVersion(modalVersion)\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"info\"/> Versão\n </div> \n <div class=\"mt-2\" (click)=\"logout()\" style=\"cursor: pointer;\">\n <lib-icon [iconSize]=\"'small'\" iconName=\"logout\"/> Sair\n </div>\n </ng-template>\n <!-- #endregion FOOTER -->\n\n </div>\n\n <div class=\"submenu\" #submenu_ref>\n <ng-template [ngIf]=\"desiredContent !== null\">\n <ng-content *ngTemplateOutlet=\"desiredContent!; context: {$implicit: submenuList}\"></ng-content>\n </ng-template>\n </div>\n </div>\n\n <div class=\"main-content col d-flex flex-column align-content-between\" id=\"body-content\">\n <div class=\"content\" style=\"position: relative;\">\n <router-outlet></router-outlet>\n </div>\n <div app-footer></div>\n </div>\n\n</div>\n<!-- #endregion MAIN CONTENT -->\n\n<!-- #region TEMPLATES -->\n<ng-template #dynamic_menu let-data>\n <app-dynamic-menu\n [submenuList]=\"data\"\n [titleSubmenu]=\"titleSubmenu\" [submenuRef]=\"submenu_ref\" [recebeParam]=\"onClickedOutside.bind(this)\"\n [hostServerOutSystems]=\"HostServerOutSystems\">\n </app-dynamic-menu>\n</ng-template>\n\n<ng-template #notif_menu>\n <app-notif-submenu></app-notif-submenu>\n</ng-template>\n\n<!-- #region MODAL SELECAO ESTABELECIMENTO -->\n<ng-template #modalEstabelecimento>\n <selecao-estabelecimentos-modal (onClose)=\"closeModalEstabelecimento()\"\n (onSelected)=\"closeModalEstabelecimento(); updateLastLogEstabelecimento($event);\">\n </selecao-estabelecimentos-modal>\n</ng-template>\n<!-- #endregion MODAL SELECAO ESTABELECIMENTO -->\n\n<!-- #region MODAL VERSION -->\n<ng-template #modalVersion>\n <versoes-modal (onClose)=\"closeModalVersion()\">\n </versoes-modal>\n</ng-template>\n<!-- #endregion MODAL VERSION -->\n\n<!-- #endregion TEMPLATES -->\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { FormUtils, InfraModule, MessageService } from 'ngx-sp-infra';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { AuthService } from '../../auth.service';\nimport { AuthStorageService } from '../../storage/auth-storage.service';\n\n@Component( {\n selector: 'app-nova-senha',\n templateUrl: './nova-senha.component.html',\n styleUrls: ['./nova-senha.component.scss'],\n imports: [\n ReactiveFormsModule,\n InfraModule,\n ],\n preserveWhitespaces: true\n} )\nexport class NovaSenhaComponent implements OnInit {\n\n\tconstructor (\n\t\tprivate _formBuilder: FormBuilder,\n\t\tprivate _projectUtilservice: ProjectUtilservice,\n\t\tprivate _messageService: MessageService,\n\t\tprivate _authService: AuthService,\n\t\tprivate _authStorageService: AuthStorageService,\n\t\tprivate _title: Title,\n\t\tprivate _router: Router,\n\t\tprivate _route: ActivatedRoute\n\t\t) { }\n\n\tngOnInit (): void {\n\n\t\tthis._title.setTitle(\"Nova Senha\");\n\n\t\tthis.createForm();\n\n\t\tthis.getParmsFromRoute();\t\n\t\n\t\tthis.form.get('password')?.disable();\n\t\tthis.form.get('confirmPassword')?.disable();\n\n\t\tthis.form.get('code')?.setValue('');\n\n\t\tthis.form.get('code')?.valueChanges.subscribe(value => {\n\t\t\tif (value && value.length === 6) {\n\t\t\t this.form.get('password')?.enable();\n\t\t\t this.form.get('confirmPassword')?.enable();\n\t\t\t} else {\n\t\t\t this.form.get('password')?.disable();\n\t\t\t this.form.get('confirmPassword')?.disable();\n\t\t\t}\n\t\t });\n\t}\n\n\t// #region ==========> PROPERTIES <==========\n\n\t// #region PRIVATE\n\tprivate domain: string | null = \"\";\n\tprivate user: string | null = \"\";\n\tprivate createPassword: boolean = false;\n\n\tisDisabled: boolean = true;\n\n\tpublic esqueceuSenhaText: string = \"Enviamos um código para o seu e-mail.<br>Insira-o abaixo para redefinir sua senha.\"\n\tpublic primeiroAcessoText: string = \"Este é o seu primeiro acesso. Por favor,<br>Insira abaixo o código enviado pare seu<br>e-mail para definir sua senha.\"\n\tpublic senhaExpiradaText: string = \"Sua senha expirou e precisa ser atualizada.<br>Enviamos um código para o seu e-mail.<br>Insira-o abaixo para definir sua senha.\"\n\n\tpublic cadeadoImg = 'assets/imgs/cadeado.png'\n\tpublic maoImg = 'assets/imgs/mao.png'\n\tpublic calendarioImg = 'assets/imgs/calendario-fino.png'\n\n\tpublic statusSenha!: number;\n\n\t// #region PRIVATE\n\n\t// #region PUBLIC\n\tpublic isLoading: boolean = false;\n\n\t// #region ==========> FORM BUILDER <==========\n\tpublic form!: FormGroup;\n\n\t// Propriedade necessário para que a classe static FormUtils possa ser utilizada no Html\n\tpublic get FormUtils(): typeof FormUtils {\n\t\treturn FormUtils;\n\t}\n\n\tpublic passwordLabel: string = \"\";\n\n\t// #region FORM DATA\n\n\t// Variáveis específicas para funcionalidades padrões dos formulários\n\tpublic get code(): string | null {\n\t\treturn this.form.get('code')?.value;\n\t}\n\n\tpublic get password(): string {\n\t\treturn this.form.get('password')?.value;\n\t}\n\n\tpublic get confirmPassword(): string {\n\t\treturn this.form.get('confirmPassword')?.value;\n\t}\n\n\t// #endregion FORM DATA\n\n\t// #region FORM VALIDATORS\n\n\t// #region PUBLIC\n\n\t// Método para configuração dos campos de edição do formulário\n\tprivate createForm(): void {\n\n\t\tthis.form = this._formBuilder.group({\n\t\t\tcode: ['', [Validators.required, Validators.maxLength(6)]],\n\t\t\tpassword: ['', [Validators.required, Validators.maxLength(100)]],\n\t\t\tconfirmPassword: ['', [Validators.required, Validators.maxLength(100)]]\n\t\t});\n\n\t\tthis.form.get('code')?.setValue('');\t\n\t\tthis.form.get('password')?.setValue('');\t\n\t\tthis.form.get('confirmPassword')?.setValue('');\t\n\t}\n\n\t// #endregion FORM VALIDATORS\n\n\t// #endregion ==========> FORM BUILDER <==========\n\n\t// #region ==========> SERVICE METHODS <==========\n\t\n\n\t// #region GET\n\t\n\t/**\n\t * Puxa o nome do servidor salvo na configuração da máquina\n\t */\n\tpublic getAuthentication(): void {\n\n\t\tif (this.form.valid) {\n\t\t\tthis._authService.getAuthentication(this.domain!).subscribe({\n\t\t\t\tnext: response => {\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t})\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.form);\n\t\t}\n\t}\n\t// #endregion GET\n\n\t// #region POST\n\t\n\t// Envia requisição para recuperar de senha\n\tpublic sendPassword(): void {\n\n\t\tif (this.form.valid) {\n\t\t\tthis.isLoading = true;\n\n\t\t\tthis._authService.getAuthentication(this.domain!).subscribe({\n\t\t\t\tnext: response => {\n\t\t\t\t\tthis.updatePassword();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t},\n\t\t\t})\n\n\t\t} else {\n\t\t\tFormUtils.validateFields(this.form);\n\t\t}\n\n\t}\n\n\t// Recuperar senha\n\tpublic updatePassword(): void {\n\n\t\tif (this.createPassword) {\n\t\t\tthis._authService.createPassword(this.domain!, this.user!, this.form.value).subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\tthis._messageService.showAlertSuccess('Você definiu sua senha com sucesso. Preencha suas novas credenciais para acessar o sistema.');\n\t\t\t\t\tthis.cancelar();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t}\n\t\t\t});\n\n\t\t} else {\n\t\t\tthis._authService.recoverPassword(this.domain!, this.user!, this.form.value).subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\tthis._messageService.showAlertSuccess('Você redefiniu sua senha com sucesso. Preencha suas novas credenciais para acessar o sistema.');\n\t\t\t\t\tthis.cancelar();\n\t\t\t\t},\n\t\t\t\terror: (error) => {\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t\tthis._projectUtilservice.showHttpError(error);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t}\n\n\t// #endregion POST\n\n\t// #region UTILIDADES\n\tprivate getParmsFromRoute(): void {\n\t\n\t\tif (this._route.snapshot.paramMap.get('param') != null) {\n\t\t\tlet param: string = atob(this._route.snapshot.paramMap.get('param')!);\n\n\t\t\tvar params = param.split('$');\n\n let numero: number = +params[params.length - 1].slice(-1)\n\n\t\t\tthis.statusSenha = numero;\n \n\t\t\tthis.createPassword = (params[0] == 'true' ? true : false);\n\t\t\tthis.domain = params[1];\n\t\t\tthis.user = params[2];\n\t\t\tthis.passwordLabel = (this.createPassword ? \"Escolha sua nova senha\" : \"Digite uma nova Senha\");\n\n\t\t\tif (params[3] != null) {\n\t\t\t\tthis.form.get('code')?.setValue(params[3]);\t\t\t}\n\n\t\t} else {\n\t\t\tthis.createPassword = false;\n\t\t\tthis.domain = \"\";\n\t\t\tthis.user = \"\";\n\t\t}\n\n\t}\n \n\t// Retorno para o login\n\tpublic cancelar(): void {\n\t\tthis._authStorageService.logout();\n\t\tthis._router.navigate([\"/auth/login\"]);\n\t}\t\n\n // #endregion UTILIDADES\n\n // #endregion ==========> SERVICE METHODS <==========\n\n// #endregion ==========> MODALS <==========\n\n}\n","<body>\n<div id=\"main-container\">\n\t<!-- #region MAIN CONTENT -->\n\t<div class=\"glb-main-container password-container\">\n\t\t<div class=\"password-info-container\">\n\t\t\t<div class=\"img mb-3\">\n\t\t\t\t<img [src]=\"statusSenha == 2 ? calendarioImg : statusSenha == 1 ? maoImg : statusSenha == 3 ? cadeadoImg : '' \" width=\"125.69\" height=\"122\">\n\t\t\t</div>\n\t\t\t<div class=\"text\">\n\t\t\t\t<h4>{{statusSenha == 2 ? 'Senha expirada' : statusSenha == 1 ? 'Primeiro acesso' : statusSenha == 3 ? 'Esqueceu sua senha?' : ''}}</h4>\n\t\t\t\t<p [innerHTML]=\"statusSenha == 2 ? senhaExpiradaText : statusSenha == 1 ? primeiroAcessoText : statusSenha == 3 ? esqueceuSenhaText : '' \"></p>\n\t\t\t</div>\n\t\t</div>\n\t\t<form [formGroup]=\"form\">\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputCode\" class=\"form-label\"> Código de validação <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"text\" placeholder=\"Insira seu código aqui...\" id=\"inputCode\" class=\"form-control\" formControlName=\"code\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('code'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('code')\" label=\"Código de validação\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputPassword\" class=\"form-label\"> Digite uma nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite sua nova senha...\" id=\"inputPassword\" class=\"form-control\" formControlName=\"password\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('password'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('password')\" label=\"{{ passwordLabel }}\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\n\t\t\t<div class=\"row\">\n\t\t\t\t<div class=\"col-12 mb-3\">\n\t\t\t\t\t<label for=\"inputConfirmPassword\" class=\"form-label\"> Confirme sua nova Senha <span class=\"text-danger\">*</span></label>\n\t\t\t\t\t<input type=\"password\" placeholder=\"Digite a senha novamente...\" id=\"inputConfirmPassword\" class=\"form-control\" formControlName=\"confirmPassword\"\n\t\t\t\t\t\t[class.is-invalid]=\"FormUtils.isInvalidField(form.get('confirmPassword'))\">\n\t\t\t\t\t<app-field-error-message [control]=\"form.get('confirmPassword')\" label=\"Confirme sua Senha\"></app-field-error-message>\t\t\t\t\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\t<div class=\"btns\">\n\t\t\t\t\t<button [libLoading]=\"isLoading\" loadingText=\"Redefinindo...\" [disabled]=\"isLoading\" (click)=\"sendPassword()\" type=\"button\" class=\"btn btn-primary col w-100\">\n\t\t\t\t\t\tRedefinir senha <lib-icon iconName=\"login\" />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class=\"mt-3 text-center\">\n\t\t\t\t\t\t<a type=\"button\" class=\"fw-bold text-decoration-none text-secondary\" (click)=\"cancelar()\">\n\t\t\t\t\t\t\t<lib-icon iconName=\"p-seta-esquerda\" /> Voltar para a tela de login </a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t</form>\n\t</div>\n\t<!-- #endregion MAIN CONTENT -->\n</div>\n</body>\n","export class IMenu {\n ID: number = 0;\n UNICOID: number = 0;\n LABEL: string= \"\";\n DESCRICAO: string= \"\";\n URL: string= \"\";\n CLASS_ICON: string= \"\";\n IS_EXIBEMENU: boolean = false;\n URL_DASHBOARD: string= \"\";\n TAG: string= \"\";\n FK: number = 0;\n STRUCT_LIST!: [] | [{\n ID: number;\n UNICOID: number;\n LABEL: string;\n DESCRICAO: string;\n URL: string;\n CLASS_ICON: string;\n IS_EXIBEMENU: boolean;\n URL_DASHBOARD: string;\n TAG: string;\n FK: number;\n STRUCT_LIST: [] | [{\n ID: number;\n UNICOID: number;\n LABEL: string;\n DESCRICAO: string;\n URL: string;\n CLASS_ICON: string;\n IS_EXIBEMENU: boolean;\n URL_DASHBOARD: string;\n TAG: string;\n FK: number;\n }]\n }]\n}","export class InfraUsuarioImg {\n Tenant_Id: number = 0;\n Id: number = 0;\n Imagem: string = \"\";\n Filename: string = \"\";\n DataCriacao: Date = new Date();\n Is_Active: boolean = false;\n UsuarioId: string = \"\";\n}\n","export class NavSubmenuSearchItem{\n icon: string = \"\";\n titulo: string = \"\";\n \n submenusUnicoId!: number[];\n}\n","import { IError } from \"ngx-sp-infra\";\nimport { InfraUsuarioImg } from './infrausuarioimg';\n\nexport class RetInfraUsuarioImg implements IError{\n Error: boolean = false;\n ErrorMessage: string = \"\";\n InfraUsuarioImg: InfraUsuarioImg = new InfraUsuarioImg();\n uncompressedFileSize?: number | null = 0;\n compressedFileSize?: number | null = 0;\n}","import { IError } from 'ngx-sp-infra';\nimport { IMenuItemStructure } from './imenu-item-structure.model';\n\nexport class RetMenuItemStructure implements IError {\n public Error: boolean = false;\n public ErrorMessage: string = \"\";\n\n public MenuItem: IMenuItemStructure[] = [];\n}\n","import { IError } from 'ngx-sp-infra';\n\nimport { IMenu } from './imenu.model';\n\nexport class RetMenuLateral implements IError {\n public Error: boolean = false;\n public ErrorMessage: string = \"\";\n\n public MenuLateral!: IMenu[];\n}\n","import { IMenu } from \"./imenu.model\";\n\nexport class RetMenuPromise {\n public menuList: IMenu[] = [];\n \n public isAuthorized: boolean = false;\n}","import { IError } from \"ngx-sp-infra\";\nimport { NavSubmenuCards, NavSubMenus } from \"../../../../public-api\";\n\nexport class RetNavSubMenu implements IError{\n Error: boolean= false;\n ErrorMessage: string = \"\";\n NavSubmenus!: NavSubMenus[];\n}\n\nexport class RetSubmenuWithCards implements IError{\n Error: boolean = false;\n ErrorMessage: string = \"\";\n Submenu!: NavSubmenuCards[];\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot, ActivatedRouteSnapshot, Route, UrlTree } from '@angular/router';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthGuard {\n\n constructor(\n private router: Router,\n private authStorageService: AuthStorageService\n ) { }\n\n IsUserAuth(): Observable<boolean | UrlTree>\n {\n\n return this.authStorageService.isLoggedInSub\n .pipe(\n map((isLoggedIn: boolean) => {\n\n if (!isLoggedIn || this.authStorageService.isExternalLogin){ \n let login: UrlTree = this.router.parseUrl(\"/auth/login\");\n \n return login;\n }\n\n return true;\n })\n\n );\n\n }\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n return this.IsUserAuth();\n }\n\n canLoad(_route: Route): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n return this.IsUserAuth();\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot, ActivatedRouteSnapshot, Route, UrlTree } from '@angular/router';\n\nimport { Observable, lastValueFrom, of } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\nimport { AuthService } from '../auth.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class ExternaLoginlGuard {\n\n constructor(\n private router: Router,\n private authService: AuthService,\n private authStorageService: AuthStorageService\n ) { }\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n let param: string = atob(_route.paramMap.get('param')!);\n\n return this.IsUserAuth(param);\n }\n\n private navigateToError(): UrlTree {\n this.authStorageService.isExternalLogin = true;\n\n let login: UrlTree = this.router.parseUrl(\"/error-404\");\n\n return login;\n }\n\n private IsUserAuth(param: string): Observable<boolean | UrlTree>\n {\n return this.authStorageService.isLoggedInSub\n .pipe(\n take(1),\n switchMap((isLoggedIn: boolean) => {\n // Split dos parâmetros para o login externo\n var params = param.split('$');\n \n let domain = params[0];\n let user = params[1];\n let password = params[2];\n\n if (isLoggedIn && !this.authStorageService.isExternalLogin && this.authStorageService.dominio.toLowerCase() == domain.toLowerCase())\n {\n return of(true);\n };\n\n // antes alteração - se precisar voltar\n return this.logOnExternal(domain, user, password);\n })\n );\n\n }\n\n // Executa o Login Externo\n private async logOnExternal(domain: string, user: string, password: string): Promise<boolean | UrlTree> {\n const retConfig: boolean = await this.handleGetAuthentication(domain);\n\n if (!retConfig) {\n return this.navigateToError();\n }\n\n try {\n\n const error: boolean = await lastValueFrom(\n this.authService.loginExternal(domain, user, password)\n );\n\n if (error) {\n return this.navigateToError();\n }\n\n return true;\n } catch (error) {\n return this.navigateToError();\n }\n\n }\n\n // Retorna os parâmetros de configuração.\n private getAuthentication(domain: string): Promise<any> {\n return new Promise((resolve, reject) => {\n\n this.authService.getAuthentication(domain).subscribe({\n next: response => {\n resolve(true);\n },\n error: error => {\n reject(error);\n }\n\n });\n });\n\n }\n\n // Handle para busca dos parâmetros de configuração.\n private async handleGetAuthentication(domain: string): Promise<boolean> {\n \n try\n {\n const response = await this.getAuthentication(domain);\n \n return true;\n } catch (error) {\n return false;\n }\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, UrlTree, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport { MenuServicesService } from '../components/menu-lateral/menu-services.service';\n\n@Injectable(\n { providedIn: 'root' }\n)\nexport class IsMenuAllowedlGuard {\n\n constructor(\n private router: Router,\n private _menuService: MenuServicesService\n ) { }\n\n canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n {\n let route: string = _route.routeConfig?.path === undefined ? \"\" : _route.routeConfig?.path;\n \n if (route == '') {\n route = _state.url.substring(1)\n }\n\n return this.isMenuAllowedGuard(route);\n }\n\n private navigateToError(): UrlTree {\n let notAllowed: UrlTree = this.router.parseUrl(\"/error-menu-not-allowed\");\n\n return notAllowed;\n }\n\n // Valida a permissão do Menu\n private async isMenuAllowedGuard(route: string): Promise<boolean | UrlTree> {\n const menuAllowed: boolean = await this.handleIsMenuAllowed(route);\n\n if (!menuAllowed) {\n return this.navigateToError();\n }\n\n return menuAllowed;\n }\n\n // Handle para ver se o menu é permitido.\n private async handleIsMenuAllowed(route: string): Promise<boolean> {\n \n try\n {\n let response: boolean = false;\n\n await this.IsMenuAllowed(route)\n .then(res => {\n response = res;\n return response;\n })\n .catch(err => {\n throw new Error(err);\n });\n \n return response;\n }\n catch (error) {\n return false;\n }\n\n }\n\n // Retorna se o menu é permitido.\n private IsMenuAllowed(route: string): Promise<any> {\n return new Promise((resolve, reject) => {\n\n this._menuService.isMenuAllowed(route).subscribe({\n next: response => {\n resolve(response.IsMenuAllowed);\n },\n error: error => {\n reject(error);\n }\n\n });\n });\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Route, Router, UrlSegment, UrlTree } from '@angular/router';\n\nimport { Observable } from 'rxjs';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\n\n/**\n * Protege a página de login de ser carregada quando o usuário já está logado,\n * redirecionando ele para a página home da aplicação.\n */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LoginGuard {\n\n constructor(\n private router: Router,\n private authStorageService: AuthStorageService\n ) { }\n\n /**\n * Verifica se pode carregar a tela de login caso o usuário não esteja logado e \n * a rota seja de login.\n * \n * @param route Rota atual\n * @param segments Segmentos.\n * @returns \n */\n canLoad(_route: Route, _segments: UrlSegment[]): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {\n\n if (_route.path === \"auth/login\" && this.authStorageService.isLoggedInSub.value && !this.authStorageService.isExternalLogin) {\n return this.router.createUrlTree([\"/home\"]);\n }\n \n return true;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../auth.service';\n\n/** Protege a página de processamento de login integrado OS, só permite acessá-la se o payload for informado corretamente. */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class LoginOSGuard {\n\n constructor(\n private _router: Router,\n private _loginOSService: AuthService\n ) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {\n const payload = route.queryParamMap.get('payload');\n\n if (payload && payload.trim().length > 0) {\n return true;\n }\n else {\n this._loginOSService.setPendingWarning('Login integrado falhou: o parâmetro \"payload\" está inválido ou ausente');\n return this._router.parseUrl('/auth/login');\n }\n }\n\n};\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\n\nimport { Observable, from, lastValueFrom } from 'rxjs';\n\nimport { AuthStorageService } from '../storage/auth-storage.service';\nimport { CheckUrlAndMethodService } from 'ngx-sp-infra';\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\n/**\n * \\brief Intercepta uma chamada HTTP para inserir o usuário logado no header em conjunto\n * com o login para uso da API.\n *\n * Depende do serviço de autenticação.\n */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthAplicInterceptor implements HttpInterceptor {\n\n constructor(\n private authCheckService: CheckUrlAndMethodService,\n private token: AuthStorageService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) { }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // convert promise to observable using 'from' operator\n return from(this.handle(req, next))\n }\n\n async handle(req: HttpRequest<any>, next: HttpHandler) {\n let changedReq: HttpRequest<any> = req;\n\n if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthAplic)) {\n // Verifica se o Token precisa ser renovado\n await this.token.renewToken();\n\n // Adiciona as autenticações necessárias ao servidor.\n let headers: HttpHeaders = req.headers.set(\n 'Authorization',\n `Bearer ${this.token.authToken}`\n );\n\n changedReq = req.clone({ headers: headers });\n }\n\n return await lastValueFrom(next.handle(changedReq));\n }\n\n /* >>> Comentado por Molina - 19/10/2023 - Lógica anterior\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let changedReq: HttpRequest<any> = req;\n\n if (this.authCheckService.needsAuthRequest(req.url, req.method, environment.needsAuthAplic)) {\n\n // Adiciona as autenticações necessárias ao servidor.\n let headers: HttpHeaders = req.headers.set(\n 'Authorization',\n `Bearer ${ this.token.authToken }`\n );\n\n changedReq = req.clone({ headers: headers });\n }\n\n return next.handle(changedReq);\n }\n */\n\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\n\nimport { Observable } from \"rxjs\";\n\nimport { CheckUrlAndMethodService } from \"ngx-sp-infra\";\nimport { LibCustomEnvironmentService } from '../custom/lib-custom-environment.service';\n\n/**\n * \\brief Intercepta uma chamada HTTP para inserir a autenticação da Sispro.\n */\n@Injectable(\n { providedIn: 'root' }\n)\nexport class AuthInfraInterceptor implements HttpInterceptor {\n\n constructor(\n private authCheckService: CheckUrlAndMethodService,\n private _customEnvironmentService: LibCustomEnvironmentService\n ) { }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let changedReq: HttpRequest<any> = req;\n\n if (this.authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthInfra)) {\n // Adiciona as autenticações necessárias ao servidor. Autenticação básica.\n let headers: HttpHeaders = req.headers.set(\n \"Authorization\",\n `Basic ${btoa(`${ localStorage.getItem('configServerUser') }:${ localStorage.getItem('configServerPassword') }`) }\n `);\n\n changedReq = req.clone({ headers: headers });\n }\n\n return next.handle(changedReq);\n }\n\n}","import { Routes } from \"@angular/router\";\nimport { LoginComponent } from \"./components/login/login.component\";\nimport { NovaSenhaComponent } from \"./components/nova-senha/nova-senhacomponent\";\n\nexport const AUTH_ROUTES: Routes = [\n { path: '', component: LoginComponent, data: {title: \"SisproERP | Meu portal\"} },\n { path: 'novaSenha/:param', component: NovaSenhaComponent, data: {title: \"Nova Senha\"} }\n];\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { LibIconsComponent } from 'ngx-sp-infra';\n\nimport { RouterLink } from \"@angular/router\";\nimport { MenuServicesService } from '../../components/menu-lateral/menu-services.service';\nimport { LibCustomEnvironmentService } from '../../custom/lib-custom-environment.service';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\n\nexport class NavSubmenuCards {\n titulo: string = '';\n icon: string = '';\n descricao: string = '';\n urlPath: string = '';\n isExternal: boolean = false;\n}\n\n@Component({\n selector: 'sub-menu-card, lib-submenu-card',\n imports: [\n LibIconsComponent,\n RouterLink\n ],\n template: `\n <div class=\"max-card-menu row\">\n @for(card of subMenuCards; track $index) {\n @if (card.isExternal) {\n <a [href]=\"getExternalUrl(card.urlPath)\" target=\"_blank\" class=\"card-link col-4\">\n <div class=\"card w-100 border-0 rounded text-center glb-cursor-pointer\">\n <div class=\"card-icon\">\n <div class=\"card-icon2\">\n <lib-icon class=\"bold\" [iconName]=\"card.icon ? card.icon : 'engrenagem'\" iconColor=\"blue\" [iconSize]=\"35\" />\n </div>\n </div>\n\n <h3 class=\"card-title\">{{ card.titulo }}</h3>\n <p class=\"card-text\" [title]=\"card.descricao\"> {{ card.descricao }} </p>\n </div>\n </a>\n }\n @else {\n <a [routerLink]=\"[ '/'+card.urlPath ]\" class=\"card-link col-4\">\n <div class=\"card w-100 border-0 rounded text-center glb-cursor-pointer\">\n <div class=\"card-icon\">\n <div class=\"card-icon2\">\n <lib-icon class=\"bold\" [iconName]=\"card.icon ? card.icon : 'engrenagem'\" iconColor=\"blue\" [iconSize]=\"35\" />\n </div>\n </div>\n\n <h3 class=\"card-title\">{{ card.titulo }}</h3>\n <p class=\"card-text\" [title]=\"card.descricao\"> {{ card.descricao }} </p>\n </div>\n </a>\n }\n }\n </div>\n `,\n styleUrl: './sub-menu-card.component.scss'\n})\nexport class SubMenuCardComponent implements OnInit {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Input() subMenuCards: NavSubmenuCards[] = [];\n\n public hostName:string = \"\";\n\n public getExternalUrl = (url: string): string => { return `${ this.hostName == \"\" ? `https://${ window.location.host }` : this.hostName }/${ url }` }\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor(\n private _menuService: MenuServicesService,\n private _projectUtil: ProjectUtilservice,\n\n private _customEnv: LibCustomEnvironmentService\n ) { }\n\n ngOnInit(): void {\n this.GetHostName();\n }\n\n\n // #region ==========> API METHODS <==========\n\n // #region GET\n \n public GetHostName() {\n // Validação adicionada para ignorar esta chamada caso o componente seja exibido na docs\n if (this._customEnv.product === \"InfraCodeDocs\") return;\n\n this._menuService.GetHostServerOutSystems().subscribe({\n next:response => this.hostName = response.String,\n error:error => this._projectUtil.showHttpError(error)\n })\n }\n\n // #endregion GET\n\n // #endregion ==========> API METHODS <==========\n\n\n // #region ==========> UTILS <==========\n // [...]\n // #endregion ==========> UTILS <==========\n\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TelaItem } from '../sub-menu.component';\n\n@Component({\n selector: 'app-list',\n imports: [],\n templateUrl: './list.component.html',\n styleUrl: './list.component.scss',\n standalone: true\n})\nexport class ListComponent {\n\n @Input() telasItem : TelaItem[] = [];\n @Input() hostName:string = '';\n\n @Output() onTelaSelecionada: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n public getExternalUrl = (url: string) => { return `${ this.hostName }/${ url }`; }\n\n}\n","<ul class=\"nav flex-column mt-3\">\n @if (telasItem && telasItem.length > 0) {\n @for (clickLink of telasItem; track $index) {\n <li class=\"nav-item\">\n <a class=\"nav-link\" [target]=\"clickLink.IsExternal ? '_blank' : '_self'\" (click)=\"onTelaSelecionada.emit(clickLink.titulo)\"\n [href]=\"clickLink.IsExternal\n ? getExternalUrl(clickLink.urlPath)\n : '/SisproErpCloud/' + clickLink.urlPath\" >\n {{ clickLink.titulo }}\n </a>\n </li>\n }\n }\n</ul>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ListComponent } from '../list/list.component';\nimport { SubMenuItem, TelaItem } from '../sub-menu.component';\n\n@Component({\n selector: 'app-nav-tabs',\n imports: [ ListComponent ],\n templateUrl: './nav-tabs.component.html',\n styleUrl: './nav-tabs.component.scss',\n})\nexport class NavTabsComponent implements OnInit, OnChanges {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Input() subMenus: SubMenuItem[] = [];\n @Input() hostName:string = '';\n @Input() activeItem?: string;\n\n @Output() onTituloSelecionado: EventEmitter<string | null> = new EventEmitter<string | null>();\n @Output() onTelaSelecionada: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n public telasItem: TelaItem[] = [];\n public listaAtiva: string = '';\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.subMenus.length != 0) {\n this.telasItem = this.subMenus.filter(e => e.titulo.includes(this.activeItem ?? ''))[0].telasItem;\n this.listaAtiva = this.activeItem ?? this.subMenus[0].titulo;\n\n if (this.activeItem && this.activeItem !== '') this.setAbaAtiva(this.activeItem);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['activeItem'].currentValue && changes['activeItem'].currentValue !== \"\") {\n this.setAbaAtiva(changes['activeItem'].currentValue);\n }\n\n if ((changes['subMenus'].currentValue && changes['subMenus'].currentValue !== \"\") && this.activeItem !== '') {\n this.setAbaAtiva(this.activeItem ?? '');\n }\n }\n\n\n // #region ==========> UTILS <==========\n public setAbaAtiva(titulo: string): void {\n \n // Se não encontrar o nome, sai do método\n const index = this.subMenus.findIndex(submenu => submenu.titulo == titulo);\n if (index === -1) return;\n \n this.telasItem = this.subMenus[index]?.telasItem;\n this.listaAtiva = this.subMenus[index]?.titulo;\n\n this.onTituloSelecionado.emit(titulo);\n }\n // #endregion ==========> UTILS <==========\n\n}\n","<ul class=\"menu my-3\">\n @for(menu of subMenus; track $index) {\n <li class=\"menu-item\" (click)=\"setAbaAtiva(menu.titulo)\" [class.active]=\"menu.titulo === listaAtiva\">\n <a class=\"glb-cursor-pointer\" (click)=\"setAbaAtiva(menu.titulo)\" [tabindex]=\"$index\" >\n {{ menu.titulo }}\n </a>\n </li>\n }\n</ul>\n\n@if (telasItem) {\n <app-list [telasItem]=\"telasItem\" [hostName]=\"hostName\" (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" />\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { ContentContainerComponent, LibIconsComponent } from 'ngx-sp-infra';\n\nimport { MenuServicesService } from '../../components/menu-lateral/menu-services.service';\nimport { ProjectUtilservice } from '../../project/project-utils.service';\nimport { LibCustomEnvironmentService } from './../../custom/lib-custom-environment.service';\nimport { NavTabsComponent } from './nav-tabs/nav-tabs.component';\n\nexport class NavSubMenus {\n icon: string = '';\n titulo: string = '';\n subMenuItem: SubMenuItem[] = [];\n}\n\nexport class SubMenuItem {\n titulo: string = '';\n telasItem: TelaItem[] = [];\n}\n\nexport class TelaItem {\n titulo: string = '';\n urlPath: string = '';\n IsExternal:boolean = false;\n}\n\n@Component({\n selector: 'app-nav-sub-menu, lib-submenu',\n imports: [\n NavTabsComponent,\n LibIconsComponent,\n ContentContainerComponent\n ],\n templateUrl: './sub-menu.component.html',\n styleUrl: './sub-menu.component.scss',\n standalone: true\n})\nexport class SubMenuComponent implements OnInit {\n\n // #region ==========> PROPERTIES <==========\n\n // #region PUBLIC\n @Input() navSubmenus: NavSubMenus[] = [];\n @Input() isProduction: boolean = true;\n @Input() hostname: string = \"https://siscandesv6.sispro.com.br\";\n @Input() activeItem?: string;\n\n @Output() onTituloSelecionado: EventEmitter<string | null> = new EventEmitter<string | null>();\n @Output() onTelaSelecionada: EventEmitter<string | null> = new EventEmitter<string | null>();\n\n public hostNameOutSystems: string = \"\";\n public listaSubMenus: SubMenuItem[] = [];\n // #endregion PUBLIC\n\n // #endregion ==========> PROPERTIES <==========\n\n\n constructor(\n private _menuService: MenuServicesService,\n private _projectUtil: ProjectUtilservice,\n private _customEnv: LibCustomEnvironmentService\n ) { }\n\n ngOnInit(): void {\n this.getHostName();\n\n if (\n this.navSubmenus.length > 0 &&\n this.navSubmenus[0].subMenuItem &&\n this.navSubmenus[0].subMenuItem.length > 0\n ) {\n this.activeItem = this.navSubmenus[0].subMenuItem[0].titulo.toString();\n }\n\n this.listaFunction();\n }\n\n\n // #region ==========> UTILS <==========\n private listaFunction(): void {\n for(let i = 0; i < this.navSubmenus.length; i++) {\n this.listaSubMenus.push(...this.navSubmenus[i].subMenuItem);\n }\n }\n\n private getHostName(): void {\n // Validação adicionada para ignorar esta chamada caso o componente seja exibido na docs\n if (this._customEnv.product === \"InfraCodeDocs\") return;\n\n this._menuService.GetHostServerOutSystems().subscribe({\n next: response => this.hostNameOutSystems = response.String,\n error: error => this._projectUtil.showHttpError(error)\n })\n }\n // #endregion ==========> UTILS <==========\n\n}\n","<lib-container>\n <div class=\"px-5\" innerContent1>\n @for(subMenu of navSubmenus; track $index) {\n <div [class]=\"$first && subMenu.titulo == '' && subMenu.icon == '' ? ' mb-2' : 'mt-4 mb-2'\">\n @if (subMenu.icon != '') {\n <lib-icon class=\"bold engrenagem-ajustada\" iconName=\"{{ subMenu.icon }}\" />\n }\n @if (subMenu.titulo != ''){\n <span class=\"fw-bold fs-4 ms-1\">{{ subMenu.titulo }}</span>\n }\n\n <app-nav-tabs [activeItem]=\"activeItem\" [subMenus]=\"navSubmenus[$index].subMenuItem\" [hostName]=\"hostNameOutSystems\"\n (onTelaSelecionada)=\"onTelaSelecionada.emit($event)\" (onTituloSelecionado)=\"onTituloSelecionado.emit($event)\" />\n </div>\n\n @if(!$last){ <hr /> }\n }\n </div>\n</lib-container>\n","/** Modules */\nexport * from './lib/auth.module';\n\n/** Services */\nexport * from './lib/auth.service';\nexport * from './lib/components/menu-lateral/menu-services.service';\nexport * from './lib/custom/lib-custom-environment.service';\nexport * from './lib/custom/lib-custom-login.service';\nexport * from './lib/custom/lib-custom-menu.service';\nexport * from './lib/custom/lib-custom-storage.service';\nexport * from './lib/custom/lib-menu-config.service';\nexport * from './lib/project/project-utils.service'; // Disponibilizado temporariamente até ser decidido como resolver o problema percebido na liberação do dia 13/11/2025\nexport * from './lib/services/indexed-db.service';\nexport * from './lib/services/pesquisa-telas-global.service';\nexport * from './lib/storage/auth-storage.service';\n\n/** Components */\nexport * from './lib/components/error-menu-not-allowed/error-menu-not-allowed.component';\nexport * from './lib/components/login-os/login-os.component';\nexport * from './lib/components/login/login.component';\nexport * from './lib/components/menu-lateral/dropdown/primary-dropdown/primary-dropdown.component';\nexport * from './lib/components/menu-lateral/dropdown/secondary-dropdown/secondary-dropdown.component';\nexport * from './lib/components/menu-lateral/menu/menu-lateral.component';\nexport * from './lib/components/menu-lateral/menu/selecao-estabelecimentos-modal/selecao-estabelecimentos-modal.component';\nexport * from './lib/components/menu-lateral/submenus/dynamic-menu/dynamic-menu.component';\nexport * from './lib/components/menu-lateral/submenus/notif-submenu/notif-submenu.component';\nexport * from './lib/components/nova-senha/nova-senhacomponent';\n\n/** Models */\nexport * from './lib/components/menu-lateral/model/imenu-item-structure.model';\nexport * from './lib/components/menu-lateral/model/imenu.model';\nexport * from './lib/components/menu-lateral/model/infrausuarioimg';\nexport * from './lib/components/menu-lateral/model/navsubmenu-searchitem';\nexport * from './lib/components/menu-lateral/model/ret-infrausuarioimg';\nexport * from './lib/components/menu-lateral/model/ret-menu-item-structure';\nexport * from './lib/components/menu-lateral/model/ret-menu-lateral';\nexport * from './lib/components/menu-lateral/model/ret-menu-promise';\nexport * from './lib/components/menu-lateral/model/ret-navsubmenu';\n\n/** Custom */\nexport * from './lib/custom/models/icustom-environment-service';\nexport * from './lib/custom/models/icustom-login-service';\nexport * from './lib/custom/models/icustom-menu-service';\nexport * from './lib/custom/models/icustom-storage-service';\nexport * from './lib/custom/models/imenu-config';\n\n/** Guards */\nexport * from './lib/guards/auth-guard';\nexport * from './lib/guards/external-login-guard';\nexport * from './lib/guards/is-menu-allowed-guard';\nexport * from './lib/guards/login-guard';\nexport * from './lib/guards/login-os.guard';\n\n/** Interceptors */\nexport * from './lib/interceptors/auth-aplic.interceptor';\nexport * from './lib/interceptors/auth-infra.interceptor';\n\n/** Routes */\nexport * from './lib/auth.routes';\n\n/** Widgets */\nexport * from './lib/widgets/sub-menu-card/sub-menu-card.component';\nexport * from './lib/widgets/sub-menu/list/list.component';\nexport * from './lib/widgets/sub-menu/nav-tabs/nav-tabs.component';\nexport * from './lib/widgets/sub-menu/sub-menu.component';\n\n\n/** Providers */\nexport * from './lib/custom/token';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LibCustomEnvironmentService","i2.LibCustomStorageService","i3.IndexedDBService","i4.LibCustomEnvironmentService","i1","i2.AuthStorageService","take","tap","i2","i3.AuthStorageService","i4","i5.LibCustomLoginService","i6.ProjectUtilservice","i7.LibCustomEnvironmentService","i8.IndexedDBService","i1.AuthStorageService","i3.LibCustomEnvironmentService","i1.LibMenuConfigService","i2.LibCustomEnvironmentService","i3.ProjectUtilservice","i1.AuthService","i2.ProjectUtilservice","i3","i4.AuthStorageService","i5","map","i2.LibCustomLoginService","i4.ProjectUtilservice","i5.AuthService","i6.LibCustomEnvironmentService","i7.AuthStorageService","i9","i11","i1.ProjectUtilservice","i1.LibCustomMenuService","i3.MenuServicesService","i2.LibCustomMenuService","i5.ProjectUtilservice","i7","i1.MenuServicesService","i6.MenuServicesService","i8.ProjectUtilservice","i10.AuthService","i11.LibCustomMenuService","i12.PesquisaTelasGlobalService","i15","i4.AuthService","i5.AuthStorageService","i6","switchMap","i2.AuthService","i2.MenuServicesService"],"mappings":"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"}
|