public List <AccesoGlobalBE> ListaAccesos(PermisoBE pPermisoBE)
        {
            List <AccesoGlobalBE> lstAccesoGlobalBE = new List <AccesoGlobalBE>();
            IDataReader           dr = null;

            try
            {
                using (DbCommand cmd = dbFENIXSEG.GetStoredProcCommand(GetNameStoreProcedure.spSelectViewPermisosTM))
                {
                    cmd.CommandTimeout = 0;
                    dbFENIXSEG.AddInParameter(cmd, "@rolID", System.Data.DbType.String, pPermisoBE.rolID);
                    dbFENIXSEG.AddInParameter(cmd, "@usuarioID", System.Data.DbType.String, pPermisoBE.usuarioID);
                    dbFENIXSEG.AddInParameter(cmd, "@plataformaID", System.Data.DbType.String, pPermisoBE.plataformaID);
                    dbFENIXSEG.AddInParameter(cmd, "@moduloID", System.Data.DbType.String, pPermisoBE.moduloID);
                    dr = dbFENIXSEG.ExecuteReader(cmd);

                    while (dr.Read())
                    {
                        lstAccesoGlobalBE.Add(AccesoGlobalP.ObtenerAcceso(dr));
                    }
                }
            }
            catch (Exception)
            {
                if (dr != null && !dr.IsClosed)
                {
                    dr.Close();
                }
                throw;
            }

            return(lstAccesoGlobalBE);
        }
        private void AgregarAlArbol(PermisoBE permiso, TreeNode nodoPadre, int nivel)
        {
            TreeNode nodo = new TreeNode(permiso.ToString())
            {
                Tag = permiso
            };
            List <PermisoBE> permisosHijos = permiso.DevolverPerfil();

            foreach (PermisoBE p in permisosHijos)
            {
                // Pongo este nivel como método de seguridad contra los permisos anidados de manera cíclica
                if (nivel < 10)
                {
                    AgregarAlArbol(p, nodo, nivel + 1);
                }
            }

            if (nodoPadre == null)
            {
                trvPermisosAsignados.Nodes.Add(nodo);
            }
            else
            {
                nodoPadre.Nodes.Add(nodo);
            }
        }
示例#3
0
        private static PermisoBE ObtenerPermiso(int permisoId, int profundidad)
        {
            PermisoBE  permiso;
            List <int> hijosIds = new List <int>();

            if (profundidad < 10)
            {
                hijosIds = ObtenerPermisosHijos(permisoId);
            }

            if (hijosIds.Any())
            {
                // Es un permiso compuesto
                permiso = new PermisoCompuestoBE();
                foreach (int hijoId in hijosIds)
                {
                    PermisoBE permisoHijo = ObtenerPermiso(hijoId, profundidad + 1);
                    permiso.AgregarPermisoHijo(permisoHijo);
                }
            }
            else
            {
                // Es un permiso simple
                permiso = new PermisoSimpleBE();
            }

            CompletarPermiso(permiso, permisoId);

            return(permiso);
        }
示例#4
0
        public static void Borrar(PermisoBE permiso)
        {
            PermisoDAL.Guardar(permiso, false, false);

            // Guardo la bitácora
            Bitacora.Loguear("Se eliminó el permiso con Id " + permiso.Id);
        }
示例#5
0
    public bool ValidarPermiso(int id, List <PermisoBE> lista)
    {
        bool contiene = false;

        if (lista != null)
        {
            foreach (var perm in lista)
            {
                if (perm.Id.Equals(id))
                {
                    contiene = true;
                    break;
                }
                PermisoBLL permisoBLL = new PermisoBLL();
                PermisoBE  permiso    = new PermisoBE();
                permiso.Id = perm.Id;
                permiso    = permisoBLL.Consulta(ref permiso);
                FamiliaBE familia = new FamiliaBE(permiso);
                familia.Permisos = permisoBLL.ConsultaPermisos(familia);

                foreach (var permisoHijo in familia.Permisos)
                {
                    if (permisoHijo.Id.Equals(id))
                    {
                        contiene = true;
                        break;
                    }
                }
            }
        }
        return(contiene);
    }
        private void BtnAgregarFamilia_Click(object sender, EventArgs e)
        {
            PermisoBE familiaSeleccionada = (PermisoBE)cmbFamilias.SelectedItem;

            permisoActual.AgregarPermisoHijo(familiaSeleccionada);

            RefrescarArbol();
        }
        private void BtnQuitar_Click(object sender, EventArgs e)
        {
            PermisoBE permisoSeleccionado = (PermisoBE)trvPermisosAsignados.SelectedNode.Tag;

            permisoActual.QuitarPermisoHijo(permisoSeleccionado);

            RefrescarArbol();
        }
        private void BtnAgregarPermiso_Click(object sender, EventArgs e)
        {
            PermisoBE permisoSeleccionado = (PermisoBE)cmbPermisos.SelectedItem;

            permisoActual.AgregarPermisoHijo(permisoSeleccionado);

            RefrescarArbol();
        }
