vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit b67c5b77be725f6d71abff47498c6211ba1a9d30
parent d30878c4eaf71c2fd4c799bd9174a2abe09a7b62
Author: Jeremy Lin <jeremy.lin@gmail.com>
Date:   Sat,  7 Jan 2023 10:41:28 -0800

Change `text/plain` API responses to `application/json`

Recent versions of the Bitwarden clients (see bitwarden/clients#3574)
won't parse non-JSON responses. The most noticeable consequence is that
`/api/accounts/revision-date` responses won't be parsed, leading to
`/api/sync` always being called, even when it's not necessary.

Diffstat:
Msrc/api/core/accounts.rs | 15++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/api/core/accounts.rs b/src/api/core/accounts.rs @@ -660,9 +660,9 @@ async fn delete_account(data: JsonUpcase<PasswordData>, headers: Headers, mut co } #[get("/accounts/revision-date")] -fn revision_date(headers: Headers) -> String { +fn revision_date(headers: Headers) -> JsonResult { let revision_date = headers.user.updated_at.timestamp_millis(); - revision_date.to_string() + Ok(Json(json!(revision_date))) } #[derive(Deserialize)] @@ -792,14 +792,11 @@ async fn rotate_api_key(data: JsonUpcase<SecretVerificationRequest>, headers: He } #[get("/devices/knowndevice/<email>/<uuid>")] -async fn get_known_device(email: String, uuid: String, mut conn: DbConn) -> String { +async fn get_known_device(email: String, uuid: String, mut conn: DbConn) -> JsonResult { // This endpoint doesn't have auth header + let mut result = false; if let Some(user) = User::find_by_mail(&email, &mut conn).await { - match Device::find_by_uuid_and_user(&uuid, &user.uuid, &mut conn).await { - Some(_) => String::from("true"), - _ => String::from("false"), - } - } else { - String::from("false") + result = Device::find_by_uuid_and_user(&uuid, &user.uuid, &mut conn).await.is_some(); } + Ok(Json(json!(result))) }