ngx-sp-auth 4.23.7 → 4.23.9

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.
@@ -7,7 +7,7 @@ import { MsalInterceptor, MsalGuard, MsalModule, MSAL_GUARD_CONFIG } from '@azur
7
7
  import { LogLevel, PublicClientApplication, InteractionType } from '@azure/msal-browser';
8
8
  import { take as take$1, tap as tap$1, map as map$1, switchMap as switchMap$1 } from 'rxjs/operators';
9
9
  import * as i1$1 from '@angular/router';
10
- import { RouterLink, NavigationEnd, RouterOutlet } from '@angular/router';
10
+ import { RouterLink, NavigationEnd, RouterOutlet, Router, PRIMARY_OUTLET } from '@angular/router';
11
11
  import * as i3 from 'ngx-sp-infra';
12
12
  import { IpServiceService, Utils, SearchInputComponent, InfraModule, FormUtils, Usuario, RetPasswordPolicy, RetCheckPassword, CheckPasswordRecord, PasswordPolicyComponent, LibIconsComponent, ContentContainerComponent } from 'ngx-sp-infra';
13
13
  import * as i10 from 'ngx-toastr';
@@ -830,9 +830,9 @@ class AuthStorageService {
830
830
  }
831
831
  verifyToken() {
832
832
  const url = `${this._BASE_VERIFICATION_URL}`;
833
- const headers = this._HTTP_HEADERS;
833
+ const headers = this._HTTP_HEADERS.set('x-application', this._customEnvironmentService.product);
834
834
  return defer(() => {
835
- this._toastr.info('Validando token do usuário.', 'Aguarde...', { timeOut: 3000, progressBar: true, progressAnimation: 'increasing', closeButton: true });
835
+ this._toastr.info('Validando token do usuário.', 'Aguarde...');
836
836
  const params = new HttpParams()
837
837
  .set('ip', this.ip)
838
838
  .set('browser', this._ipService.getDataBrowserUser().browser);
@@ -4688,6 +4688,81 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
4688
4688
  args: [{ providedIn: 'root' }]
4689
4689
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: MenuServicesService }] });
4690
4690
 
4691
+ const IsMenuAllowedGuard = (_route, state) => {
4692
+ const router = inject(Router);
4693
+ const menuService = inject(MenuServicesService);
4694
+ const navigateToError = () => {
4695
+ return router.createUrlTree(['/error-menu-not-allowed']);
4696
+ };
4697
+ const permissionRoute = getPermissionRoute(state);
4698
+ // console.log('permissionRoute:', permissionRoute);
4699
+ return menuService.isMenuAllowed(permissionRoute).pipe(map(response => {
4700
+ // console.log('isMenuAllowed.response:', response);
4701
+ if (response.IsMenuAllowed)
4702
+ return true;
4703
+ return navigateToError();
4704
+ }), catchError(() => {
4705
+ return of(navigateToError());
4706
+ }));
4707
+ };
4708
+ /**
4709
+ * Obtém a rota utilizada para validar a permissão.
4710
+ *
4711
+ * Regras:
4712
+ * - considera toda a rota ativa, inclusive rotas lazy-loaded;
4713
+ * - ignora query parameters e fragments;
4714
+ * - ignora parâmetros declarados com ":";
4715
+ * - ignora qualquer segmento posterior ao primeiro parâmetro;
4716
+ * - retorna a rota sem "/" inicial.
4717
+ *
4718
+ * Exemplos:
4719
+ *
4720
+ * movimentacoes/alteracao-cadastral-grupo
4721
+ * => movimentacoes/alteracao-cadastral-grupo
4722
+ *
4723
+ * movimentacoes/fluxos-gerais/:id
4724
+ * => movimentacoes/fluxos-gerais
4725
+ *
4726
+ * movimentacoes/fluxos-gerais/:id/editar
4727
+ * => movimentacoes/fluxos-gerais
4728
+ */
4729
+ const getPermissionRoute = (state) => {
4730
+ const routeSegments = [];
4731
+ let currentRoute = state.root;
4732
+ // console.log('currentRoute:', currentRoute);
4733
+ while (currentRoute) {
4734
+ const configuredPath = currentRoute.routeConfig?.path;
4735
+ // console.log('configuredPath:', configuredPath);
4736
+ if (configuredPath) {
4737
+ const configuredSegments = configuredPath.split('/');
4738
+ for (const segment of configuredSegments) {
4739
+ if (isRouteParameter(segment))
4740
+ return routeSegments.join('/');
4741
+ routeSegments.push(segment);
4742
+ }
4743
+ // console.log('routeSegments:', routeSegments);
4744
+ }
4745
+ currentRoute = getPrimaryChild(currentRoute);
4746
+ // console.log('currentRoute 2:', currentRoute);
4747
+ }
4748
+ return routeSegments.join('/');
4749
+ };
4750
+ /**
4751
+ * Identifica parâmetros declarados na configuração da rota.
4752
+ *
4753
+ * Exemplos:
4754
+ * :id
4755
+ * :codigo
4756
+ * :empresaId
4757
+ */
4758
+ const isRouteParameter = (segment) => {
4759
+ return segment.startsWith(':');
4760
+ };
4761
+ /** Obtém a próxima rota ativa no outlet principal */
4762
+ const getPrimaryChild = (route) => {
4763
+ return route.children.find(child => child.outlet === PRIMARY_OUTLET);
4764
+ };
4765
+
4691
4766
  /**
4692
4767
  * Protege a página de login de ser carregada quando o usuário já está logado,
4693
4768
  * redirecionando ele para a página home da aplicação.
@@ -4775,7 +4850,8 @@ class AuthAplicInterceptor {
4775
4850
  // Verifica se o Token precisa ser renovado
4776
4851
  // await this._authStorage.renewToken();
4777
4852
  // Adiciona as autenticações necessárias ao servidor.
4778
- changedReq = req.clone({ headers: req.headers, withCredentials: true });
4853
+ let clonedHeaders = req.headers.set('X-Application', this._customEnvironmentService.product);
4854
+ changedReq = req.clone({ headers: clonedHeaders, withCredentials: true });
4779
4855
  }
4780
4856
  // return await lastValueFrom(next.handle(changedReq));
4781
4857
  // Exemplo de leitura de resposta via interceptor abaixo:
@@ -4809,8 +4885,9 @@ class AuthInfraInterceptor {
4809
4885
  intercept(req, next) {
4810
4886
  let changedReq = req;
4811
4887
  if (this._authCheckService.needsAuthRequest(req.url, req.method, this._customEnvironmentService.needsAuthInfra)) {
4888
+ let clonedHeaders = req.headers.set('X-Application', this._customEnvironmentService.product);
4812
4889
  // Adiciona as autenticações necessárias ao servidor. Autenticação básica.
4813
- changedReq = req.clone({ headers: req.headers, withCredentials: true });
4890
+ changedReq = req.clone({ headers: clonedHeaders, withCredentials: true });
4814
4891
  }
4815
4892
  // return next.handle(changedReq);
4816
4893
  // Exemplo de leitura de resposta via interceptor abaixo:
@@ -5175,5 +5252,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
5175
5252
  * Generated bundle index. Do not edit.
5176
5253
  */