示例#9
0
        private void loadMenu()
        {
            List <AccesoGlobalBE> lstAccesoGlobalBE      = new List <AccesoGlobalBE>();
            List <AccesoGlobalBE> lstAccesoGlobalBEPadre = new List <AccesoGlobalBE>();
            List <AccesoGlobalBE> lstAccesoGlobalBEHijo  = new List <AccesoGlobalBE>();
            AccesoGlobalBL        oAccesoGlobalBL        = new AccesoGlobalBL();

            ToolStripMenuItem subMenuPadre;
            ToolStripMenuItem subMenuHijo;

            if (mnuDinamico.Items.Count > 0)
            {
                return;
            }

            string rolID        = General.gRol;
            string usuarioID    = General.GetUsuario;
            string plataformaID = "0010000000005PT     ";
            string moduloID     = "0010000000001MD     ";

            PermisoBE oPermisoBE = new PermisoBE();

            oPermisoBE.rolID        = rolID.ToString();
            oPermisoBE.usuarioID    = usuarioID.ToString();
            oPermisoBE.plataformaID = plataformaID.Trim();
            oPermisoBE.moduloID     = moduloID.Trim();

            lstAccesoGlobalBE = oAccesoGlobalBL.ListaAccesos(oPermisoBE);

            lstAccesoGlobalBEPadre = lstAccesoGlobalBE.FindAll(x => x.menPadre == 0 && x.perEstado);
            lstAccesoGlobalBEPadre.Sort((x, y) => x.menPosicion.CompareTo(y.menPosicion));

            mnuDinamico.Items.Clear();
            foreach (AccesoGlobalBE item in lstAccesoGlobalBEPadre)
            {
                lstAccesoGlobalBEHijo = lstAccesoGlobalBE.FindAll(x => x.menPadre == item.menPosicion && x.perEstado);
                lstAccesoGlobalBEHijo.Sort((x, y) => x.menPosicion.CompareTo(y.menPosicion));
                subMenuPadre = new ToolStripMenuItem()
                {
                    Text = item.menNomPublico, Name = item.menNomInterno, Tag = item.menNomInterno
                };

                foreach (AccesoGlobalBE itemHijo in lstAccesoGlobalBEHijo)
                {
                    subMenuHijo = new ToolStripMenuItem()
                    {
                        Text = itemHijo.menNomPublico, Name = itemHijo.menNomInterno, Tag = itemHijo.menNomInterno
                    };
                    subMenuHijo.Click += new System.EventHandler(abrirFormulario);

                    subMenuPadre.DropDownItems.Add(subMenuHijo);
                }

                mnuDinamico.Items.Add(subMenuPadre);
            }
        }
        private void BtnCrearNuevo_Click(object sender, EventArgs e)
        {
            lstPerfilesActuales.SelectedItem = null;
            txtNombre.Enabled           = true;
            txtDescripcion.Enabled      = true;
            grpFamiliasPermisos.Enabled = true;
            btnGuardar.Enabled          = true;

            permisoActual = Permiso.NuevoPerfil();
        }
示例#11
0
        public static void Guardar(PermisoBE permiso)
        {
            PermisoDAL.Guardar(permiso, true, true);

            // Guardo la bitácora
            string mensajeBitacora = permiso.Id > 0 ? "Se actualizó el permiso con Id " + permiso.Id :
                                     "Se creó un nuevo permiso. Nombre: " + permiso.Nombre;

            Bitacora.Loguear(mensajeBitacora);
        }
