Example #1
0
        public bool TienePermisos(UsuarioDtm usuarioConectado, string vista)
        {
            if (usuarioConectado.EsAdministrador)
            {
                return(true);
            }

            var vistaDtm = LeerVistaMvc(vista);
            var cache    = ServicioDeCaches.Obtener($"{nameof(GestorDeVistaMvc)}.{nameof(TienePermisos)}");
            var indice   = $"Usuario:{usuarioConectado.Id} Permiso:{vistaDtm.IdPermiso}";

            if (!cache.ContainsKey(indice))
            {
                var gestor = GestorDePermisosDeUnUsuario.Gestor(Contexto, Mapeador);

                var filtros = new List <ClausulaDeFiltrado>
                {
                    new ClausulaDeFiltrado {
                        Clausula = nameof(PermisosDeUnUsuarioDtm.IdUsuario), Criterio = CriteriosDeFiltrado.igual, Valor = usuarioConectado.Id.ToString()
                    },
                    new ClausulaDeFiltrado {
                        Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.igual, Valor = vistaDtm.IdPermiso.ToString()
                    }
                };

                cache[indice] = gestor.Contar(filtros) > 0;
            }
            return((bool)cache[indice]);
        }
Example #2
0
        public void ObtenerUsuarioEjecutor()
        {
            var scope = _servicios.CreateScope();

            using (var gestor = scope.ServiceProvider.GetRequiredService <GestorDeUsuarios>())
            {
                Usuario = gestor.LeerRegistroCacheado(nameof(UsuarioDtm.Login), CacheDeVariable.Cola_LoginDeEjecutor, true, true, false);
            }
        }
        private static AuditoriaDto MapearRegistro(ContextoSe contexto, AuditoriaDtm registro)
        {
            var elemento = new AuditoriaDto();

            elemento.Id           = registro.Id;
            elemento.IdElemento   = registro.IdElemento;
            elemento.IdUsuario    = registro.IdUsuario;
            elemento.AuditadoEl   = registro.AuditadoEl;
            elemento.Operacion    = registro.Operacion;
            elemento.registroJson = registro.registroJson;
            elemento.Usuario      = UsuarioDtm.NombreCompleto(Entorno.GestorDeUsuarios.LeerUsuario(contexto, elemento.IdUsuario));
            return(elemento);
        }
        public bool TienePermisos(UsuarioDtm usuarioConectado, enumModoDeAccesoDeDatos permisosNecesarios, enumNegocio negocio)
        {
            if (!NegociosDeSe.UsaSeguridad(negocio))
            {
                return(true);
            }

            var estaActivo = NegocioActivo(negocio);

            if (!estaActivo && (permisosNecesarios == enumModoDeAccesoDeDatos.Administrador || permisosNecesarios == enumModoDeAccesoDeDatos.Gestor))
            {
                return(false);
            }

            if (usuarioConectado.EsAdministrador)
            {
                return(true);
            }

            if (negocio == enumNegocio.Variable)
            {
                switch (permisosNecesarios)
                {
                case enumModoDeAccesoDeDatos.Consultor: return(true);

                case enumModoDeAccesoDeDatos.Administrador: return(Contexto.DatosDeConexion.EsAdministrador);

                case enumModoDeAccesoDeDatos.Gestor: return(Contexto.DatosDeConexion.EsAdministrador);

                default:
                    throw new Exception($"Al elemto variable no se le puede acceder con el tipo de permiso: '{permisosNecesarios}'");
                }
            }

            var negocioDtm = LeerRegistroCacheado(nameof(NegocioDtm.Nombre), negocio.ToNombre(), errorSiNoHay: true, errorSiHayMasDeUno: true, aplicarJoin: false);
            var cache      = ServicioDeCaches.Obtener($"{nameof(GestorDeNegocios)}.{nameof(TienePermisos)}");
            var indice     = $"{usuarioConectado.Id}.{negocioDtm.Id}.{permisosNecesarios}";

            if (!cache.ContainsKey(indice))
            {
                var gestor = GestorDePermisosDeUnUsuario.Gestor(Contexto, Mapeador);

                var filtros = new List <ClausulaDeFiltrado>
                {
                    new ClausulaDeFiltrado {
                        Clausula = nameof(PermisosDeUnUsuarioDtm.IdUsuario), Criterio = CriteriosDeFiltrado.igual, Valor = usuarioConectado.Id.ToString()
                    }
                };

                if (permisosNecesarios == enumModoDeAccesoDeDatos.Administrador)
                {
                    filtros.Add(new ClausulaDeFiltrado {
                        Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.igual, Valor = negocioDtm.IdPermisoDeAdministrador.ToString()
                    });
                }

                if (permisosNecesarios == enumModoDeAccesoDeDatos.Gestor)
                {
                    filtros.Add(new ClausulaDeFiltrado {
                        Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.esAlgunoDe, Valor = $"{negocioDtm.IdPermisoDeGestor},{negocioDtm.IdPermisoDeAdministrador}"
                    });
                }

                if (permisosNecesarios == enumModoDeAccesoDeDatos.Consultor)
                {
                    filtros.Add(new ClausulaDeFiltrado {
                        Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.esAlgunoDe, Valor = $"{negocioDtm.IdPermisoDeConsultor},{negocioDtm.IdPermisoDeGestor},{negocioDtm.IdPermisoDeAdministrador}"
                    });
                }

                cache[indice] = gestor.Contar(filtros) > 0;
            }
            return((bool)cache[indice]);
        }
        protected virtual void DespuesDeMapearElemento(TRegistro registro, TElemento elemento, ParametrosDeMapeo parametros)
        {
            if (registro.ImplementaUnElemento())
            {
                ((IAuditadoDto)elemento).CreadoEl     = ((IElementoDtm)registro).FechaCreacion;
                ((IAuditadoDto)elemento).ModificadoEl = ((IElementoDtm)registro).FechaModificacion;

                ((IAuditadoDto)elemento).Creador     = ((IElementoDtm)registro).UsuarioCreador == null ? "" : UsuarioDtm.NombreCompleto(((IElementoDtm)registro).UsuarioCreador);
                ((IAuditadoDto)elemento).Modificador = ((IElementoDtm)registro).UsuarioModificador == null ? "" : UsuarioDtm.NombreCompleto(((IElementoDtm)registro).UsuarioModificador);
            }
        }
 public MapearUsuario()
 {
     CreateMap <UsuarioDtm, UsuarioDto>()
     .ForMember(dto => dto.NombreCompleto, dtm => dtm.MapFrom(x => UsuarioDtm.NombreCompleto(x)));
     CreateMap <UsuarioDto, UsuarioDtm>();
 }
