Пример #1
0
        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]);
        }
Пример #3
0
        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");
        }
Пример #4
0
 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;
 }
Пример #5
0
 public OpcionDeMenu(Menu <TElemento> menu, AccionDeMenu accion, string titulo, enumModoDeAccesoDeDatos permisosNecesarios)
     : this(menu, accion, TipoDeLlamada.Get, titulo, permisosNecesarios, accion.ClaseDeAccion)
 {
 }
Пример #6
0
 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));
        }