示例#12
0
 public List <PermisoBE> ConsultaRango(PermisoBE filtroDesde, PermisoBE filtroHasta)
 {
     try
     {
         return(this._dao.ConsultaRango(filtroDesde, filtroHasta));
     }
     catch (Exception ex)
     {
         throw new Exception("No se puede consultar por rango.", ex);
     }
 }
示例#13
0
        private static void Insertar(PermisoBE permiso)
        {
            string query = "INSERT INTO permiso (nombre, descripcion) OUTPUT INSERTED.id VALUES (@nombre, @descripcion)";

            SqlParameter[] parameters =
            {
                new SqlParameter("@nombre",      permiso.Nombre),
                new SqlParameter("@descripcion", permiso.Descripcion)
            };
            permiso.Id = SqlHelper.Insertar(query, parameters);
        }
 private void ResetearFormulario()
 {
     txtNombre.Text              = "";
     txtDescripcion.Text         = "";
     txtNombre.Enabled           = false;
     txtDescripcion.Enabled      = false;
     grpFamiliasPermisos.Enabled = false;
     btnGuardar.Enabled          = false;
     btnQuitar.Enabled           = false;
     trvPermisosAsignados.Nodes.Clear();
     permisoActual = null;
 }
示例#15
0
        private static void Actualizar(PermisoBE permiso, bool habilitado)
        {
            string query = "UPDATE permiso SET nombre = @nombre, descripcion = @descripcion, habilitado = @habilitado WHERE id = @id";

            SqlParameter[] parameters =
            {
                new SqlParameter("@nombre",      permiso.Nombre),
                new SqlParameter("@descripcion", permiso.Descripcion),
                new SqlParameter("@habilitado",  habilitado),
                new SqlParameter("@id",          permiso.Id)
            };
            SqlHelper.Ejecutar(query, parameters);
        }
 private void TildarPermisosUsuario(UsuarioBE usuario, TreeNodeCollection nodosABuscar)
 {
     foreach (TreeNode nodo in nodosABuscar)
     {
         if (!nodo.Checked)
         {
             PermisoBE permiso = (PermisoBE)nodo.Tag;
             if (usuario.Perfil.Contains(permiso, new PermisoBE.Comparador()))
             {
                 _editando    = true;
                 nodo.Checked = true;
                 _editando    = false;
             }
             TildarPermisosUsuario(usuario, nodo.Nodes);
         }
     }
 }
        private void LstPerfilesActuales_SelectedIndexChanged(object sender, EventArgs e)
        {
            ResetearFormulario();
            cmbFamilias.DataSource = todosLosPerfiles.ToList();

            if (lstPerfilesActuales.SelectedItem != null)
            {
                permisoActual          = (PermisoBE)lstPerfilesActuales.SelectedItem;
                btnEditar.Enabled      = true;
                btnEliminar.Enabled    = true;
                txtNombre.Text         = permisoActual.Nombre;
                txtDescripcion.Text    = permisoActual.Descripcion;
                cmbFamilias.DataSource = todosLosPerfiles.Where(p => p.Id != permisoActual.Id).ToList();

                RefrescarArbol();
            }
        }
