summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Reeder <vpzomtrrfrt@gmail.com>2020-09-27 13:53:52 -0600
committerColin Reeder <vpzomtrrfrt@gmail.com>2020-09-27 13:53:52 -0600
commit9439561f835bd6a1ca2196881122f6e2fa9c946c (patch)
treee5aa3fdb20cb7baebb1475266c88906ba08b53a0
parentccae2cb90ac79f1c138d1a5e5da6cb0f20b50607 (diff)
Add password change UI to user edit page
-rw-r--r--res/lang/en.ftl1
-rw-r--r--src/routes/mod.rs16
2 files changed, 16 insertions, 1 deletions
diff --git a/res/lang/en.ftl b/res/lang/en.ftl
index 49b873e..41371d9 100644
--- a/res/lang/en.ftl
+++ b/res/lang/en.ftl
@@ -126,6 +126,7 @@ to_post = Comment on
url = URL
user_edit_description_prompt = Profile Description:
user_edit_not_you = You can only edit your own profile.
+user_edit_password_prompt = Change Password
user_edit_submit = Save
user_edit_title = Edit Profile
user_id_prompt = User ID:
diff --git a/src/routes/mod.rs b/src/routes/mod.rs
index d2718e9..c651f43 100644
--- a/src/routes/mod.rs
+++ b/src/routes/mod.rs
@@ -1330,6 +1330,12 @@ async fn page_user_edit(
<textarea name={"description"}>{user.description.as_ref()}</textarea>
</label>
</div>
+ <div>
+ <label>
+ {lang.tr("user_edit_password_prompt", None)}<br />
+ <input name={"password"} type={"password"} value={""} autocomplete={"new-password"} />
+ </label>
+ </div>
<button type={"submit"}>{lang.tr("user_edit_submit", None)}</button>
</form>
</HTPage>
@@ -1348,7 +1354,15 @@ async fn handler_user_edit_submit(
let cookies = get_cookie_map_for_headers(&req_parts.headers)?;
let body = hyper::body::to_bytes(body).await?;
- let body: serde_json::Value = serde_urlencoded::from_bytes(&body)?;
+ let mut body: serde_json::map::Map<String, serde_json::Value> =
+ serde_urlencoded::from_bytes(&body)?;
+
+ // ignore password field if blank
+ if let Some(password) = body.get("password") {
+ if password == "" {
+ body.remove("password");
+ }
+ }
res_to_error(
ctx.http_client