From 28f29d210fc90df8cd4b9879d0eb16bb69326f27 Mon Sep 17 00:00:00 2001 From: Colin Reeder Date: Thu, 8 Oct 2020 17:08:50 -0600 Subject: Ignore email address if empty (#103) --- src/routes/mod.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/routes/mod.rs b/src/routes/mod.rs index c651f43..5621345 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -1,5 +1,6 @@ use serde_derive::Deserialize; use std::borrow::Cow; +use std::collections::HashMap; use std::sync::Arc; use crate::components::{ @@ -1053,7 +1054,7 @@ async fn page_signup_inner( ctx: Arc, headers: &hyper::HeaderMap, display_error: Option, - prev_values: Option<&serde_json::Value>, + prev_values: Option<&HashMap, serde_json::Value>>, ) -> Result, crate::Error> { let lang = crate::get_lang_for_headers(&headers); let cookies = get_cookie_map_for_headers(&headers)?; @@ -1111,8 +1112,11 @@ async fn handler_signup_submit( let (req_parts, body) = req.into_parts(); let body = hyper::body::to_bytes(body).await?; - let mut body: serde_json::Value = serde_urlencoded::from_bytes(&body)?; - body["login"] = true.into(); + let mut body: HashMap, serde_json::Value> = serde_urlencoded::from_bytes(&body)?; + body.insert("login".into(), true.into()); + if body.get("email_address").and_then(|x| x.as_str()) == Some("") { + body.remove("email_address"); + } let api_res = res_to_error( ctx.http_client -- cgit v1.2.3