internal TipoPermisoDtm CrearTipoPermisoDeDatos(enumModoDeAccesoDeDatos acceso) { var registro = new TipoPermisoDtm(); registro.Nombre = ModoDeAcceso.ToString(acceso); PersistirRegistro(registro, new ParametrosDeNegocio(enumTipoOperacion.Insertar)); return(registro); }
public enumModoDeAccesoDeDatos LeerModoDeAccesoAlNegocio(int idUsuario, enumNegocio negocio) { if (Contexto.DatosDeConexion.EsAdministrador) { return(enumModoDeAccesoDeDatos.Administrador); } if (NegociosDeSe.EsDeParametrizacion(negocio) && !Contexto.DatosDeConexion.EsAdministrador) { return(enumModoDeAccesoDeDatos.Consultor); } if (!NegociosDeSe.UsaSeguridad(negocio) || negocio == enumNegocio.No_Definido) { return(enumModoDeAccesoDeDatos.Administrador); } enumModoDeAccesoDeDatos modoDelUsuario = enumModoDeAccesoDeDatos.SinPermiso; var cache = ServicioDeCaches.Obtener($"{nameof(GestorDeElementos)}.{nameof(LeerModoDeAccesoAlNegocio)}"); var indice = $"Usuario:{idUsuario} Negocio:{negocio.ToNombre()}"; if (!cache.ContainsKey(indice)) { var modosLeidos = ModosDeAccesoAlNegocio(idUsuario, negocio); foreach (var modoLeido in modosLeidos) { if (modoLeido.Administrador) { modoDelUsuario = enumModoDeAccesoDeDatos.Administrador; break; } else { if (modoDelUsuario != enumModoDeAccesoDeDatos.Gestor && modoLeido.Gestor) { modoDelUsuario = enumModoDeAccesoDeDatos.Gestor; } else if (modoLeido.Consultor && modoDelUsuario == enumModoDeAccesoDeDatos.SinPermiso) { modoDelUsuario = enumModoDeAccesoDeDatos.Consultor; } } } if (modoDelUsuario != enumModoDeAccesoDeDatos.SinPermiso && !NegocioActivo(negocio)) { return(enumModoDeAccesoDeDatos.Consultor); } cache[indice] = modoDelUsuario; } return((enumModoDeAccesoDeDatos)cache[indice]); }
public static string ToString(enumModoDeAccesoDeDatos modoDeAcceso) { switch (modoDeAcceso) { case enumModoDeAccesoDeDatos.Administrador: return(enumModoDeAccesoDeDatos.Administrador.ToString()); case enumModoDeAccesoDeDatos.Gestor: return(enumModoDeAccesoDeDatos.Gestor.ToString()); case enumModoDeAccesoDeDatos.Consultor: return(enumModoDeAccesoDeDatos.Consultor.ToString()); case enumModoDeAccesoDeDatos.SinPermiso: return(enumModoDeAccesoDeDatos.SinPermiso.ToString()); } throw new Exception($"El modo de acceso de datos '{modoDeAcceso}' no está definido, no se puede parsear"); }
public OpcionDeMenu(Menu <TElemento> menu, AccionDeMenu accion, TipoDeLlamada tipoAccion, string titulo, enumModoDeAccesoDeDatos permisosNecesarios, enumCssOpcionMenu clase) : base( padre: menu, id: $"{menu.Id}_{enumTipoControl.Opcion.Render()}_{menu.OpcionesDeMenu.Count}", etiqueta: titulo, propiedad: null, ayuda: accion.Ayuda, posicion: null ) { Tipo = enumTipoControl.Opcion; TipoDeLLamada = tipoAccion; Accion = accion; PermisosNecesarios = permisosNecesarios; ClaseBoton = clase; }
public OpcionDeMenu(Menu <TElemento> menu, AccionDeMenu accion, string titulo, enumModoDeAccesoDeDatos permisosNecesarios) : this(menu, accion, TipoDeLlamada.Get, titulo, permisosNecesarios, accion.ClaseDeAccion) { }
public static string Render(this enumModoDeAccesoDeDatos modoDeAcceso) { return(ToString(modoDeAcceso).ToLower()); }
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]); }
public static PermisoDtm CrearObtener(ContextoSe contexto, IMapper mapeador, string nombre, enumClaseDePermiso clase, enumModoDeAccesoDeDatos modoAcceso) { var nombreDelPermiso = ComponerNombreDelPermisoDeDatos(nombre, clase, modoAcceso); var gestorDePermiso = Gestor(contexto, mapeador); var permiso = gestorDePermiso.LeerRegistro(nameof(PermisoDtm.Nombre), nombreDelPermiso, errorSiNoHay: false, errorSiHayMasDeUno: false, traqueado: false, conBloqueo: false, aplicarJoin: false); if (permiso == null) { permiso = CrearPermisoDeDatos(gestorDePermiso, nombreDelPermiso, clase, modoAcceso); } return(permiso); }
private static PermisoDtm CrearPermisoDeDatos(GestorDePermisos gestorDePermiso, string nombreDelPermiso, enumClaseDePermiso clase, enumModoDeAccesoDeDatos modoDeAcceso) { PermisoDtm permiso; var gestorDeClase = GestorDeClaseDePermisos.Gestor(gestorDePermiso.Contexto, gestorDePermiso.Mapeador); var claseDePermiso = gestorDeClase.LeerRegistro(nameof(ClasePermisoDtm.Nombre), clase.ToString(), errorSiNoHay: false, errorSiHayMasDeUno: false, traqueado: false, conBloqueo: false, aplicarJoin: false); if (claseDePermiso == null) { claseDePermiso = gestorDeClase.Crear(clase); } var gestorDeTipo = GestorDeTipoPermiso.Gestor(gestorDePermiso.Contexto, gestorDePermiso.Mapeador); var tipoDePermiso = gestorDeTipo.LeerRegistro(nameof(TipoPermisoDtm.Nombre), ModoDeAcceso.ToString(modoDeAcceso), errorSiNoHay: false, errorSiHayMasDeUno: false, traqueado: false, conBloqueo: false, aplicarJoin: false); if (tipoDePermiso == null) { tipoDePermiso = gestorDeTipo.CrearTipoPermisoDeDatos(modoDeAcceso); } permiso = gestorDePermiso.Crear(nombreDelPermiso, tipoDePermiso, claseDePermiso); return(permiso); }
private static string ComponerNombreDelPermisoDeDatos(string nombre, enumClaseDePermiso clase, enumModoDeAccesoDeDatos modoAcceso) { return($"{ClaseDePermiso.ToString(clase).ToUpper()} ({ModoDeAcceso.ToString(modoAcceso)}): {nombre}"); }
public static PermisoDtm ModificarPermisoDeDatos(ContextoSe contexto, IMapper mapeador, PermisoDtm permiso, string nombre, enumClaseDePermiso clase, enumModoDeAccesoDeDatos modoAcceso) { var gestorDePermiso = Gestor(contexto, mapeador); var nuevoNombre = ComponerNombreDelPermisoDeDatos(nombre, clase, modoAcceso); if (nuevoNombre == permiso.Nombre) { return(permiso); } permiso.Nombre = nuevoNombre; return(gestorDePermiso.Modificar(permiso)); }
public bool TienePermisoDeDatos(UsuarioDtm usuarioConectado, enumModoDeAccesoDeDatos permisosNecesarios, object elemento) { var gestorDeNegocio = GestorDeNegocios.Gestor(Contexto, Mapeador); return(gestorDeNegocio.TienePermisos(usuarioConectado, permisosNecesarios, (enumNegocio)elemento)); }