示例#18
0
        public static PermisoBE getPermiso(IDataReader dr)
        {
            PermisoBE oPermisoBE = new PermisoBE();

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.usuarioID = dr.GetString(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.rolID = dr.GetString(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.plataformaID = dr.GetString(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.plataformaNom = dr.GetString(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.moduloID = dr.GetString(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.moduloNom = dr.GetString(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.plaNumOrden = dr.GetInt32(dr.GetOrdinal("plataformaID"));
            }

            if (!dr.IsDBNull(dr.GetOrdinal("plataformaID")))
            {
                oPermisoBE.modNumOrden = dr.GetInt32(dr.GetOrdinal("plataformaID"));
            }

            return(oPermisoBE);
        }
示例#19
0
        private static void CompletarPermiso(PermisoBE permiso, int permisoId)
        {
            string query = "SELECT nombre, descripcion FROM permiso WHERE id = @id";

            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@id", permisoId)
            };

            DataTable table = SqlHelper.Obtener(query, parameters);

            if (table.Rows.Count > 0)
            {
                permiso.Id          = permisoId;
                permiso.Nombre      = table.Rows[0]["nombre"].ToString();
                permiso.Descripcion = table.Rows[0]["descripcion"].ToString();
            }
        }
 private void BtnEliminar_Click(object sender, EventArgs e)
 {
     try
     {
         DialogResult result = MessageBox.Show(ObtenerLeyenda("msgEliminar"), ObtenerLeyenda("msgEliminarTitulo"),
                                               MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
         if (result == DialogResult.Yes)
         {
             PermisoBE permiso = (PermisoBE)lstPerfilesActuales.SelectedItem;
             Permiso.Borrar(permiso);
             ActualizarPerfiles();
             ResetearFormulario();
         }
     }
     catch
     {
         MostrarError();
     }
 }
        private void AgregarAlArbol(PermisoBE permiso, TreeNode nodoPadre)
        {
            TreeNode nodo = new TreeNode(permiso.ToString())
            {
                Tag = permiso
            };
            List <PermisoBE> permisosHijos = permiso.DevolverPerfil();

            foreach (PermisoBE p in permisosHijos)
            {
                AgregarAlArbol(p, nodo);
            }

            if (nodoPadre == null)
            {
                trvPermisos.Nodes.Add(nodo);
            }
            else
            {
                nodoPadre.Nodes.Add(nodo);
            }
        }
示例#22
0
        public static List <PermisoBE> ObtenerPorUsuario(int usuarioId)
        {
            string query = "SELECT p.id " +
                           "FROM usuario_permiso up " +
                           "JOIN permiso p ON p.id = up.permiso_id " +
                           "WHERE up.usuario_id = @usuarioId " +
                           "AND p.habilitado = 1;";

            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter("@usuarioId", usuarioId)
            };

            DataTable        table    = SqlHelper.Obtener(query, parameters);
            List <PermisoBE> permisos = new List <PermisoBE>();

            foreach (DataRow row in table.Rows)
            {
                PermisoBE permiso = ObtenerPermiso(int.Parse(row["id"].ToString()), 1);
                permisos.Add(permiso);
            }
            return(permisos);
        }
示例#23
0
        public static List <PermisoBE> ObtenerPerfiles()
        {
            string query = "SELECT DISTINCT p.id " +
                           "FROM permiso p " +
                           "INNER JOIN permiso_permiso pp ON p.id = pp.permiso_padre_id " +
                           "WHERE p.habilitado = 1";

            try
            {
                DataTable        table    = SqlHelper.Obtener(query, new SqlParameter[0]);
                List <PermisoBE> perfiles = new List <PermisoBE>();
                foreach (DataRow row in table.Rows)
                {
                    PermisoBE permiso = ObtenerPermiso(int.Parse(row["id"].ToString()), 1);
                    perfiles.Add(permiso);
                }
                return(perfiles);
            }
            catch (Exception ex)
            {
                Log.Grabar(ex);
                return(new List <PermisoBE>());
            }
        }
示例#24
0
        public static void Guardar(PermisoBE permiso, bool habilitado, bool actualizarHijos)
        {
            // Primero guardo los datos del permiso en sí
            if (permiso.Id > 0)
            {
                Actualizar(permiso, habilitado);
            }
            else
            {
                Insertar(permiso);
            }

            // Luego guardo los permisos hijos
            if (permiso.Id > 0 && actualizarHijos)
            {
                // Borro permisos hijos
                string         query      = "DELETE FROM permiso_permiso WHERE permiso_padre_id = @permisoPadreId";
                SqlParameter[] parameters =
                {
                    new SqlParameter("@permisoPadreId", permiso.Id)
                };
                SqlHelper.Ejecutar(query, parameters);

                // Inserto cada uno de los permisos hijos
                query = "INSERT INTO permiso_permiso (permiso_padre_id, permiso_hijo_id) VALUES (@permisoPadreId, @permisoHijoId)";
                foreach (PermisoBE hijo in permiso.DevolverPerfil())
                {
                    parameters = new SqlParameter[2]
                    {
                        new SqlParameter("@permisoPadreId", permiso.Id),
                        new SqlParameter("@permisoHijoId", hijo.Id)
                    };
                    SqlHelper.Ejecutar(query, parameters);
                }
            }
        }
 public List <AccesoGlobalBE> ListaAccesos(PermisoBE pPermisoBE)
 {
     return(oAccesoGlobalDA.ListaAccesos(pPermisoBE));
 }
示例#26
0
 public List <PermisoBE> ConsultaRango(PermisoBE filtroDesde, PermisoBE filtroHasta)
 {
     throw new NotImplementedException();
 }