/// <summary> /// Busca los elementos negados al usuario (por perfil activo y usuario) para el recurso señalado /// </summary> /// <param name="control_usuario">Referencia del recurso por proteger</param> /// <param name="id_usuario">Id de usuario al que se configurará</param> public static void AplicaSeguridadControlusuarioWeb(System.Web.UI.UserControl control_usuario, int id_usuario) { //Instanciando recurso (forma o control de usuario) using (Forma f = new Forma(control_usuario.AppRelativeVirtualPath)) { //Si la forma existe if (f.habilitar) { //Cargando elementos negados al usuario señalado using (DataTable mit = ControlPerfilUsuario.CargaControlesNegadosUsuario(id_usuario, f.id_forma)) { //Si hay elementos por proteger ante el usuario if (mit != null) { //Para cada uno de los controles que serán negados foreach (string nombre_control in (from DataRow r in mit.Rows select r["Nombre"].ToString())) { //Para Cada control de interés foreach (System.Web.UI.Control control in control_usuario.Controls) { //Aplicando seguridad aplicaSeguridadControl(nombre_control, control, f.tipo_recurso); } } } } } } }
/// <summary> /// Autorización sobre el control indicado para el perfil /// </summary> /// <param name="id_accion">Id Acción</param> /// <param name="id_usuario">Id Usuario</param> /// <param name="valor">-1 Niega Control / 1 Autoriza Control</param> /// <param name="id_usuario_actualiza">Usuario que realiza las actualizaciones del registro</param> /// <returns></returns> public static RetornoOperacion AutorizaControlUsuario(byte id_accion, int id_usuario, decimal valor, int id_usuario_actualiza) { //DFeclaramos Objeto Resultado RetornoOperacion resultado = new RetornoOperacion(0); //Creamos la transacción using (TransactionScope scope = Transaccion.InicializaBloqueTransaccional(System.Transactions.IsolationLevel.ReadCommitted)) { //Cargamos Controles ligados a la Acción using (DataTable mit = SAT_CL.Seguridad.Control.CargaControles(id_accion)) { //Validamos Origen de Datos if (Validacion.ValidaOrigenDatos(mit)) { //Recorremos cada uno de los Controles foreach (DataRow r in mit.Rows) { //Instanciamos Control Perfil Usuario using (ControlPerfilUsuario objControlPerfilUsuario = new ControlPerfilUsuario(Tipo.Usuario, r.Field <int>("Id"), 0, id_usuario)) { //Validamos Existencia del Objeto if (objControlPerfilUsuario.id_control_perfil_usuario > 0) { //Negamos Control Perfil Usuario resultado = objControlPerfilUsuario.editaControlPerfilUsuario((Tipo)objControlPerfilUsuario.id_tipo, objControlPerfilUsuario.id_control, objControlPerfilUsuario.id_perfil, objControlPerfilUsuario.id_usuario, valor, id_usuario_actualiza, objControlPerfilUsuario.habilitar); } else { //Insertamos Nuevo Registro resultado = InsertaControlPerfilUsuario(Tipo.Usuario, r.Field <int>("Id"), 0, id_usuario, valor, id_usuario_actualiza); } //Validamos Resultado if (!resultado.OperacionExitosa) { //Salimos del Ciclo break; } } } } } //Validamos Resultado if (resultado.OperacionExitosa) { //Finalizamos Transacción scope.Complete(); } } //Devolvemos Resultado return(resultado); }