5177
5254
 
5178
- export { AUTH_ROUTES, AuthAplicInterceptor, AuthGuard, AuthInfraInterceptor, AuthModule, AuthService, AuthStorageService, AuthUtilService, DynamicMenuComponent, ErrorMenuNotAllowed, ExternaLoginlGuard, FavoritarModel, IMenu, IndexedDBService, InfraEstabelecimentoFavoritoDefault, InfraUsuarioImg, IsMenuAllowedlGuard, LIB_CUSTOM_ENVIRONMENT_SERVICE, LIB_CUSTOM_LOGIN_SERVICE, LIB_CUSTOM_MENU_SERVICE, LIB_CUSTOM_STORAGE_SERVICE, LIB_MENU_CONFIG, LibCustomEnvironmentService, LibCustomLoginService, LibCustomMenuService, LibCustomStorageService, LibMenuConfigService, ListComponent, LoginComponent, LoginGuard, LoginOSComponent, LoginOSGuard, LoginProgress, MenuLateralComponent, MenuServicesService, MeuPerfilComponent, NavSubMenus, NavSubmenuCards, NavSubmenuSearchItem, NavTabsComponent, NotifSubmenuComponent, NovaSenhaComponent, PesquisaTelasGlobalService, PrimaryDropdownComponent, RetEstabelecimentosModal, RetInfraUsuarioImg, RetMenuItemStructure, RetMenuLateral, RetMenuPromise, RetNavSubMenu, RetSubmenuWithCards, SecondaryDropdownComponent, SelecaoEstabelecimentosModalComponent, SituacaoLogin, SubMenuCardComponent, SubMenuComponent, SubMenuItem, TelaItem };
5255
+ export { AUTH_ROUTES, AuthAplicInterceptor, AuthGuard, AuthInfraInterceptor, AuthModule, AuthService, AuthStorageService, AuthUtilService, DynamicMenuComponent, ErrorMenuNotAllowed, ExternaLoginlGuard, FavoritarModel, IMenu, IndexedDBService, InfraEstabelecimentoFavoritoDefault, InfraUsuarioImg, IsMenuAllowedGuard, IsMenuAllowedlGuard, LIB_CUSTOM_ENVIRONMENT_SERVICE, LIB_CUSTOM_LOGIN_SERVICE, LIB_CUSTOM_MENU_SERVICE, LIB_CUSTOM_STORAGE_SERVICE, LIB_MENU_CONFIG, LibCustomEnvironmentService, LibCustomLoginService, LibCustomMenuService, LibCustomStorageService, LibMenuConfigService, ListComponent, LoginComponent, LoginGuard, LoginOSComponent, LoginOSGuard, LoginProgress, MenuLateralComponent, MenuServicesService, MeuPerfilComponent, NavSubMenus, NavSubmenuCards, NavSubmenuSearchItem, NavTabsComponent, NotifSubmenuComponent, NovaSenhaComponent, PesquisaTelasGlobalService, PrimaryDropdownComponent, RetEstabelecimentosModal, RetInfraUsuarioImg, RetMenuItemStructure, RetMenuLateral, RetMenuPromise, RetNavSubMenu, RetSubmenuWithCards, SecondaryDropdownComponent, SelecaoEstabelecimentosModalComponent, SituacaoLogin, SubMenuCardComponent, SubMenuComponent, SubMenuItem, TelaItem };
5179
5256
  //# sourceMappingURL=ngx-sp-auth.mjs.map