visorus-erp-core 1.0.8
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.
- package/README.md +24 -0
- package/bundles/visorus-erp-core.umd.js +6382 -0
- package/bundles/visorus-erp-core.umd.js.map +1 -0
- package/bundles/visorus-erp-core.umd.min.js +16 -0
- package/bundles/visorus-erp-core.umd.min.js.map +1 -0
- package/esm2015/lib/app.module.js +56 -0
- package/esm2015/lib/components/acreedor/select/select-acreedor.component.js +124 -0
- package/esm2015/lib/components/acreedor/services/acreedor.service.js +36 -0
- package/esm2015/lib/components/acreedor/services/acreedorCuentaContable.js +44 -0
- package/esm2015/lib/components/agente/models/Agente.js +44 -0
- package/esm2015/lib/components/agente/services/agente.service.js +62 -0
- package/esm2015/lib/components/almacen/models/Almacen.js +40 -0
- package/esm2015/lib/components/almacen/services/almacen.service.js +44 -0
- package/esm2015/lib/components/banco/models/Banco.js +31 -0
- package/esm2015/lib/components/banco/services/banco.service.js +28 -0
- package/esm2015/lib/components/caja/session-create/session-create.component.js +147 -0
- package/esm2015/lib/components/caja/sessionCaja.service.js +36 -0
- package/esm2015/lib/components/catalogoTipo/models/CatalogoTipo.js +22 -0
- package/esm2015/lib/components/catalogoTipo/services/catalogoTipo.service.js +28 -0
- package/esm2015/lib/components/clasificadorTipo/models/ClasificadorTipo.js +22 -0
- package/esm2015/lib/components/clasificadorTipo/services/clasificadorTipo.service.js +28 -0
- package/esm2015/lib/components/claveAumentoDisminucion/services/clave-aumento-disminucion.service.js +28 -0
- package/esm2015/lib/components/claveMovimiento/models/ClaveMovimiento.js +50 -0
- package/esm2015/lib/components/claveMovimiento/services/claveMovimiento.service.js +28 -0
- package/esm2015/lib/components/cliente/models/Cliente.js +90 -0
- package/esm2015/lib/components/cliente/models/ClienteCuentaBanco.js +28 -0
- package/esm2015/lib/components/cliente/models/ClienteFlete.js +29 -0
- package/esm2015/lib/components/cliente/select/select-cliente.component.js +140 -0
- package/esm2015/lib/components/cliente/services/cliente.service.js +35 -0
- package/esm2015/lib/components/cliente/services/clienteCuentaBanco.service.js +45 -0
- package/esm2015/lib/components/cliente/services/clienteFlete.service.js +45 -0
- package/esm2015/lib/components/contacto/models/DatoContacto.js +23 -0
- package/esm2015/lib/components/contacto/services/datoContacto.service.js +28 -0
- package/esm2015/lib/components/dato-direccion/models/DatoDireccion.js +41 -0
- package/esm2015/lib/components/dato-direccion/services/datoDireccion.service.js +28 -0
- package/esm2015/lib/components/departamento/models/Departamento.js +23 -0
- package/esm2015/lib/components/departamento/services/departamento.service.js +28 -0
- package/esm2015/lib/components/empresa/models/ConfiguracionEmpresaAdministrativa.js +67 -0
- package/esm2015/lib/components/empresa/models/Empresa.js +31 -0
- package/esm2015/lib/components/empresa/services/empresa.service.js +43 -0
- package/esm2015/lib/components/error404/error404.component.js +23 -0
- package/esm2015/lib/components/flete/models/Flete.js +18 -0
- package/esm2015/lib/components/flete/services/flete.service.js +36 -0
- package/esm2015/lib/components/formaPago/models/FormaPago.js +24 -0
- package/esm2015/lib/components/formaPago/services/FormaPago.service.js +28 -0
- package/esm2015/lib/components/loading/loading.component.js +61 -0
- package/esm2015/lib/components/loading/loading.service.js +47 -0
- package/esm2015/lib/components/loading-screen/loading-screen.component.js +100 -0
- package/esm2015/lib/components/loading-screen/loading-screen.service.js +55 -0
- package/esm2015/lib/components/login-modal/login-modal.component.js +129 -0
- package/esm2015/lib/components/login-modal/login-modal.service.js +31 -0
- package/esm2015/lib/components/moneda/models/Moneda.js +30 -0
- package/esm2015/lib/components/moneda/services/moneda.service.js +36 -0
- package/esm2015/lib/components/pdfModal/pdf-modal.component.js +130 -0
- package/esm2015/lib/components/pdfModal/pdf-modal.service.js +49 -0
- package/esm2015/lib/components/persona-fisica/models/EstadoCivil.js +20 -0
- package/esm2015/lib/components/persona-fisica/models/Genero.js +18 -0
- package/esm2015/lib/components/persona-fisica/models/Persona.js +35 -0
- package/esm2015/lib/components/persona-fisica/models/PersonaFisica.js +25 -0
- package/esm2015/lib/components/persona-fisica/services/personaFisica.service.js +48 -0
- package/esm2015/lib/components/proveedor/models/Proveedor.js +50 -0
- package/esm2015/lib/components/proveedor/models/ProveedorCuentaBanco.js +28 -0
- package/esm2015/lib/components/proveedor/models/ProveedorFlete.js +29 -0
- package/esm2015/lib/components/proveedor/select/select-proveedor.component.js +124 -0
- package/esm2015/lib/components/proveedor/services/proveedor.service.js +36 -0
- package/esm2015/lib/components/proveedor/services/proveedorCuentaBanco.service.js +45 -0
- package/esm2015/lib/components/proveedor/services/proveedorFlete.service.js +45 -0
- package/esm2015/lib/components/seleccion-articulo-informacion/seleccion-articulo-informacion.component.js +117 -0
- package/esm2015/lib/components/seleccion-articulo-informacion/services/articulo-informacion.service.js +45 -0
- package/esm2015/lib/components/selecciona-articulo/selecciona-articulo.component.js +226 -0
- package/esm2015/lib/components/selecciona-articulo/stock.service.js +67 -0
- package/esm2015/lib/components/serieDocumento/models/SerieDocumento.js +58 -0
- package/esm2015/lib/components/serieDocumento/services/serieDocumento.service.js +49 -0
- package/esm2015/lib/components/tipo-contacto/models/TipoContacto.js +20 -0
- package/esm2015/lib/components/tipo-contacto/services/tipoContacto.service.js +28 -0
- package/esm2015/lib/components/ubicacion/models/Ubicacion.js +38 -0
- package/esm2015/lib/components/ubicacion/services/ubicacion.service.js +28 -0
- package/esm2015/lib/contabilidad/componentes/cclista/cclista.component.js +260 -0
- package/esm2015/lib/contabilidad/componentes/ccseleccion-dialog/ccseleccion-dialog.component.js +81 -0
- package/esm2015/lib/contabilidad/modelos/cuentaContable.model.js +47 -0
- package/esm2015/lib/contabilidad/modelos/normaInfoFinanciera.model.js +22 -0
- package/esm2015/lib/contabilidad/servicios/cuentacontable.service.js +42 -0
- package/esm2015/lib/globalPrimeNg.js +73 -0
- package/esm2015/lib/httpInterceptor/httpInterceptor.js +142 -0
- package/esm2015/lib/importComponents.js +32 -0
- package/esm2015/lib/importComponetsConta.js +12 -0
- package/esm2015/lib/models/PersonaMoral.js +29 -0
- package/esm2015/lib/models/Usuario.js +21 -0
- package/esm2015/lib/models/auth.js +15 -0
- package/esm2015/lib/services/auth.service.js +331 -0
- package/esm2015/lib/services/authenticated.service.js +127 -0
- package/esm2015/lib/services/canActivateGuard.service.ts.js +53 -0
- package/esm2015/lib/services/catalogo-adicional.service.js +36 -0
- package/esm2015/lib/services/controlAcceso.service.js +80 -0
- package/esm2015/lib/services/crud.service.js +114 -0
- package/esm2015/lib/services/file.service.js +135 -0
- package/esm2015/lib/services/global.service.js +116 -0
- package/esm2015/lib/services/init.service.js +103 -0
- package/esm2015/lib/services/message.service.js +111 -0
- package/esm2015/lib/services/paginate.service.js +104 -0
- package/esm2015/lib/services/personaMoral.service.js +28 -0
- package/esm2015/lib/services/versionCheck.service.js +103 -0
- package/esm2015/lib/utils/tipo_catalogo.ts.js +18 -0
- package/esm2015/public_api.js +100 -0
- package/esm2015/visorus-erp-core.js +15 -0
- package/esm5/lib/app.module.js +60 -0
- package/esm5/lib/components/acreedor/select/select-acreedor.component.js +139 -0
- package/esm5/lib/components/acreedor/services/acreedor.service.js +38 -0
- package/esm5/lib/components/acreedor/services/acreedorCuentaContable.js +49 -0
- package/esm5/lib/components/agente/models/Agente.js +46 -0
- package/esm5/lib/components/agente/services/agente.service.js +75 -0
- package/esm5/lib/components/almacen/models/Almacen.js +43 -0
- package/esm5/lib/components/almacen/services/almacen.service.js +49 -0
- package/esm5/lib/components/banco/models/Banco.js +33 -0
- package/esm5/lib/components/banco/services/banco.service.js +29 -0
- package/esm5/lib/components/caja/session-create/session-create.component.js +181 -0
- package/esm5/lib/components/caja/sessionCaja.service.js +38 -0
- package/esm5/lib/components/catalogoTipo/models/CatalogoTipo.js +25 -0
- package/esm5/lib/components/catalogoTipo/services/catalogoTipo.service.js +29 -0
- package/esm5/lib/components/clasificadorTipo/models/ClasificadorTipo.js +25 -0
- package/esm5/lib/components/clasificadorTipo/services/clasificadorTipo.service.js +29 -0
- package/esm5/lib/components/claveAumentoDisminucion/services/clave-aumento-disminucion.service.js +29 -0
- package/esm5/lib/components/claveMovimiento/models/ClaveMovimiento.js +53 -0
- package/esm5/lib/components/claveMovimiento/services/claveMovimiento.service.js +29 -0
- package/esm5/lib/components/cliente/models/Cliente.js +92 -0
- package/esm5/lib/components/cliente/models/ClienteCuentaBanco.js +30 -0
- package/esm5/lib/components/cliente/models/ClienteFlete.js +30 -0
- package/esm5/lib/components/cliente/select/select-cliente.component.js +157 -0
- package/esm5/lib/components/cliente/services/cliente.service.js +40 -0
- package/esm5/lib/components/cliente/services/clienteCuentaBanco.service.js +51 -0
- package/esm5/lib/components/cliente/services/clienteFlete.service.js +51 -0
- package/esm5/lib/components/contacto/models/DatoContacto.js +25 -0
- package/esm5/lib/components/contacto/services/datoContacto.service.js +29 -0
- package/esm5/lib/components/dato-direccion/models/DatoDireccion.js +43 -0
- package/esm5/lib/components/dato-direccion/services/datoDireccion.service.js +29 -0
- package/esm5/lib/components/departamento/models/Departamento.js +25 -0
- package/esm5/lib/components/departamento/services/departamento.service.js +29 -0
- package/esm5/lib/components/empresa/models/ConfiguracionEmpresaAdministrativa.js +69 -0
- package/esm5/lib/components/empresa/models/Empresa.js +33 -0
- package/esm5/lib/components/empresa/services/empresa.service.js +48 -0
- package/esm5/lib/components/error404/error404.component.js +29 -0
- package/esm5/lib/components/flete/models/Flete.js +21 -0
- package/esm5/lib/components/flete/services/flete.service.js +38 -0
- package/esm5/lib/components/formaPago/models/FormaPago.js +27 -0
- package/esm5/lib/components/formaPago/services/FormaPago.service.js +29 -0
- package/esm5/lib/components/loading/loading.component.js +61 -0
- package/esm5/lib/components/loading/loading.service.js +59 -0
- package/esm5/lib/components/loading-screen/loading-screen.component.js +104 -0
- package/esm5/lib/components/loading-screen/loading-screen.service.js +67 -0
- package/esm5/lib/components/login-modal/login-modal.component.js +137 -0
- package/esm5/lib/components/login-modal/login-modal.service.js +36 -0
- package/esm5/lib/components/moneda/models/Moneda.js +33 -0
- package/esm5/lib/components/moneda/services/moneda.service.js +38 -0
- package/esm5/lib/components/pdfModal/pdf-modal.component.js +107 -0
- package/esm5/lib/components/pdfModal/pdf-modal.service.js +59 -0
- package/esm5/lib/components/persona-fisica/models/EstadoCivil.js +23 -0
- package/esm5/lib/components/persona-fisica/models/Genero.js +21 -0
- package/esm5/lib/components/persona-fisica/models/Persona.js +37 -0
- package/esm5/lib/components/persona-fisica/models/PersonaFisica.js +27 -0
- package/esm5/lib/components/persona-fisica/services/personaFisica.service.js +56 -0
- package/esm5/lib/components/proveedor/models/Proveedor.js +52 -0
- package/esm5/lib/components/proveedor/models/ProveedorCuentaBanco.js +30 -0
- package/esm5/lib/components/proveedor/models/ProveedorFlete.js +30 -0
- package/esm5/lib/components/proveedor/select/select-proveedor.component.js +139 -0
- package/esm5/lib/components/proveedor/services/proveedor.service.js +38 -0
- package/esm5/lib/components/proveedor/services/proveedorCuentaBanco.service.js +51 -0
- package/esm5/lib/components/proveedor/services/proveedorFlete.service.js +51 -0
- package/esm5/lib/components/seleccion-articulo-informacion/seleccion-articulo-informacion.component.js +137 -0
- package/esm5/lib/components/seleccion-articulo-informacion/services/articulo-informacion.service.js +51 -0
- package/esm5/lib/components/selecciona-articulo/selecciona-articulo.component.js +264 -0
- package/esm5/lib/components/selecciona-articulo/stock.service.js +75 -0
- package/esm5/lib/components/serieDocumento/models/SerieDocumento.js +61 -0
- package/esm5/lib/components/serieDocumento/services/serieDocumento.service.js +58 -0
- package/esm5/lib/components/tipo-contacto/models/TipoContacto.js +22 -0
- package/esm5/lib/components/tipo-contacto/services/tipoContacto.service.js +29 -0
- package/esm5/lib/components/ubicacion/models/Ubicacion.js +41 -0
- package/esm5/lib/components/ubicacion/services/ubicacion.service.js +29 -0
- package/esm5/lib/contabilidad/componentes/cclista/cclista.component.js +333 -0
- package/esm5/lib/contabilidad/componentes/ccseleccion-dialog/ccseleccion-dialog.component.js +94 -0
- package/esm5/lib/contabilidad/modelos/cuentaContable.model.js +49 -0
- package/esm5/lib/contabilidad/modelos/normaInfoFinanciera.model.js +25 -0
- package/esm5/lib/contabilidad/servicios/cuentacontable.service.js +47 -0
- package/esm5/lib/globalPrimeNg.js +73 -0
- package/esm5/lib/httpInterceptor/httpInterceptor.js +154 -0
- package/esm5/lib/importComponents.js +32 -0
- package/esm5/lib/importComponetsConta.js +12 -0
- package/esm5/lib/models/PersonaMoral.js +31 -0
- package/esm5/lib/models/Usuario.js +25 -0
- package/esm5/lib/models/auth.js +19 -0
- package/esm5/lib/services/auth.service.js +378 -0
- package/esm5/lib/services/authenticated.service.js +133 -0
- package/esm5/lib/services/canActivateGuard.service.ts.js +59 -0
- package/esm5/lib/services/catalogo-adicional.service.js +38 -0
- package/esm5/lib/services/controlAcceso.service.js +92 -0
- package/esm5/lib/services/crud.service.js +156 -0
- package/esm5/lib/services/file.service.js +157 -0
- package/esm5/lib/services/global.service.js +155 -0
- package/esm5/lib/services/init.service.js +108 -0
- package/esm5/lib/services/message.service.js +125 -0
- package/esm5/lib/services/paginate.service.js +115 -0
- package/esm5/lib/services/personaMoral.service.js +29 -0
- package/esm5/lib/services/versionCheck.service.js +117 -0
- package/esm5/lib/utils/tipo_catalogo.ts.js +22 -0
- package/esm5/public_api.js +100 -0
- package/esm5/visorus-erp-core.js +15 -0
- package/fesm2015/visorus-erp-core.js +5545 -0
- package/fesm2015/visorus-erp-core.js.map +1 -0
- package/fesm5/visorus-erp-core.js +6108 -0
- package/fesm5/visorus-erp-core.js.map +1 -0
- package/lib/app.module.d.ts +5 -0
- package/lib/components/acreedor/select/select-acreedor.component.d.ts +23 -0
- package/lib/components/acreedor/services/acreedor.service.d.ts +6 -0
- package/lib/components/acreedor/services/acreedorCuentaContable.d.ts +7 -0
- package/lib/components/agente/models/Agente.d.ts +23 -0
- package/lib/components/agente/services/agente.service.d.ts +9 -0
- package/lib/components/almacen/models/Almacen.d.ts +20 -0
- package/lib/components/almacen/services/almacen.service.d.ts +7 -0
- package/lib/components/banco/models/Banco.d.ts +13 -0
- package/lib/components/banco/services/banco.service.d.ts +5 -0
- package/lib/components/caja/session-create/session-create.component.d.ts +22 -0
- package/lib/components/caja/sessionCaja.service.d.ts +6 -0
- package/lib/components/catalogoTipo/models/CatalogoTipo.d.ts +9 -0
- package/lib/components/catalogoTipo/services/catalogoTipo.service.d.ts +5 -0
- package/lib/components/clasificadorTipo/models/ClasificadorTipo.d.ts +9 -0
- package/lib/components/clasificadorTipo/services/clasificadorTipo.service.d.ts +5 -0
- package/lib/components/claveAumentoDisminucion/services/clave-aumento-disminucion.service.d.ts +5 -0
- package/lib/components/claveMovimiento/models/ClaveMovimiento.d.ts +23 -0
- package/lib/components/claveMovimiento/services/claveMovimiento.service.d.ts +5 -0
- package/lib/components/cliente/models/Cliente.d.ts +44 -0
- package/lib/components/cliente/models/ClienteCuentaBanco.d.ts +12 -0
- package/lib/components/cliente/models/ClienteFlete.d.ts +11 -0
- package/lib/components/cliente/select/select-cliente.component.d.ts +24 -0
- package/lib/components/cliente/services/cliente.service.d.ts +6 -0
- package/lib/components/cliente/services/clienteCuentaBanco.service.d.ts +7 -0
- package/lib/components/cliente/services/clienteFlete.service.d.ts +7 -0
- package/lib/components/contacto/models/DatoContacto.d.ts +9 -0
- package/lib/components/contacto/services/datoContacto.service.d.ts +5 -0
- package/lib/components/dato-direccion/models/DatoDireccion.d.ts +18 -0
- package/lib/components/dato-direccion/services/datoDireccion.service.d.ts +5 -0
- package/lib/components/departamento/models/Departamento.d.ts +9 -0
- package/lib/components/departamento/services/departamento.service.d.ts +5 -0
- package/lib/components/empresa/models/ConfiguracionEmpresaAdministrativa.d.ts +31 -0
- package/lib/components/empresa/models/Empresa.d.ts +13 -0
- package/lib/components/empresa/services/empresa.service.d.ts +7 -0
- package/lib/components/error404/error404.component.d.ts +5 -0
- package/lib/components/flete/models/Flete.d.ts +7 -0
- package/lib/components/flete/services/flete.service.d.ts +6 -0
- package/lib/components/formaPago/models/FormaPago.d.ts +10 -0
- package/lib/components/formaPago/services/FormaPago.service.d.ts +5 -0
- package/lib/components/loading/loading.component.d.ts +7 -0
- package/lib/components/loading/loading.service.d.ts +7 -0
- package/lib/components/loading-screen/loading-screen.component.d.ts +17 -0
- package/lib/components/loading-screen/loading-screen.service.d.ts +8 -0
- package/lib/components/login-modal/login-modal.component.d.ts +13 -0
- package/lib/components/login-modal/login-modal.service.d.ts +5 -0
- package/lib/components/moneda/models/Moneda.d.ts +13 -0
- package/lib/components/moneda/services/moneda.service.d.ts +6 -0
- package/lib/components/pdfModal/pdf-modal.component.d.ts +13 -0
- package/lib/components/pdfModal/pdf-modal.service.d.ts +9 -0
- package/lib/components/persona-fisica/models/EstadoCivil.d.ts +8 -0
- package/lib/components/persona-fisica/models/Genero.d.ts +7 -0
- package/lib/components/persona-fisica/models/Persona.d.ts +16 -0
- package/lib/components/persona-fisica/models/PersonaFisica.d.ts +11 -0
- package/lib/components/persona-fisica/services/personaFisica.service.d.ts +8 -0
- package/lib/components/proveedor/models/Proveedor.d.ts +23 -0
- package/lib/components/proveedor/models/ProveedorCuentaBanco.d.ts +12 -0
- package/lib/components/proveedor/models/ProveedorFlete.d.ts +11 -0
- package/lib/components/proveedor/select/select-proveedor.component.d.ts +23 -0
- package/lib/components/proveedor/services/proveedor.service.d.ts +6 -0
- package/lib/components/proveedor/services/proveedorCuentaBanco.service.d.ts +7 -0
- package/lib/components/proveedor/services/proveedorFlete.service.d.ts +7 -0
- package/lib/components/seleccion-articulo-informacion/seleccion-articulo-informacion.component.d.ts +26 -0
- package/lib/components/seleccion-articulo-informacion/services/articulo-informacion.service.d.ts +7 -0
- package/lib/components/selecciona-articulo/selecciona-articulo.component.d.ts +38 -0
- package/lib/components/selecciona-articulo/stock.service.d.ts +7 -0
- package/lib/components/serieDocumento/models/SerieDocumento.d.ts +28 -0
- package/lib/components/serieDocumento/services/serieDocumento.service.d.ts +8 -0
- package/lib/components/tipo-contacto/models/TipoContacto.d.ts +7 -0
- package/lib/components/tipo-contacto/services/tipoContacto.service.d.ts +5 -0
- package/lib/components/ubicacion/models/Ubicacion.d.ts +17 -0
- package/lib/components/ubicacion/services/ubicacion.service.d.ts +5 -0
- package/lib/contabilidad/componentes/cclista/cclista.component.d.ts +23 -0
- package/lib/contabilidad/componentes/ccseleccion-dialog/ccseleccion-dialog.component.d.ts +21 -0
- package/lib/contabilidad/modelos/cuentaContable.model.d.ts +22 -0
- package/lib/contabilidad/modelos/normaInfoFinanciera.model.d.ts +8 -0
- package/lib/contabilidad/servicios/cuentacontable.service.d.ts +7 -0
- package/lib/globalPrimeNg.d.ts +4 -0
- package/lib/httpInterceptor/httpInterceptor.d.ts +14 -0
- package/lib/importComponents.d.ts +13 -0
- package/lib/importComponetsConta.d.ts +3 -0
- package/lib/models/PersonaMoral.d.ts +13 -0
- package/lib/models/Usuario.d.ts +8 -0
- package/lib/models/auth.d.ts +6 -0
- package/lib/services/auth.service.d.ts +29 -0
- package/lib/services/authenticated.service.d.ts +11 -0
- package/lib/services/canActivateGuard.service.ts.d.ts +10 -0
- package/lib/services/catalogo-adicional.service.d.ts +6 -0
- package/lib/services/controlAcceso.service.d.ts +11 -0
- package/lib/services/crud.service.d.ts +20 -0
- package/lib/services/file.service.d.ts +11 -0
- package/lib/services/global.service.d.ts +22 -0
- package/lib/services/init.service.d.ts +9 -0
- package/lib/services/message.service.d.ts +8 -0
- package/lib/services/paginate.service.d.ts +17 -0
- package/lib/services/personaMoral.service.d.ts +5 -0
- package/lib/services/versionCheck.service.d.ts +11 -0
- package/lib/utils/tipo_catalogo.ts.d.ts +4 -0
- package/package.json +24 -0
- package/public_api.d.ts +92 -0
- package/visorus-erp-core.d.ts +10 -0
- package/visorus-erp-core.metadata.json +1 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable, Output, EventEmitter } from "@angular/core";
|
|
6
|
+
import { HttpClient, HttpHeaders } from "@angular/common/http";
|
|
7
|
+
import { Usuario } from '../models/Usuario';
|
|
8
|
+
import { Auth } from '../models/auth';
|
|
9
|
+
import { LoadingService } from '../components/loading/loading.service';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/common/http";
|
|
12
|
+
import * as i2 from "../components/loading/loading.service";
|
|
13
|
+
export class AuthService {
|
|
14
|
+
/**
|
|
15
|
+
* @param {?} httpClient
|
|
16
|
+
* @param {?} loadingService
|
|
17
|
+
*/
|
|
18
|
+
constructor(httpClient, loadingService) {
|
|
19
|
+
this.httpClient = httpClient;
|
|
20
|
+
this.loadingService = loadingService;
|
|
21
|
+
this.url_host = '';
|
|
22
|
+
this.login = new EventEmitter();
|
|
23
|
+
this.seleccionEmpresa = new EventEmitter();
|
|
24
|
+
this.auth = new Auth();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @param {?} user
|
|
28
|
+
* @param {?} key
|
|
29
|
+
* @return {?}
|
|
30
|
+
*/
|
|
31
|
+
setlogin(user, key) {
|
|
32
|
+
localStorage.setItem('lang', 'es');
|
|
33
|
+
/** @type {?} */
|
|
34
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
35
|
+
if (config)
|
|
36
|
+
if (config.url)
|
|
37
|
+
this.url_host = config.url;
|
|
38
|
+
return this.httpClient.post(this.url_host + '/login' + (key ? '/' + key : ''), user);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @param {?} user
|
|
42
|
+
* @return {?}
|
|
43
|
+
*/
|
|
44
|
+
startAuth(user) {
|
|
45
|
+
this.auth = user;
|
|
46
|
+
this.login.emit(this.auth);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @return {?}
|
|
50
|
+
*/
|
|
51
|
+
isLogin() {
|
|
52
|
+
return localStorage.getItem('usuario') !== null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @return {?}
|
|
56
|
+
*/
|
|
57
|
+
quitarUsuario() {
|
|
58
|
+
localStorage.removeItem('usuario');
|
|
59
|
+
this.auth.login = false;
|
|
60
|
+
this.login.emit(this.auth);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @return {?}
|
|
64
|
+
*/
|
|
65
|
+
verificaLogin() {
|
|
66
|
+
this.usuario = this.getUser();
|
|
67
|
+
if (this.usuario.access_token) {
|
|
68
|
+
this.getDetalsUser().subscribe((/**
|
|
69
|
+
* @param {?} resp
|
|
70
|
+
* @return {?}
|
|
71
|
+
*/
|
|
72
|
+
(resp) => {
|
|
73
|
+
this.auth.usuarioDetalles = resp;
|
|
74
|
+
this.auth.login = true;
|
|
75
|
+
this.login.emit(this.auth);
|
|
76
|
+
}), (/**
|
|
77
|
+
* @param {?} error
|
|
78
|
+
* @return {?}
|
|
79
|
+
*/
|
|
80
|
+
(error) => {
|
|
81
|
+
this.quitarUsuario();
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this.auth.usuarioDetalles = null;
|
|
86
|
+
this.auth.login = false;
|
|
87
|
+
this.login.emit(this.auth);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @return {?}
|
|
92
|
+
*/
|
|
93
|
+
loginOut() {
|
|
94
|
+
this.quitarEmpresaAdministrativa().subscribe((/**
|
|
95
|
+
* @param {?} data
|
|
96
|
+
* @return {?}
|
|
97
|
+
*/
|
|
98
|
+
(data) => {
|
|
99
|
+
localStorage.removeItem('usuario');
|
|
100
|
+
}), (/**
|
|
101
|
+
* @param {?} error
|
|
102
|
+
* @return {?}
|
|
103
|
+
*/
|
|
104
|
+
error => {
|
|
105
|
+
localStorage.removeItem('usuario');
|
|
106
|
+
}));
|
|
107
|
+
localStorage.setItem('lang', 'es');
|
|
108
|
+
this.auth.login = false;
|
|
109
|
+
this.login.emit(this.auth);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @return {?}
|
|
113
|
+
*/
|
|
114
|
+
getUser() {
|
|
115
|
+
this.usuario = new Usuario();
|
|
116
|
+
if (this.isLogin()) {
|
|
117
|
+
/** @type {?} */
|
|
118
|
+
let us = localStorage.getItem('usuario');
|
|
119
|
+
if (us) {
|
|
120
|
+
this.usuario = JSON.parse(us);
|
|
121
|
+
}
|
|
122
|
+
return this.usuario;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
return this.usuario;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* @return {?}
|
|
130
|
+
*/
|
|
131
|
+
getLang() {
|
|
132
|
+
/** @type {?} */
|
|
133
|
+
let lang = localStorage.getItem('lang');
|
|
134
|
+
return lang ? lang : 'es';
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @param {?} e
|
|
138
|
+
* @return {?}
|
|
139
|
+
*/
|
|
140
|
+
selectEmpresa(e) {
|
|
141
|
+
this.seleccionEmpresa.emit(e);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* @return {?}
|
|
145
|
+
*/
|
|
146
|
+
quitarEmpresaAdministrativa() {
|
|
147
|
+
/** @type {?} */
|
|
148
|
+
let usuario;
|
|
149
|
+
/** @type {?} */
|
|
150
|
+
let token_type = '';
|
|
151
|
+
/** @type {?} */
|
|
152
|
+
let access_token = '';
|
|
153
|
+
usuario = (/** @type {?} */ (JSON.parse(localStorage.getItem("usuario"))));
|
|
154
|
+
if (usuario) {
|
|
155
|
+
token_type = usuario.token_type,
|
|
156
|
+
access_token = usuario.access_token;
|
|
157
|
+
}
|
|
158
|
+
/** @type {?} */
|
|
159
|
+
let httpOptions = {
|
|
160
|
+
headers: new HttpHeaders({
|
|
161
|
+
'Accept-type': 'application/json',
|
|
162
|
+
'Authorization': token_type + ' ' + access_token
|
|
163
|
+
})
|
|
164
|
+
};
|
|
165
|
+
/** @type {?} */
|
|
166
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
167
|
+
if (config)
|
|
168
|
+
if (config.url)
|
|
169
|
+
this.url_host = config.url;
|
|
170
|
+
return this.httpClient.post(this.url_host + '/usuario/setEmpresa', { id: 0 }, httpOptions);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* @param {?} empresa
|
|
174
|
+
* @return {?}
|
|
175
|
+
*/
|
|
176
|
+
setEmpresa(empresa) {
|
|
177
|
+
// setEmpresaAdministrativa
|
|
178
|
+
/** @type {?} */
|
|
179
|
+
let usuario;
|
|
180
|
+
/** @type {?} */
|
|
181
|
+
let token_type = '';
|
|
182
|
+
/** @type {?} */
|
|
183
|
+
let access_token = '';
|
|
184
|
+
usuario = (/** @type {?} */ (JSON.parse(localStorage.getItem("usuario"))));
|
|
185
|
+
if (usuario) {
|
|
186
|
+
token_type = usuario.token_type,
|
|
187
|
+
access_token = usuario.access_token;
|
|
188
|
+
}
|
|
189
|
+
/** @type {?} */
|
|
190
|
+
let httpOptions = {
|
|
191
|
+
headers: new HttpHeaders({
|
|
192
|
+
'Accept-type': 'application/json',
|
|
193
|
+
'Authorization': token_type + ' ' + access_token
|
|
194
|
+
})
|
|
195
|
+
};
|
|
196
|
+
/** @type {?} */
|
|
197
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
198
|
+
if (config)
|
|
199
|
+
if (config.url)
|
|
200
|
+
this.url_host = config.url;
|
|
201
|
+
return this.httpClient.post(this.url_host + '/usuario/setEmpresa', empresa, httpOptions);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @param {?} modulo
|
|
205
|
+
* @return {?}
|
|
206
|
+
*/
|
|
207
|
+
setModulo(modulo) {
|
|
208
|
+
// setEmpresaAdministrativa
|
|
209
|
+
/** @type {?} */
|
|
210
|
+
let usuario;
|
|
211
|
+
/** @type {?} */
|
|
212
|
+
let token_type = '';
|
|
213
|
+
/** @type {?} */
|
|
214
|
+
let access_token = '';
|
|
215
|
+
usuario = (/** @type {?} */ (JSON.parse(localStorage.getItem("usuario"))));
|
|
216
|
+
if (usuario) {
|
|
217
|
+
token_type = usuario.token_type,
|
|
218
|
+
access_token = usuario.access_token;
|
|
219
|
+
}
|
|
220
|
+
/** @type {?} */
|
|
221
|
+
let httpOptions = {
|
|
222
|
+
headers: new HttpHeaders({
|
|
223
|
+
'Accept-type': 'application/json',
|
|
224
|
+
'Authorization': token_type + ' ' + access_token
|
|
225
|
+
})
|
|
226
|
+
};
|
|
227
|
+
/** @type {?} */
|
|
228
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
229
|
+
if (config)
|
|
230
|
+
if (config.url)
|
|
231
|
+
this.url_host = config.url;
|
|
232
|
+
return this.httpClient.post(this.url_host + '/usuario/setModulo', modulo, httpOptions);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* @return {?}
|
|
236
|
+
*/
|
|
237
|
+
quitarModulo() {
|
|
238
|
+
// setEmpresaAdministrativa
|
|
239
|
+
/** @type {?} */
|
|
240
|
+
let usuario;
|
|
241
|
+
/** @type {?} */
|
|
242
|
+
let token_type = '';
|
|
243
|
+
/** @type {?} */
|
|
244
|
+
let access_token = '';
|
|
245
|
+
usuario = (/** @type {?} */ (JSON.parse(localStorage.getItem("usuario"))));
|
|
246
|
+
if (usuario) {
|
|
247
|
+
token_type = usuario.token_type,
|
|
248
|
+
access_token = usuario.access_token;
|
|
249
|
+
}
|
|
250
|
+
/** @type {?} */
|
|
251
|
+
let httpOptions = {
|
|
252
|
+
headers: new HttpHeaders({
|
|
253
|
+
'Accept-type': 'application/json',
|
|
254
|
+
'Authorization': token_type + ' ' + access_token
|
|
255
|
+
})
|
|
256
|
+
};
|
|
257
|
+
/** @type {?} */
|
|
258
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
259
|
+
if (config)
|
|
260
|
+
if (config.url)
|
|
261
|
+
this.url_host = config.url;
|
|
262
|
+
return this.httpClient.post(this.url_host + '/usuario/setModulo', { id: 0 }, httpOptions);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* @return {?}
|
|
266
|
+
*/
|
|
267
|
+
getDetalsUser() {
|
|
268
|
+
/** @type {?} */
|
|
269
|
+
let usuario;
|
|
270
|
+
/** @type {?} */
|
|
271
|
+
let token_type = '';
|
|
272
|
+
/** @type {?} */
|
|
273
|
+
let access_token = '';
|
|
274
|
+
usuario = (/** @type {?} */ (JSON.parse(localStorage.getItem("usuario"))));
|
|
275
|
+
if (usuario) {
|
|
276
|
+
token_type = usuario.token_type,
|
|
277
|
+
access_token = usuario.access_token;
|
|
278
|
+
}
|
|
279
|
+
/** @type {?} */
|
|
280
|
+
let httpOptions = {
|
|
281
|
+
headers: new HttpHeaders({
|
|
282
|
+
'Accept-type': 'application/json',
|
|
283
|
+
'Authorization': token_type + ' ' + access_token
|
|
284
|
+
})
|
|
285
|
+
};
|
|
286
|
+
/** @type {?} */
|
|
287
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
288
|
+
if (config)
|
|
289
|
+
if (config.url)
|
|
290
|
+
this.url_host = config.url;
|
|
291
|
+
return this.httpClient.get(this.url_host + '/usuario/obtieneUsuarioActual', httpOptions);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
AuthService.decorators = [
|
|
295
|
+
{ type: Injectable, args: [{
|
|
296
|
+
providedIn: 'root'
|
|
297
|
+
},] }
|
|
298
|
+
];
|
|
299
|
+
/** @nocollapse */
|
|
300
|
+
AuthService.ctorParameters = () => [
|
|
301
|
+
{ type: HttpClient },
|
|
302
|
+
{ type: LoadingService }
|
|
303
|
+
];
|
|
304
|
+
AuthService.propDecorators = {
|
|
305
|
+
login: [{ type: Output }],
|
|
306
|
+
seleccionEmpresa: [{ type: Output }]
|
|
307
|
+
};
|
|
308
|
+
/** @nocollapse */ AuthService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function AuthService_Factory() { return new AuthService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.LoadingService)); }, token: AuthService, providedIn: "root" });
|
|
309
|
+
if (false) {
|
|
310
|
+
/** @type {?} */
|
|
311
|
+
AuthService.prototype.usuario;
|
|
312
|
+
/** @type {?} */
|
|
313
|
+
AuthService.prototype.url_host;
|
|
314
|
+
/** @type {?} */
|
|
315
|
+
AuthService.prototype.auth;
|
|
316
|
+
/** @type {?} */
|
|
317
|
+
AuthService.prototype.login;
|
|
318
|
+
/** @type {?} */
|
|
319
|
+
AuthService.prototype.seleccionEmpresa;
|
|
320
|
+
/**
|
|
321
|
+
* @type {?}
|
|
322
|
+
* @private
|
|
323
|
+
*/
|
|
324
|
+
AuthService.prototype.httpClient;
|
|
325
|
+
/**
|
|
326
|
+
* @type {?}
|
|
327
|
+
* @private
|
|
328
|
+
*/
|
|
329
|
+
AuthService.prototype.loadingService;
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdmlzb3J1cy1lcnAtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBS3ZFLE1BQU0sT0FBTyxXQUFXOzs7OztJQU1wQixZQUNZLFVBQXNCLEVBQ3RCLGNBQThCO1FBRDlCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTjFDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFSixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7Ozs7SUFFRCxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUc7UUFDZCxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzs7WUFDL0IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU07WUFDTixJQUFJLE1BQU0sQ0FBQyxHQUFHO2dCQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztR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Yzs7O29CQVNsQixNQUFNOytCQUNOLE1BQU07Ozs7O0lBSlAsOEJBQWlCOztJQUNqQiwrQkFBYzs7SUFDZCwyQkFBVzs7SUFDWCw0QkFBcUM7O0lBQ3JDLHVDQUFnRDs7Ozs7SUFFNUMsaUNBQThCOzs7OztJQUM5QixxQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgVXN1YXJpbyB9IGZyb20gJy4uL21vZGVscy9Vc3VhcmlvJztcbmltcG9ydCB7IEF1dGggfSBmcm9tICcuLi9tb2RlbHMvYXV0aCc7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcbiAgICB1c3VhcmlvOiBVc3VhcmlvO1xuICAgIHVybF9ob3N0ID0gJyc7XG4gICAgYXV0aDogQXV0aDtcbiAgICBAT3V0cHV0KCkgbG9naW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHNlbGVjY2lvbkVtcHJlc2EgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5hdXRoID0gbmV3IEF1dGgoKTtcbiAgICB9XG5cbiAgICBzZXRsb2dpbih1c2VyLCBrZXkpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xhbmcnLCAnZXMnKTtcbiAgICAgICAgbGV0IGNvbmZpZyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb25maWdcIikpO1xuICAgICAgICBpZiAoY29uZmlnKVxuICAgICAgICAgICAgaWYgKGNvbmZpZy51cmwpXG4gICAgICAgICAgICAgICAgdGhpcy51cmxfaG9zdCA9IGNvbmZpZy51cmw7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLnVybF9ob3N0ICsgJy9sb2dpbicgKyAoa2V5ID8gJy8nICsga2V5IDogJycpLCB1c2VyKTtcbiAgICB9XG4gICAgc3RhcnRBdXRoKHVzZXIpIHtcbiAgICAgICAgdGhpcy5hdXRoID0gdXNlcjtcbiAgICAgICAgdGhpcy5sb2dpbi5lbWl0KHRoaXMuYXV0aCk7XG4gICAgfVxuICAgIGlzTG9naW4oKSB7XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXN1YXJpbycpICE9PSBudWxsO1xuICAgIH1cblxuICAgIHF1aXRhclVzdWFyaW8oKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c3VhcmlvJyk7XG4gICAgICAgIHRoaXMuYXV0aC5sb2dpbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvZ2luLmVtaXQodGhpcy5hdXRoKTtcbiAgICB9XG5cblxuICAgIHZlcmlmaWNhTG9naW4oKSB7XG4gICAgICAgIHRoaXMudXN1YXJpbyA9IHRoaXMuZ2V0VXNlcigpO1xuICAgICAgICBpZiAodGhpcy51c3VhcmlvLmFjY2Vzc190b2tlbikge1xuICAgICAgICAgICAgdGhpcy5nZXREZXRhbHNVc2VyKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRoLnVzdWFyaW9EZXRhbGxlcyA9IHJlc3A7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0aC5sb2dpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9naW4uZW1pdCh0aGlzLmF1dGgpO1xuICAgICAgICAgICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVpdGFyVXN1YXJpbygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmF1dGgudXN1YXJpb0RldGFsbGVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYXV0aC5sb2dpbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5sb2dpbi5lbWl0KHRoaXMuYXV0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGxvZ2luT3V0KCkge1xuXG4gICAgICAgIHRoaXMucXVpdGFyRW1wcmVzYUFkbWluaXN0cmF0aXZhKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd1c3VhcmlvJyk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3VzdWFyaW8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZycsICdlcycpO1xuICAgICAgICB0aGlzLmF1dGgubG9naW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sb2dpbi5lbWl0KHRoaXMuYXV0aCk7XG4gICAgfVxuXG4gICAgZ2V0VXNlcigpIHtcbiAgICAgICAgdGhpcy51c3VhcmlvID0gbmV3IFVzdWFyaW8oKTtcbiAgICAgICAgaWYgKHRoaXMuaXNMb2dpbigpKSB7XG4gICAgICAgICAgICBsZXQgdXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXN1YXJpbycpO1xuICAgICAgICAgICAgaWYgKHVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c3VhcmlvID0gSlNPTi5wYXJzZSh1cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVzdWFyaW87XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51c3VhcmlvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TGFuZygpIHtcbiAgICAgICAgbGV0IGxhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZycpO1xuICAgICAgICByZXR1cm4gbGFuZyA/IGxhbmcgOiAnZXMnO1xuICAgIH1cblxuICAgIHNlbGVjdEVtcHJlc2EoZSkge1xuICAgICAgICB0aGlzLnNlbGVjY2lvbkVtcHJlc2EuZW1pdChlKTtcbiAgICB9XG5cbiAgICBxdWl0YXJFbXByZXNhQWRtaW5pc3RyYXRpdmEoKSB7XG4gICAgICAgIGxldCB1c3VhcmlvOiBVc3VhcmlvO1xuICAgICAgICBsZXQgdG9rZW5fdHlwZSA9ICcnO1xuICAgICAgICBsZXQgYWNjZXNzX3Rva2VuID0gJyc7XG4gICAgICAgIHVzdWFyaW8gPSA8VXN1YXJpbz5KU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXN1YXJpb1wiKSk7XG4gICAgICAgIGlmICh1c3VhcmlvKSB7XG4gICAgICAgICAgICB0b2tlbl90eXBlID0gdXN1YXJpby50b2tlbl90eXBlLFxuICAgICAgICAgICAgICAgIGFjY2Vzc190b2tlbiA9IHVzdWFyaW8uYWNjZXNzX3Rva2VuXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiB0b2tlbl90eXBlICsgJyAnICsgYWNjZXNzX3Rva2VuXG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgICBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvbmZpZ1wiKSk7XG4gICAgICAgIGlmIChjb25maWcpXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybClcbiAgICAgICAgICAgICAgICB0aGlzLnVybF9ob3N0ID0gY29uZmlnLnVybDtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy51cmxfaG9zdCArICcvdXN1YXJpby9zZXRFbXByZXNhJywgeyBpZDogMCB9LCBodHRwT3B0aW9ucyk7XG4gICAgfVxuICAgIHNldEVtcHJlc2EoZW1wcmVzYSkge1xuICAgICAgICAvLyAgc2V0RW1wcmVzYUFkbWluaXN0cmF0aXZhXG4gICAgICAgIGxldCB1c3VhcmlvOiBVc3VhcmlvO1xuICAgICAgICBsZXQgdG9rZW5fdHlwZSA9ICcnO1xuICAgICAgICBsZXQgYWNjZXNzX3Rva2VuID0gJyc7XG4gICAgICAgIHVzdWFyaW8gPSA8VXN1YXJpbz5KU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXN1YXJpb1wiKSk7XG4gICAgICAgIGlmICh1c3VhcmlvKSB7XG4gICAgICAgICAgICB0b2tlbl90eXBlID0gdXN1YXJpby50b2tlbl90eXBlLFxuICAgICAgICAgICAgICAgIGFjY2Vzc190b2tlbiA9IHVzdWFyaW8uYWNjZXNzX3Rva2VuXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiB0b2tlbl90eXBlICsgJyAnICsgYWNjZXNzX3Rva2VuXG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgICBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvbmZpZ1wiKSk7XG4gICAgICAgIGlmIChjb25maWcpXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybClcbiAgICAgICAgICAgICAgICB0aGlzLnVybF9ob3N0ID0gY29uZmlnLnVybDtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QodGhpcy51cmxfaG9zdCArICcvdXN1YXJpby9zZXRFbXByZXNhJywgZW1wcmVzYSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cbiAgICBzZXRNb2R1bG8obW9kdWxvKSB7XG4gICAgICAgIC8vICBzZXRFbXByZXNhQWRtaW5pc3RyYXRpdmFcbiAgICAgICAgbGV0IHVzdWFyaW86IFVzdWFyaW87XG4gICAgICAgIGxldCB0b2tlbl90eXBlID0gJyc7XG4gICAgICAgIGxldCBhY2Nlc3NfdG9rZW4gPSAnJztcbiAgICAgICAgdXN1YXJpbyA9IDxVc3VhcmlvPkpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c3VhcmlvXCIpKTtcbiAgICAgICAgaWYgKHVzdWFyaW8pIHtcbiAgICAgICAgICAgIHRva2VuX3R5cGUgPSB1c3VhcmlvLnRva2VuX3R5cGUsXG4gICAgICAgICAgICAgICAgYWNjZXNzX3Rva2VuID0gdXN1YXJpby5hY2Nlc3NfdG9rZW5cbiAgICAgICAgfVxuICAgICAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdBY2NlcHQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRva2VuX3R5cGUgKyAnICcgKyBhY2Nlc3NfdG9rZW5cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICAgIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29uZmlnXCIpKTtcbiAgICAgICAgaWYgKGNvbmZpZylcbiAgICAgICAgICAgIGlmIChjb25maWcudXJsKVxuICAgICAgICAgICAgICAgIHRoaXMudXJsX2hvc3QgPSBjb25maWcudXJsO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLnVybF9ob3N0ICsgJy91c3VhcmlvL3NldE1vZHVsbycsIG1vZHVsbywgaHR0cE9wdGlvbnMpO1xuICAgIH1cbiAgICBxdWl0YXJNb2R1bG8oKSB7XG4gICAgICAgIC8vICBzZXRFbXByZXNhQWRtaW5pc3RyYXRpdmFcbiAgICAgICAgbGV0IHVzdWFyaW86IFVzdWFyaW87XG4gICAgICAgIGxldCB0b2tlbl90eXBlID0gJyc7XG4gICAgICAgIGxldCBhY2Nlc3NfdG9rZW4gPSAnJztcbiAgICAgICAgdXN1YXJpbyA9IDxVc3VhcmlvPkpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c3VhcmlvXCIpKTtcbiAgICAgICAgaWYgKHVzdWFyaW8pIHtcbiAgICAgICAgICAgIHRva2VuX3R5cGUgPSB1c3VhcmlvLnRva2VuX3R5cGUsXG4gICAgICAgICAgICAgICAgYWNjZXNzX3Rva2VuID0gdXN1YXJpby5hY2Nlc3NfdG9rZW5cbiAgICAgICAgfVxuICAgICAgICBsZXQgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdBY2NlcHQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRva2VuX3R5cGUgKyAnICcgKyBhY2Nlc3NfdG9rZW5cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICAgIGxldCBjb25maWcgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29uZmlnXCIpKTtcbiAgICAgICAgaWYgKGNvbmZpZylcbiAgICAgICAgICAgIGlmIChjb25maWcudXJsKVxuICAgICAgICAgICAgICAgIHRoaXMudXJsX2hvc3QgPSBjb25maWcudXJsO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdCh0aGlzLnVybF9ob3N0ICsgJy91c3VhcmlvL3NldE1vZHVsbycsIHsgaWQ6IDAgfSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cblxuICAgIGdldERldGFsc1VzZXIoKSB7XG4gICAgICAgIGxldCB1c3VhcmlvOiBVc3VhcmlvO1xuICAgICAgICBsZXQgdG9rZW5fdHlwZSA9ICcnO1xuICAgICAgICBsZXQgYWNjZXNzX3Rva2VuID0gJyc7XG4gICAgICAgIHVzdWFyaW8gPSA8VXN1YXJpbz5KU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXN1YXJpb1wiKSk7XG4gICAgICAgIGlmICh1c3VhcmlvKSB7XG4gICAgICAgICAgICB0b2tlbl90eXBlID0gdXN1YXJpby50b2tlbl90eXBlLFxuICAgICAgICAgICAgICAgIGFjY2Vzc190b2tlbiA9IHVzdWFyaW8uYWNjZXNzX3Rva2VuXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGh0dHBPcHRpb25zID0ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiB0b2tlbl90eXBlICsgJyAnICsgYWNjZXNzX3Rva2VuXG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgICBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvbmZpZ1wiKSk7XG4gICAgICAgIGlmIChjb25maWcpXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybClcbiAgICAgICAgICAgICAgICB0aGlzLnVybF9ob3N0ID0gY29uZmlnLnVybDtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh0aGlzLnVybF9ob3N0ICsgJy91c3VhcmlvL29idGllbmVVc3VhcmlvQWN0dWFsJywgaHR0cE9wdGlvbnMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { AuthService } from './auth.service';
|
|
7
|
+
import { ControlAccesoService } from './controlAcceso.service';
|
|
8
|
+
import { Router } from '@angular/router';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "./auth.service";
|
|
11
|
+
import * as i2 from "./controlAcceso.service";
|
|
12
|
+
import * as i3 from "@angular/router";
|
|
13
|
+
export class Authenticated {
|
|
14
|
+
/**
|
|
15
|
+
* @param {?} authService
|
|
16
|
+
* @param {?} controlAccesoService
|
|
17
|
+
* @param {?} router
|
|
18
|
+
*/
|
|
19
|
+
constructor(authService, controlAccesoService, router) {
|
|
20
|
+
this.authService = authService;
|
|
21
|
+
this.controlAccesoService = controlAccesoService;
|
|
22
|
+
this.router = router;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @param {?=} modulo
|
|
26
|
+
* @return {?}
|
|
27
|
+
*/
|
|
28
|
+
load(modulo) {
|
|
29
|
+
/** @type {?} */
|
|
30
|
+
let usuario = this.authService.getUser();
|
|
31
|
+
if (usuario) {
|
|
32
|
+
this.authService.getDetalsUser().subscribe((/**
|
|
33
|
+
* @param {?} resp
|
|
34
|
+
* @return {?}
|
|
35
|
+
*/
|
|
36
|
+
(resp) => {
|
|
37
|
+
/** @type {?} */
|
|
38
|
+
let roles = resp.roles;
|
|
39
|
+
for (let index = 0; index < roles.length; index++) {
|
|
40
|
+
if (roles[index].authority === "ROLE_CLIENTE") {
|
|
41
|
+
//this.regresaAlprincipal('/administrativo/movimientos/ventaRapida/create')
|
|
42
|
+
this.router.navigate(['movimientos/ventaRapida/create']);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!resp.empresa) {
|
|
46
|
+
this.regresaAlprincipal(undefined);
|
|
47
|
+
}
|
|
48
|
+
this.controlAccesoService.detallesUsuarios = resp;
|
|
49
|
+
this.controlAccesoService.cambioAcciones.emit(true);
|
|
50
|
+
return true;
|
|
51
|
+
/*
|
|
52
|
+
if (resp.moduloAccesoActual) {
|
|
53
|
+
if (resp.moduloAccesoActual.descripcion === modulo) {
|
|
54
|
+
this.controlAccesoService.detallesUsuarios = resp;
|
|
55
|
+
this.controlAccesoService.cambioAcciones.emit(true);
|
|
56
|
+
return true;
|
|
57
|
+
} else {
|
|
58
|
+
this.regresaAlprincipal(resp.moduloAccesoActual.urlInicial);
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
this.regresaAlprincipal(undefined);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
*/
|
|
65
|
+
}), (/**
|
|
66
|
+
* @param {?} error
|
|
67
|
+
* @return {?}
|
|
68
|
+
*/
|
|
69
|
+
(error) => {
|
|
70
|
+
this.regresaAlprincipal(undefined);
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.regresaAlprincipal(undefined);
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @param {?} url
|
|
80
|
+
* @return {?}
|
|
81
|
+
*/
|
|
82
|
+
regresaAlprincipal(url) {
|
|
83
|
+
/** @type {?} */
|
|
84
|
+
let config = JSON.parse(localStorage.getItem("config"));
|
|
85
|
+
/** @type {?} */
|
|
86
|
+
let host = "";
|
|
87
|
+
if (config) {
|
|
88
|
+
if (config.host) {
|
|
89
|
+
host = config.host;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (url) {
|
|
93
|
+
host = host + url;
|
|
94
|
+
}
|
|
95
|
+
window.location.href = host;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
Authenticated.decorators = [
|
|
99
|
+
{ type: Injectable, args: [{
|
|
100
|
+
providedIn: 'root'
|
|
101
|
+
},] }
|
|
102
|
+
];
|
|
103
|
+
/** @nocollapse */
|
|
104
|
+
Authenticated.ctorParameters = () => [
|
|
105
|
+
{ type: AuthService },
|
|
106
|
+
{ type: ControlAccesoService },
|
|
107
|
+
{ type: Router }
|
|
108
|
+
];
|
|
109
|
+
/** @nocollapse */ Authenticated.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Authenticated_Factory() { return new Authenticated(i0.ɵɵinject(i1.AuthService), i0.ɵɵinject(i2.ControlAccesoService), i0.ɵɵinject(i3.Router)); }, token: Authenticated, providedIn: "root" });
|
|
110
|
+
if (false) {
|
|
111
|
+
/**
|
|
112
|
+
* @type {?}
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
Authenticated.prototype.authService;
|
|
116
|
+
/**
|
|
117
|
+
* @type {?}
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
Authenticated.prototype.controlAccesoService;
|
|
121
|
+
/**
|
|
122
|
+
* @type {?}
|
|
123
|
+
* @private
|
|
124
|
+
*/
|
|
125
|
+
Authenticated.prototype.router;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRlZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdmlzb3J1cy1lcnAtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9hdXRoZW50aWNhdGVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFLekMsTUFBTSxPQUFPLGFBQWE7Ozs7OztJQUV0QixZQUNZLFdBQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxNQUFjO1FBRmQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBRzFCLENBQUM7Ozs7O0lBRUQsSUFBSSxDQUFDLE1BQVE7O1lBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1FBRXhDLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTOzs7O1lBQ3hDLENBQUMsSUFBUyxFQUFFLEVBQUU7O29CQUNSLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSztnQkFDdEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ2pELElBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsS0FBSyxjQUFjLEVBQUM7d0JBQzNDLDJFQUEyRTt3QkFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7cUJBQzNEO2lCQUNGO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3BDO2dCQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxPQUFPLElBQUksQ0FBQztnQkFDaEI7Ozs7Ozs7Ozs7Ozs7a0JBYUU7WUFFSixDQUFDOzs7O1lBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsRUFDRixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7SUFFSCxrQkFBa0IsQ0FBQyxHQUFHOztZQUNkLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7O1lBQ25ELElBQUksR0FBRyxFQUFFO1FBQ2IsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7YUFDcEI7U0FDRjtRQUNELElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7U0FDbkI7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQzs7O1lBckVOLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7OztZQVBRLFdBQVc7WUFDWCxvQkFBb0I7WUFFcEIsTUFBTTs7Ozs7Ozs7SUFRUCxvQ0FBZ0M7Ozs7O0lBQ2hDLDZDQUFrRDs7Ozs7SUFDbEQsK0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sQWNjZXNvU2VydmljZSB9IGZyb20gJy4vY29udHJvbEFjY2Vzby5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGVkIHtcblxuICAgIGNvbnN0cnVjdG9yKCBcbiAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udHJvbEFjY2Vzb1NlcnZpY2U6IENvbnRyb2xBY2Nlc29TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICAgICAgICl7XG4gICAgICAgXG4gICAgfVxuICAgIFxuICAgIGxvYWQobW9kdWxvID8pe1xuICAgICAgICBsZXQgdXN1YXJpbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpO1xuXG4gICAgICAgIGlmICh1c3VhcmlvKSB7XG4gICAgICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXREZXRhbHNVc2VyKCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBsZXQgcm9sZXMgPSByZXNwLnJvbGVzOyBcbiAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvbGVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGlmKHJvbGVzW2luZGV4XS5hdXRob3JpdHkgPT09IFwiUk9MRV9DTElFTlRFXCIpe1xuICAgICAgICAgICAgICAgICAgLy90aGlzLnJlZ3Jlc2FBbHByaW5jaXBhbCgnL2FkbWluaXN0cmF0aXZvL21vdmltaWVudG9zL3ZlbnRhUmFwaWRhL2NyZWF0ZScpXG4gICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydtb3ZpbWllbnRvcy92ZW50YVJhcGlkYS9jcmVhdGUnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghcmVzcC5lbXByZXNhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdyZXNhQWxwcmluY2lwYWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xBY2Nlc29TZXJ2aWNlLmRldGFsbGVzVXN1YXJpb3MgPSByZXNwO1xuICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xBY2Nlc29TZXJ2aWNlLmNhbWJpb0FjY2lvbmVzLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgaWYgKHJlc3AubW9kdWxvQWNjZXNvQWN0dWFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3AubW9kdWxvQWNjZXNvQWN0dWFsLmRlc2NyaXBjaW9uID09PSBtb2R1bG8pIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFjY2Vzb1NlcnZpY2UuZGV0YWxsZXNVc3VhcmlvcyA9IHJlc3A7XG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2xBY2Nlc29TZXJ2aWNlLmNhbWJpb0FjY2lvbmVzLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWdyZXNhQWxwcmluY2lwYWwocmVzcC5tb2R1bG9BY2Nlc29BY3R1YWwudXJsSW5pY2lhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVncmVzYUFscHJpbmNpcGFsKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAqL1xuICAgIFxuICAgICAgICAgICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWdyZXNhQWxwcmluY2lwYWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVncmVzYUFscHJpbmNpcGFsKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgcmVncmVzYUFscHJpbmNpcGFsKHVybCkge1xuICAgICAgICBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImNvbmZpZ1wiKSk7XG4gICAgICAgIGxldCBob3N0ID0gXCJcIlxuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgaWYgKGNvbmZpZy5ob3N0KSB7XG4gICAgICAgICAgICBob3N0ID0gY29uZmlnLmhvc3Q7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICBob3N0ID0gaG9zdCArIHVybDtcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGhvc3Q7XG4gICAgICB9XG59Il19
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable } from "@angular/core";
|
|
6
|
+
import { ControlAccesoService } from './controlAcceso.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./controlAcceso.service";
|
|
9
|
+
export class CanActivateGuard {
|
|
10
|
+
/**
|
|
11
|
+
* @param {?} controlAccesoService
|
|
12
|
+
*/
|
|
13
|
+
constructor(controlAccesoService) {
|
|
14
|
+
this.controlAccesoService = controlAccesoService;
|
|
15
|
+
this.rol = '';
|
|
16
|
+
this.method = '';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @return {?}
|
|
20
|
+
*/
|
|
21
|
+
canActivate() {
|
|
22
|
+
return this.controlAccesoService.canActivete([this.rol]);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @param {?} rol
|
|
26
|
+
* @return {?}
|
|
27
|
+
*/
|
|
28
|
+
permisos(rol) {
|
|
29
|
+
this.rol = rol;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
CanActivateGuard.decorators = [
|
|
33
|
+
{ type: Injectable, args: [{
|
|
34
|
+
providedIn: 'root'
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
/** @nocollapse */
|
|
38
|
+
CanActivateGuard.ctorParameters = () => [
|
|
39
|
+
{ type: ControlAccesoService }
|
|
40
|
+
];
|
|
41
|
+
/** @nocollapse */ CanActivateGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function CanActivateGuard_Factory() { return new CanActivateGuard(i0.ɵɵinject(i1.ControlAccesoService)); }, token: CanActivateGuard, providedIn: "root" });
|
|
42
|
+
if (false) {
|
|
43
|
+
/** @type {?} */
|
|
44
|
+
CanActivateGuard.prototype.rol;
|
|
45
|
+
/** @type {?} */
|
|
46
|
+
CanActivateGuard.prototype.method;
|
|
47
|
+
/**
|
|
48
|
+
* @type {?}
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
CanActivateGuard.prototype.controlAccesoService;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuQWN0aXZhdGVHdWFyZC5zZXJ2aWNlLnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdmlzb3J1cy1lcnAtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jYW5BY3RpdmF0ZUd1YXJkLnNlcnZpY2UudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUsvRCxNQUFNLE9BQU8sZ0JBQWdCOzs7O0lBRzNCLFlBQW9CLG9CQUEyQztRQUEzQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXVCO1FBRi9ELFFBQUcsR0FBWSxFQUFFLENBQUM7UUFDakIsV0FBTSxHQUFZLEVBQUUsQ0FBQztJQUV0QixDQUFDOzs7O0lBQ0QsV0FBVztRQUNSLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7Ozs7O0lBRUYsUUFBUSxDQUFDLEdBQUc7UUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDOzs7WUFkRCxVQUFVLFNBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckI7Ozs7WUFKUSxvQkFBb0I7Ozs7O0lBTTNCLCtCQUFrQjs7SUFDakIsa0NBQXFCOzs7OztJQUNWLGdEQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29udHJvbEFjY2Vzb1NlcnZpY2UgfSBmcm9tICcuL2NvbnRyb2xBY2Nlc28uc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FuQWN0aXZhdGVHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgcm9sIDogc3RyaW5nID0gJyc7XG4gICBtZXRob2QgOiBzdHJpbmcgPSAnJztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250cm9sQWNjZXNvU2VydmljZSA6IENvbnRyb2xBY2Nlc29TZXJ2aWNlKXsgICAgXG4gIH1cbiAgY2FuQWN0aXZhdGUoKXtcbiAgICAgcmV0dXJuIHRoaXMuY29udHJvbEFjY2Vzb1NlcnZpY2UuY2FuQWN0aXZldGUoW3RoaXMucm9sXSk7XG4gIH1cblxuIHBlcm1pc29zKHJvbCl7XG4gICB0aGlzLnJvbCA9IHJvbDtcbiB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { CrudService } from './crud.service';
|
|
7
|
+
import { HttpClient } from '@angular/common/http';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common/http";
|
|
10
|
+
export class CatalogoAdicionalService extends CrudService {
|
|
11
|
+
/**
|
|
12
|
+
* @param {?} httpClient
|
|
13
|
+
*/
|
|
14
|
+
constructor(httpClient) {
|
|
15
|
+
super(httpClient, 'catalogoAdicional');
|
|
16
|
+
this.httpClient = httpClient;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
CatalogoAdicionalService.decorators = [
|
|
20
|
+
{ type: Injectable, args: [{
|
|
21
|
+
providedIn: 'root'
|
|
22
|
+
},] }
|
|
23
|
+
];
|
|
24
|
+
/** @nocollapse */
|
|
25
|
+
CatalogoAdicionalService.ctorParameters = () => [
|
|
26
|
+
{ type: HttpClient }
|
|
27
|
+
];
|
|
28
|
+
/** @nocollapse */ CatalogoAdicionalService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function CatalogoAdicionalService_Factory() { return new CatalogoAdicionalService(i0.ɵɵinject(i1.HttpClient)); }, token: CatalogoAdicionalService, providedIn: "root" });
|
|
29
|
+
if (false) {
|
|
30
|
+
/**
|
|
31
|
+
* @type {?}
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
CatalogoAdicionalService.prototype.httpClient;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZ28tYWRpY2lvbmFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly92aXNvcnVzLWVycC1jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NhdGFsb2dvLWFkaWNpb25hbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7OztBQUtoRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBVzs7OztJQUV2RCxZQUFxQixVQUFzQjtRQUN6QyxLQUFLLENBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFFLENBQUM7UUFEdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUUzQyxDQUFDOzs7WUFQRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFKTyxVQUFVOzs7Ozs7OztJQU9ILDhDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q3J1ZFNlcnZpY2V9IGZyb20gJy4vY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXRhbG9nb0FkaWNpb25hbFNlcnZpY2UgZXh0ZW5kcyBDcnVkU2VydmljZXtcblxuICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSB7XG4gICAgc3VwZXIoIGh0dHBDbGllbnQsICdjYXRhbG9nb0FkaWNpb25hbCcgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable, Output, EventEmitter } from "@angular/core";
|
|
6
|
+
import { AuthService } from './auth.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./auth.service";
|
|
9
|
+
export class ControlAccesoService {
|
|
10
|
+
/**
|
|
11
|
+
* @param {?} authService
|
|
12
|
+
*/
|
|
13
|
+
constructor(authService) {
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.cambioAcciones = new EventEmitter();
|
|
16
|
+
this.changeDetalleUsuario = new EventEmitter();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @param {?} detallesUsuarios
|
|
20
|
+
* @return {?}
|
|
21
|
+
*/
|
|
22
|
+
set(detallesUsuarios) {
|
|
23
|
+
this.detallesUsuarios = detallesUsuarios;
|
|
24
|
+
this.changeDetalleUsuario.emit(this.detallesUsuarios);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @param {?} rols
|
|
28
|
+
* @return {?}
|
|
29
|
+
*/
|
|
30
|
+
canActivete(rols) {
|
|
31
|
+
/** @type {?} */
|
|
32
|
+
let permiso = false;
|
|
33
|
+
/** @type {?} */
|
|
34
|
+
let user = this.authService.getUser();
|
|
35
|
+
if (!user)
|
|
36
|
+
false;
|
|
37
|
+
for (let index = 0; index < rols.length; index++) {
|
|
38
|
+
if (permiso)
|
|
39
|
+
return permiso;
|
|
40
|
+
/** @type {?} */
|
|
41
|
+
let grupoPermisos = user.roles.filter((/**
|
|
42
|
+
* @param {?} permiso
|
|
43
|
+
* @return {?}
|
|
44
|
+
*/
|
|
45
|
+
(permiso) => {
|
|
46
|
+
return permiso === rols[index];
|
|
47
|
+
}));
|
|
48
|
+
permiso = grupoPermisos.length > 0;
|
|
49
|
+
}
|
|
50
|
+
return permiso;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ControlAccesoService.decorators = [
|
|
54
|
+
{ type: Injectable, args: [{
|
|
55
|
+
providedIn: 'root'
|
|
56
|
+
},] }
|
|
57
|
+
];
|
|
58
|
+
/** @nocollapse */
|
|
59
|
+
ControlAccesoService.ctorParameters = () => [
|
|
60
|
+
{ type: AuthService }
|
|
61
|
+
];
|
|
62
|
+
ControlAccesoService.propDecorators = {
|
|
63
|
+
cambioAcciones: [{ type: Output }],
|
|
64
|
+
changeDetalleUsuario: [{ type: Output }]
|
|
65
|
+
};
|
|
66
|
+
/** @nocollapse */ ControlAccesoService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ControlAccesoService_Factory() { return new ControlAccesoService(i0.ɵɵinject(i1.AuthService)); }, token: ControlAccesoService, providedIn: "root" });
|
|
67
|
+
if (false) {
|
|
68
|
+
/** @type {?} */
|
|
69
|
+
ControlAccesoService.prototype.detallesUsuarios;
|
|
70
|
+
/** @type {?} */
|
|
71
|
+
ControlAccesoService.prototype.cambioAcciones;
|
|
72
|
+
/** @type {?} */
|
|
73
|
+
ControlAccesoService.prototype.changeDetalleUsuario;
|
|
74
|
+
/**
|
|
75
|
+
* @type {?}
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
ControlAccesoService.prototype.authService;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbEFjY2Vzby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vdmlzb3J1cy1lcnAtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jb250cm9sQWNjZXNvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUkxQyxNQUFNLE9BQU8sb0JBQW9COzs7O0lBQzlCLFlBQW9CLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBR3BDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSGxELENBQUM7Ozs7O0lBS0gsR0FBRyxDQUFDLGdCQUFnQjtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxJQUFjOztZQUNsQixPQUFPLEdBQUcsS0FBSzs7WUFDZixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7UUFDckMsSUFBRyxDQUFDLElBQUk7WUFBRSxLQUFLLENBQUM7UUFFaEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEQsSUFBRyxPQUFPO2dCQUFFLE9BQU8sT0FBTyxDQUFDOztnQkFDdkIsYUFBYSxHQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTs7OztZQUMxQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUNmLE9BQU8sT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBRTtZQUNsQyxDQUFDLEVBQ0Y7WUFDRCxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzs7WUE3QkosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRyxNQUFNO2FBQ3RCOzs7O1lBSlEsV0FBVzs7OzZCQVFmLE1BQU07bUNBQ04sTUFBTTs7Ozs7SUFGUCxnREFBdUI7O0lBQ3ZCLDhDQUE4Qzs7SUFDOUMsb0RBQW9EOzs7OztJQUp0QywyQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW4gOiAncm9vdCdcbn0pIGV4cG9ydCBjbGFzcyBDb250cm9sQWNjZXNvU2VydmljZSAge1xuICAgICAgY29uc3RydWN0b3IocHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2Upe1xuICAgICAgfVxuICAgIGRldGFsbGVzVXN1YXJpb3MgOiBhbnk7XG4gICAgQE91dHB1dCgpIGNhbWJpb0FjY2lvbmVzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjaGFuZ2VEZXRhbGxlVXN1YXJpbyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHNldChkZXRhbGxlc1VzdWFyaW9zKXtcbiAgICAgIHRoaXMuZGV0YWxsZXNVc3VhcmlvcyA9IGRldGFsbGVzVXN1YXJpb3M7XG4gICAgICB0aGlzLmNoYW5nZURldGFsbGVVc3VhcmlvLmVtaXQoIHRoaXMuZGV0YWxsZXNVc3Vhcmlvcyk7XG4gICAgfVxuXG4gICAgY2FuQWN0aXZldGUocm9sczogU3RyaW5nW10pIHtcbiAgICAgICAgbGV0IHBlcm1pc28gPSBmYWxzZTtcbiAgICAgICAgbGV0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXIoKTtcbiAgICAgICAgaWYoIXVzZXIpIGZhbHNlO1xuICBcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvbHMubGVuZ3RoOyBpbmRleCsrKSB7ICAgICAgICAgIFxuICAgICAgICAgIGlmKHBlcm1pc28pIHJldHVybiBwZXJtaXNvOyAgXG4gICAgICAgICAgbGV0IGdydXBvUGVybWlzb3MgOmFueVtdID0gdXNlci5yb2xlcy5maWx0ZXIoXG4gICAgICAgICAgICAocGVybWlzbzogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwZXJtaXNvID09PSByb2xzW2luZGV4XSA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTsgICAgICAgIFxuICAgICAgICAgIHBlcm1pc28gPSBncnVwb1Blcm1pc29zLmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBlcm1pc287XG4gICAgfSBcbn0iXX0=
|