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]); }
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>(); }
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; }
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))); }