public ActionResult Login(Usuario usuario) { eliminar_privilegios(this); ObjectParameter exito = new ObjectParameter("Resultado", 0); bool error_conexion = false; try { db.SP_LoginUsuario(usuario.CorreoInstitucional, usuario.Contrasena, exito); } catch (EntityException) { error_conexion = true; exito.Value = false; } if (IdentidadManager.obtener_correo_actual() != null) // Si esta autenticado { return(RedirectToAction("Index", "Home")); } else if ((bool)exito.Value == true) // Si se pudo autenticar (correo y contrasenna validos). { // Note que si se cambia la contrasenna no se crea ninguna sesion. var recuperar_contrasena = db.Usuario.Where(m => m.CorreoInstitucional == usuario.CorreoInstitucional).ToList(); if (recuperar_contrasena.ElementAt(0).RecuperarContrasenna == true) { Session["recuperar"] = usuario.CorreoInstitucional; return(RedirectToAction("CambiarContrasenna")); } else { crear_sesion(usuario.CorreoInstitucional); return(RedirectToAction("Cambiar", "Perfil")); } } else // Si hay error en la autenticacion { // Desplegar mensaje de error personalizado. string mensaje_error = ""; if (error_conexion == true) { mensaje_error = "Error de conexión al servidor"; } else { mensaje_error = "Usuario o contraseña inválidos"; } ModelState.AddModelError("ErrorLogin", mensaje_error); // Devolverse a la misma pagina de Login informando de que hay un error de autenticacion. return(View(usuario)); } }