public bool ValidarPermisosDePersistencia(enumTipoOperacion operacion, enumNegocio negocio, TRegistro registro) { if (Contexto.DatosDeConexion.EsAdministrador || negocio == enumNegocio.No_Definido || !NegociosDeSe.UsaSeguridad(negocio)) { return(true); } if (!Contexto.DatosDeConexion.EsAdministrador && NegociosDeSe.EsDeParametrizacion(negocio)) { GestorDeErrores.Emitir($"El usuario {Contexto.DatosDeConexion.Login} no tiene permisos de parametrización sobre el negocio {negocio.ToNombre()}"); } var modoAcceso = LeerModoDeAccesoAlNegocio(Contexto.DatosDeConexion.IdUsuario, negocio); var hayPermisos = modoAcceso == enumModoDeAccesoDeDatos.Administrador; if (!hayPermisos) { if (operacion == enumTipoOperacion.Insertar) { hayPermisos = modoAcceso == enumModoDeAccesoDeDatos.Gestor; } else { var modoAccesoElemento = LeerModoDeAccesoAlElemento(Contexto.DatosDeConexion.IdUsuario, negocio, registro.Id); hayPermisos = modoAccesoElemento == enumModoDeAccesoDeDatos.Gestor || modoAccesoElemento == enumModoDeAccesoDeDatos.Administrador; } } //var gestorDeNegocio = Gestores<TContexto, NegocioDtm, NegocioDto>.Obtener(Contexto, Mapeador, "Negocio.GestorDeNegocio"); //var negocioDtm = gestorDeNegocio.LeerRegistroCacheado(nameof(NegocioDtm.Nombre), NegociosDeSe.ToString(negocio)); //var cache = ServicioDeCaches.Obtener($"{nameof(GestorDeElementos)}.{nameof(ValidarPermisosDePersistencia)}"); //var indice = $"Usuario:{idUsuario} Permiso:{negocioDtm.IdPermisoDeGestor}"; //if (!cache.ContainsKey(indice)) //{ // var gestorDePermisosDeUnUsuario = Gestores<TContexto, PermisosDeUnUsuarioDtm, PermisosDeUnUsuarioDto>.Obtener(Contexto, Mapeador, "Entorno.GestorDePermisosDeUnUsuario"); // var filtros = new List<ClausulaDeFiltrado>(); // filtros.Add(new ClausulaDeFiltrado { Clausula = nameof(PermisosDeUnUsuarioDtm.IdUsuario), Criterio = CriteriosDeFiltrado.igual, Valor = idUsuario.ToString() }); // filtros.Add(new ClausulaDeFiltrado { Clausula = nameof(PermisosDeUnUsuarioDtm.IdPermiso), Criterio = CriteriosDeFiltrado.esAlgunoDe, Valor = $"{negocioDtm.IdPermisoDeGestor},{negocioDtm.IdPermisoDeAdministrador}" }); // if (gestorDePermisosDeUnUsuario.Contar(filtros) == 0) // GestorDeErrores.Emitir($"El usuario {Contexto.DatosDeConexion.Login} no tiene permisos para {operacion.ToString().ToLower()} los datos de {NegociosDeSe.ToString(negocio)}"); // cache[indice] = true; //} //return (bool)cache[indice]; return(hayPermisos); }
public ParametrosDeNegocio(enumTipoOperacion tipo, bool aplicarJoin = true) { Operacion = tipo; if (tipo == enumTipoOperacion.LeerConBloqueo) { LeerParaActualizar = true; } if (tipo == enumTipoOperacion.LeerSinBloqueo) { LeerParaActualizar = false; } AplicarJoin = aplicarJoin; }
public static string ToBd(this enumTipoOperacion tipo) { switch (tipo) { case enumTipoOperacion.Insertar: return("I"); case enumTipoOperacion.Modificar: return("M"); case enumTipoOperacion.LeerConBloqueo: return("L"); case enumTipoOperacion.LeerSinBloqueo: return("X"); case enumTipoOperacion.NoDefinida: return("N"); case enumTipoOperacion.Eliminar: return("E"); case enumTipoOperacion.Contar: return("C"); } throw new Exception($"No se ha definidocomo registrar en la BD la operación {tipo}"); }
public static void RegistrarAuditoria(ContextoSe contexto, enumNegocio negocio, enumTipoOperacion operacion, IElementoDtm auditar) { auditar.UsuarioModificador = auditar.UsuarioCreador = null; var valor = serializarPropiedadesPOCO(auditar); var sentencia = $@"Insert into {GeneradorMd.EsquemaDeTabla(negocio.TipoDtm())}.{GeneradorMd.NombreDeTabla(negocio.TipoDtm())}_AUDITORIA (id_elemento, id_usuario, operacion, registro, auditado_el) values ({((ElementoDtm)auditar).Id} ,{contexto.DatosDeConexion.IdUsuario} ,'{operacion.ToBd()}' ,'{valor}' ,'{DateTime.Now}')"; contexto.Database.ExecuteSqlRaw(sentencia); }