public frmLogin() { InitializeComponent(); _maxIntentos = int.Parse(ConfigurationManager.AppSettings["intentosLogin"].ToString()); _lnSistema = new LnSistema(ModUsuario.SessionObjEnDatosConn); //USUARIO //Almacenamos en el Tag el texto por defecto txtUsuario.Tag = "Usuario"; //Ponemos el texto por defecto txtUsuario.Text = txtUsuario.Tag.ToString(); //Ponemos el froecolor en gris txtUsuario.ForeColor = Color.Gray; //Suscribimos el textbox a los eventos (Se puede hacer en el diseñador) //CONTRASEÑA //Almacenamos en el Tag el texto por defecto txtPassword.Tag = "***************"; //Ponemos el texto por defecto txtPassword.Text = txtPassword.Tag.ToString(); //Ponemos el froecolor en gris txtPassword.ForeColor = Color.Gray; }
/// <summary> /// ''' Permite habilitrar los modulos a los que el usuario tiene acceo en base a sus permisos en la base de datos /// ''' </summary> /// ''' <remarks></remarks> public void HabilitaModulos() { // Permiso de acceso a modulos. try { DataTable dt; LnSistema objLnSistema = new LnSistema(ModUsuario.SessionObjEnDatosConn); string strError = null; dt = objLnSistema.ConsultaPermisosPMM(ModUsuario.SessionIdUsuario, ref strError); if (dt != null) { BindingSource bind = new BindingSource { DataSource = dt }; // Se habilitan los botones de acceso a los modulos btnSistema.Enabled = bind.Find("IdModulo", ClsEnumeradores.Modulos.Sistema) >= 0; btnCatálogos.Enabled = bind.Find("IdModulo", ClsEnumeradores.Modulos.Catalogos) >= 0; btnVentas.Enabled = bind.Find("IdModulo", ClsEnumeradores.Modulos.Ventas) >= 0; } } catch (Exception) { throw; } }
private bool valida() { if (txtPswActual.Text == "") { MessageBox.Show("Escriba su contraseña actual", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } if (txtPwsNueva.Text == "") { MessageBox.Show("Escriba la nueva contraseña", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } if (txtPswConfirmacion.Text == "") { MessageBox.Show("Escriba la confirmacion de la contraseña", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } if (txtPwsNueva.Text != txtPswConfirmacion.Text) { MessageBox.Show("La nueva contraseña y su confirmacion deben ser iguales", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } if (!Regex.IsMatch(txtPwsNueva.Text, @"(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$")) { MessageBox.Show("La contraseña debe : \n\t Contener al menos una letra mayúscula. \n\t Contener al menos una letra minúscula. \n\t Contener al menos un número o caracter especial. \n\t Tener una longitud mínima de 8 caracteres.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); return(false); } int intResult; LnSistema objLnSistema = new LnSistema(ModUsuario.SessionObjEnDatosConn); intResult = objLnSistema.ValidaHistorialPsw(ModUsuario.SessionIdUsuario, new ClsFunciones().GetMD5Hash(txtPwsNueva.Text)); if (intResult == 1) { MessageBox.Show("La contraseña ha sido establecida anteriormente, por favor defina una nueva contraseña", "Contraseña en histórico", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(false); } return(true); }
public FrmSistema() { InitializeComponent(); // ********** Inicialización de objetos ************* ObjEnPerfil = new Sis.PERFILES(); objEnUsuario = new Sis.USUARIOS(); ObjFunciones = new ClsFunciones(); ObjLnSistema = new LnSistema(ModUsuario.SessionObjEnDatosConn); ObjLnSistemaAdmin = new LnSistema(ModUsuario.SessionObjEnParametrosGrales.UsuarioAdmSeg, ModUsuario.SessionObjEnParametrosGrales.PswAdmSeg, ModUsuario.SessionIdUsuario); ObjLnfunciones = new LnFunciones(ModUsuario.SessionObjEnDatosConn); tvPermisos.ImageList = imgLArbol; }
/// <summary> /// ''' Rutina que registra el acceso a un modulo en la bitacora de sesiones /// ''' </summary> /// ''' <param name="IdModulo">En modulo al cual se accede</param> /// ''' <param name="IdAccionSesion">Accion sobre el modulo (acceso/salida)</param> /// ''' <remarks></remarks> public void RegistraSesion(int IdModulo, int IdAccionSesion) { try { LnSistema objLnSistemas = new LnSistema(ModUsuario.SessionObjEnDatosConn); Sis.LOG_SESIONES objenLogSesiones = new Sis.LOG_SESIONES { IdModulo = IdModulo, IdAccionSesion = IdAccionSesion, IdUsuario = ModUsuario.SessionIdUsuario }; objLnSistemas.ABClogSesiones('A', objenLogSesiones); } catch (Exception) { throw; } }
private void btnAceptar_Click(System.Object sender, System.EventArgs e) { if (valida()) { ClsFunciones fn = new ClsFunciones(); string strNvaPsw = fn.GetMD5Hash(txtPwsNueva.Text); LnSistema objlnUsuario = new LnSistema(ModUsuario.SessionObjEnParametrosGrales.UsuarioAdmSeg, ModUsuario.SessionObjEnParametrosGrales.PswAdmSeg, ModUsuario.SessionIdUsuario); Sis.USUARIOS objenUsuario = new Sis.USUARIOS { IdUsuario = ModUsuario.SessionIdUsuario, CambioContrasena = "0", Password = strNvaPsw, UsuarioAD = false }; try { objlnUsuario.ABCUsuarios('D', objenUsuario); MessageBox.Show("La contraseña ha sido cambiada correctamente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); ModUsuario.SessionPassword = strNvaPsw; ModUsuario.SessionObjEnDatosConn.Password = strNvaPsw; CambioPassword = true; Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { txtPwsNueva.Text = ""; txtPswConfirmacion.Text = ""; } }
/// <summary> /// ''' Genera los menus del formulario dinámicamente /// ''' </summary> /// ''' <param name="Menu">mnuCatalagos</param> /// ''' <param name="BarraBotones">Barra de botones</param> /// ''' <param name="IdUsuario">Identificador del usuario</param> /// ''' <param name="IdModulo">Identificador del módulo</param> /// ''' <remarks></remarks> private void GeneraMenu(ref MenuStrip Menu, ref ToolStrip BarraBotones, int IdUsuario, int IdModulo) { LnSistema objLnSistema = new LnSistema(ModUsuario.SessionObjEnDatosConn); DataTable dtMenus; DataTable dtAcciones; string Mensaje; // Limpiamos tanto el menu como la barra de botones y les indicamos la lista de imagenes que tomará Menu.Items.Clear(); BarraBotones.Items.Clear(); Menu.ImageList = imgListBotones; BarraBotones.ImageList = imgListBotones; // Llenamos el DataTable con los menus que tiene el modulo que se mande por referencia Mensaje = ""; dtMenus = objLnSistema.ConsultaPermisosPMM(IdUsuario, ref Mensaje, IdModulo, 0); // Validamos que no haya ocurrido ningun error if (Mensaje != "") { MessageBox.Show(Mensaje, "Error al cargar el menu", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Revisamos que haya menus a los que tenga acceso el usuario if (dtMenus.Rows.Count == 0) { MessageBox.Show("No tienes menus habilitados en este módulo", "Modulo denegado", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } // Recorremos los renglones para construir el menu con las opciones foreach (DataRow drMenu in dtMenus.Rows) { ToolStripMenuItem mnuItem = new ToolStripMenuItem(); // Agregamos el menuitem que trae las opciones al menustrip Menu.Items.Add(mnuItem); { var withBlock = mnuItem; withBlock.Text = drMenu["Menu"].ToString(); withBlock.Name = "mnu" + drMenu["IdMenu"].ToString(); // Si trae imagen, se la asignamos al menu if (drMenu["imagen"].ToString() != "") { withBlock.Image = imgListBotones.Images[drMenu["imagen"].ToString()]; } // Si trae texto de ayuda lo ponemos if (drMenu["ayuda"].ToString() != "") { withBlock.ToolTipText = drMenu["ayuda"].ToString(); } // Obtenemos las acciones, osea los items de cada menu segun los permisos del usuario dtAcciones = objLnSistema.ConsultaPermisosPMM(IdUsuario, ref Mensaje, IdModulo, (int)drMenu["IdMenu"]); // Agregamos las opciones del menu, en base a las acciones del menu foreach (DataRow drMenuItem in dtAcciones.Rows) { ToolStripItem botonStrip = null /* TODO Change to default(_) if this is not a reference type */; string mnuItemNombre = "mnuItem" + drMenuItem["IdAccion"].ToString().Trim(); string mnuBotonItemNombre = "tsboton" + drMenuItem["IdAccion"].ToString().Trim(); // Creamos la opcion del menu ToolStripMenuItem mnuItemOpcion = new ToolStripMenuItem(drMenuItem["Accion"].ToString().Trim(), null, new EventHandler(Menu_Click)); // Si el valor del campo boton es true, generamos un boton que haga referencia if ((bool)drMenuItem["boton"]) { botonStrip = new ToolStripButton(drMenuItem["Accion"].ToString().Trim(), null, new EventHandler(Menu_Click)); botonStrip.DisplayStyle = ToolStripItemDisplayStyle.Image; BarraBotones.Items.Add(botonStrip); if ((bool)drMenuItem["separador"]) { BarraBotones.Items.Add(new ToolStripSeparator()); } } // Si trae un separador esta opcion, lo agregamos if ((bool)drMenuItem["separador"] & (int)drMenuItem["Orden"] != 1) { withBlock.DropDownItems.Add("-"); } withBlock.DropDownItems.Add(mnuItemOpcion); { var withBlock1 = mnuItemOpcion; withBlock1.Name = mnuItemNombre; if ((bool)drMenuItem["boton"]) { botonStrip.Name = mnuBotonItemNombre; } // Si trae imagen, se la asignamos al menu if (drMenuItem["imagen"].ToString() != "") { withBlock1.Image = imgListBotones.Images[drMenuItem["imagen"].ToString()]; // Agregamo la imagen al boton de acceso rapido if ((bool)drMenuItem["boton"]) { botonStrip.Image = imgListBotones.Images[drMenuItem["imagen"].ToString()]; } } // Si trae texto de ayuda lo ponemos if (drMenuItem["ayuda"].ToString() != "") { withBlock1.ToolTipText = drMenuItem["ayuda"].ToString(); // Agregamo la ayuda al boton de acceso rapido if ((bool)drMenuItem["boton"]) { botonStrip.ToolTipText = drMenuItem["ayuda"].ToString(); } } // Verificamos si trae teclas de acceso rapido if (drMenuItem["Caracter"].ToString().Trim() != "") { int CodigoTecla; CodigoTecla = int.Parse(drMenuItem["Caracter"].ToString()); CodigoTecla += (bool)drMenuItem["Ctrl"] ? (int)ClsEnumeradores.TeclasAtajos.Ctrl : 0; CodigoTecla += (bool)drMenuItem["Alt"] ? (int)ClsEnumeradores.TeclasAtajos.Alt : 0; CodigoTecla += (bool)drMenuItem["Shift"] ? (int)ClsEnumeradores.TeclasAtajos.Shift : 0; withBlock1.ShortcutKeys = (Keys)CodigoTecla; withBlock1.ShowShortcutKeys = true; } } } } } // Una vez creados los menus a partir de la bd, se generá el menu de "ver" ToolStripMenuItem tsmnuVer = new ToolStripMenuItem(); tsmnuBarraHerramientas = new ToolStripMenuItem("&Barra de herramientas", imgListBotones.Images[""], new EventHandler(Menu_Click)); tsmnuBarraEstado = new ToolStripMenuItem("B&arra de estado", imgListBotones.Images[""], new EventHandler(Menu_Click)); tsmnuBarraHerramientas.Checked = true; tsmnuBarraHerramientas.CheckOnClick = true; tsmnuBarraHerramientas.CheckState = CheckState.Checked; tsmnuBarraHerramientas.Name = "mnuItemBarraHerrmaientas"; tsmnuBarraEstado.Checked = true; tsmnuBarraEstado.CheckOnClick = true; tsmnuBarraEstado.CheckState = CheckState.Checked; tsmnuBarraEstado.Name = "mnuItemBarraEstado"; tsmnuVer.Text = "&Ver"; tsmnuVer.Name = "mnuVer"; // Agregamos las opciones que tendra el menu de ver tsmnuVer.DropDown.Items.Add(tsmnuBarraHerramientas); tsmnuVer.DropDown.Items.Add(tsmnuBarraEstado); Menu.Items.Add(tsmnuVer); Menu.MdiWindowListItem = tsmnuVer; // Se genera el menu de "ventana" var toolmnuVentana = new ToolStripMenuItem(); { toolmnuVentana.Text = "V&entanas"; toolmnuVentana.Name = "mnuVentanas"; // Agregamos las opciones que tendra el menu de ventanas toolmnuVentana.DropDown.Items.Add("Cascada", imgListBotones.Images["VentanasCascada.png"], new EventHandler(Menu_Click)).Name = "mnuItemCascada"; toolmnuVentana.DropDown.Items.Add("Horizontal", imgListBotones.Images["VentanasHorizontal.png"], new EventHandler(Menu_Click)).Name = "mnuItemHorizontal"; toolmnuVentana.DropDown.Items.Add("Vertical", imgListBotones.Images["VentanasVertical.png"], new EventHandler(Menu_Click)).Name = "mnuItemVertical"; toolmnuVentana.DropDown.Items.Add("Cerrar Todo", imgListBotones.Images["Delete3.png"], new EventHandler(Menu_Click)).Name = "mnuItemCerrarTodo"; } Menu.Items.Add(toolmnuVentana); Menu.MdiWindowListItem = toolmnuVentana; // Se genera el menu de "salir" //Menu.Items.Add("&Salir", imgListBotones.Images["Cancel2.png"], new EventHandler(Menu_Click)).Name = "mnuItemSalir"; }
/// <summary> /// ''' Evento al mostrarse el formulario /// ''' </summary> /// ''' <param name="sender"></param> /// ''' <param name="e"></param> /// ''' <remarks></remarks> private void btnEntrar_Click(System.Object sender, EventArgs e) { string strMensaje = ""; try { if (ValidaDatos()) { // Analizar el login del usuario para ver si es correcto o no ClsFunciones fn = new ClsFunciones(); string mensaje = ""; // Encriptamos la contraseña a MD5 string passwEncr = fn.GetMD5Hash(txtPassword.Text.Trim()); // Consultamos información del usuario para saber si existe y que tipo de usuario es (Sistema o Active Directory) Sis.USUARIOS ObjUsuario = new LnSistema(ConfigurationManager.AppSettings["UserLogin"], ConfigurationManager.AppSettings["PswLogin"]).ConsultaUsuarioLogin(txtUsuario.Text.Trim()); if (strMensaje != "") { throw new Exception(strMensaje); } var ParametrosGrales = new LnSistema(ConfigurationManager.AppSettings["UserLogin"], ConfigurationManager.AppSettings["PswLogin"]).ConsultaDatosAdmorseg(); ObjLnSistemaAdmin = new LnSistema(ParametrosGrales.UsuarioAdmSeg, ParametrosGrales.PswAdmSeg); // Enviamos los datos a una funcion que valida si la contrasela y usuario son correctos if (ValidaLogin(txtUsuario.Text.Trim(), passwEncr, ref mensaje)) { BlCambio = false; if (ModUsuario.SessionCambioContrasena) { MessageBox.Show("Su contraseña ha sido restablecida con anterioridad, por favor cambie su contraseña a una mas segura", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); BlCambio = true; } TimeSpan ts = DateTime.Now - ModUsuario.SessionFechaCambioContrasena; if (ts.TotalDays > ModUsuario.SessionObjEnParametrosGrales.PswVigencia & BlCambio == false) { MessageBox.Show("La Contraseña ha caducado, por favor cambie su contraseña", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); BlCambio = true; } if (BlCambio == true) { frmCambioPsw frmCambiopassword = new frmCambioPsw(); frmCambiopassword.ShowDialog(); BlCambioPsw = frmCambiopassword.CambioPassword; } Close(); } else { MessageBox.Show(mensaje, "Datos Incorrectos", MessageBoxButtons.OK, MessageBoxIcon.Warning); // Revisamos el numero de intentos _intento += 1; if (_intento == _maxIntentos) { // Bloqueo de usuario por intentos fallidos Ent.PARAMETROS_GRALES objParamGrales; Sis.USUARIOS objenusuario = new Sis.USUARIOS(); try { // Se consultan datos de usuario con permisos de bloqueo (usuario administrador de seguridad objParamGrales = new LnSistema(ConfigurationManager.AppSettings["UserLogin"], ConfigurationManager.AppSettings["PswLogin"]).ConsultaDatosAdmorseg(); // Bloquear usuario LnSistema objlnUsuario = new LnSistema(objParamGrales.UsuarioAdmSeg, objParamGrales.PswAdmSeg); objenusuario.NombreUsuario = txtUsuario.Text; objlnUsuario.BloqueoUsuario(objenusuario); // Notificar acción MessageBox.Show("Usuario bloqueado por intentos fallidos, contacte a su Administrador de sistemas", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); } } } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); } }