Example #7
0
 private static void CumplimentarDatosDeConexion(GestorDeTrabajosDeUsuario gestor, UsuarioDtm usuario)
 {
     gestor.Contexto.DatosDeConexion.IdUsuario       = usuario.Id;
     gestor.Contexto.DatosDeConexion.EsAdministrador = usuario.EsAdministrador;
     gestor.Contexto.DatosDeConexion.Login           = usuario.Login;
 }
Example #8
0
        public static Task ProcesarCola(this GestorDeTrabajosDeUsuario gestorDelEntorno, UsuarioDtm usuario)
        {
            CumplimentarDatosDeConexion(gestorDelEntorno, usuario);

            var trabajosPorEjecutar = LeerTrabajoPendiente();

            if (trabajosPorEjecutar.Count == 1)
            {
                bool trazar = CacheDeVariable.Cola_Trazar;
                if (trazar)
                {
                    gestorDelEntorno.Contexto.IniciarTraza(trabajosPorEjecutar[0].Nombre);
                }
                try
                {
                    GestorDeTrabajosDeUsuario.Iniciar(gestorDelEntorno.Contexto, trabajosPorEjecutar[0].Id, true);
                    if (trazar)
                    {
                        gestorDelEntorno.Contexto.CerrarTraza("Trabajo finalizado correctamente");
                    }
                }
                catch
                {
                    if (trazar)
                    {
                        gestorDelEntorno.Contexto.CerrarTraza("Trabajo finalizado con errores");
                    }
                }
            }


            var gestorDeCorreos = GestorDeCorreos.Gestor(gestorDelEntorno.Contexto, gestorDelEntorno.Contexto.Mapeador);

            gestorDeCorreos.EnviarCorreoPendientesAsync();

            TrabajosDeEntorno.SometerBorrarTrazas(gestorDelEntorno.Contexto);

            return(Task.FromResult(new ResultadoDelProceso(true)));
        }