/// <summary> /// Método que autentica al usuario con las credenciales ingresadas. Si se comprueban correctas, lo redirige a su pantalla de inicio (según su rol); sino, le permite un nuevo intento de corregir sus credenciales /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btn_login_Click(object sender, EventArgs e) { A_USUARIO u = new A_USUARIO(); A_PERSONA p = new A_PERSONA(); TB_PERSONA persona = p.getPersonaByCorreoE(txt_email.Text); //Si las credenciales son correctas, se busca la información de la persona if (persona == null) { lbl_errors.Attributes.Remove("hidden"); lbl_errors.Text = "Usuario o contraseña incorrectos"; return; } TB_USUARIO usuario = u.getUsuarioByPersona(persona.ID_PERSONA); //A partir de la persona se extrae el resto de la información del usuario //Verificando las credenciales if (!u.Autenticar(txt_email.Text, txt_password.Text)) { lbl_errors.Attributes.Remove("hidden"); lbl_errors.Text = "Usuario o contraseña incorrectos"; return; } //Verificando el estado de la sesion int estado_sesion = u.getEstadoSesion(usuario.ID_USUARIO, Session.SessionID); //Tomando acciones segun resultado de la comprobacion: switch (estado_sesion) { case A_USUARIO.SESION_EXISTENTE_NO_EQUIVALENTE: //Sesion abierta, del que no es propietario. Preguntar si cerrar btn_restart_sesion.Visible = true; //btn_login.Visible = false; txt_password.Attributes.Remove("required"); Session["old_email"] = txt_email.Text; return; case A_USUARIO.SESION_NO_EXISTENTE: //Sesion nueva u.updateUsuarioAsAutenticado(usuario.ID_USUARIO, Session.SessionID, true); redirigir(usuario.ID_USUARIO, usuario.ID_ROL); break; case A_USUARIO.SESION_EXISTENTE: //Sesion abierta, pero del que es propietario redirigir(usuario.ID_USUARIO, usuario.ID_ROL); break; } }
protected void btn_restart_sesion_Click(object sender, EventArgs e) { A_USUARIO u = new A_USUARIO(); A_PERSONA p = new A_PERSONA(); //Evitando el robo de sesion string email = txt_email.Text; //Si se ha habilitado el boton para cerrar la sesion anterior, la contrasena no sera requerida, //Pero si intenta iniciar sesion con otro usuario, la contrasena sera requerida if (!email.Equals(Session["old_email"])) { //Ocultando boton de cerrar sesion activa btn_restart_sesion.Visible = true; //Haciendo obligatoria la contrasena txt_password.Attributes.Add("required", "true"); //Mostrando errores lbl_errors.Attributes.Remove("hidden"); lbl_errors.Text = "Usuario o contraseña incorrectos"; //Ocultando boton magico btn_restart_sesion.Visible = false; //Borrando la información de la Sesión Session.Remove("old_email"); return; } //Borrando la información de la Sesión Session.Remove("old_email"); TB_PERSONA persona = p.getPersonaByCorreoE(txt_email.Text); //Si las credenciales son correctas, se busca la información de la persona TB_USUARIO usuario = u.getUsuarioByPersona(persona.ID_PERSONA); //A partir de la persona se extrae el resto de la información del usuario //Escribiendo en BD que se actualizara el ID de la sesion que usara el usuario u.updateUsuarioAsAutenticado(usuario.ID_USUARIO, Session.SessionID, true); //Redirigiendo hacia la pagina correspondiente del rol redirigir(usuario.ID_USUARIO, usuario.ID_ROL); }
public void agregarUsuario() { try { A_USUARIO u = new A_USUARIO(); A_PERSONA p = new A_PERSONA(); var contrasena1 = Request.Form["txt_contrasena1"]; var contrasena2 = Request.Form["txt_contrasena2"]; if (string.IsNullOrWhiteSpace(contrasena1) || string.IsNullOrWhiteSpace(contrasena2) || !u.testContraseñas(contrasena1, contrasena2)) { errores = "Usuario no guardado. La contraseña no puede estar vacía ni contener solo espacios"; return; } if (contrasena1.Length < A_USUARIO.MAX_CARACTERES_CONTRASEÑA) { errores = "La contraseña debe contener " + A_USUARIO.MAX_CARACTERES_CONTRASEÑA + " caractes o mas"; return; } //Construyendo a la persona TB_PERSONA persona = new TB_PERSONA(); persona.NOMBRES = Request.Form["txt_nombres"]; persona.APELLIDOS = Request.Form["txt_apellidos"]; persona.CORREO_E = Request.Form["txt_correo"]; persona.TEL_FIJO = Request.Form["txt_telefono_fijo"]; persona.TEL_FIJO = Request.Form["txt_telefono_cel"]; string municipio = Request.Form["sel_id_municipio"]; persona.ID_MUNICIPIO = int.Parse(municipio); //Probando si el correo no fue registrado para otra persona antes: TB_PERSONA p_prueba = p.getPersonaByCorreoE(persona.CORREO_E); if (p_prueba != null) { errores = "El correo electrónico ya está registrado"; return; } MV_Exception res = p.AlmacenarPersona(persona, ((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO); if (res.IDENTITY == null) { throw new Exception(res.ERROR_MESSAGE); } persona.ID_PERSONA = int.Parse(res.IDENTITY.ToString()); //Construyendo al usuario TB_USUARIO usuario = new TB_USUARIO(); usuario.NOMBRE_USUARIO = Request.Form["txt_nombre_usuario"]; usuario.CONTRASENA = Request.Form["txt_contrasena1"]; usuario.ID_ROL = int.Parse(Request.Form["sel_id_rol"]); usuario.NOMBRE_USUARIO = Request.Form["txt_nombre_usuario"]; usuario.ID_PERSONA = persona.ID_PERSONA; res = u.createUsuario(usuario, ((MV_DetalleUsuario)Session["usuario"]).ID_USUARIO); info = "Usuario agregado correctamente"; } catch (Exception e) { errores = e.Message; H_LogErrorEXC.GuardarRegistroLogError(e); } }