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 5cabf4d0400e0db3dffabc2cdafb803d811a01de
parent a03db6d2241dfc6e138136c5ffaa840a7680e872
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sat,  7 Dec 2019 14:38:32 +0100

Fix IP not shown when failed login (Fixes #761)

Diffstat:
Msrc/api/identity.rs | 4++--
Msrc/error.rs | 17++++++++++++++---
2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/api/identity.rs b/src/api/identity.rs @@ -211,7 +211,7 @@ fn twofactor_auth( let twofactor_code = match data.two_factor_token { Some(ref code) => code, - None => err_json!(_json_err_twofactor(&twofactor_ids, user_uuid, conn)?), + None => err_json!(_json_err_twofactor(&twofactor_ids, user_uuid, conn)?, "2FA token not provided"), }; let selected_twofactor = twofactors @@ -237,7 +237,7 @@ fn twofactor_auth( Some(ref code) if !CONFIG.disable_2fa_remember() && ct_eq(code, twofactor_code) => { remember = 1; // Make sure we also return the token here, otherwise it will only remember the first time } - _ => err_json!(_json_err_twofactor(&twofactor_ids, user_uuid, conn)?), + _ => err_json!(_json_err_twofactor(&twofactor_ids, user_uuid, conn)?, "2FA Remember token not provided"), } } _ => err!("Invalid two factor provider"), diff --git a/src/error.rs b/src/error.rs @@ -86,7 +86,18 @@ impl std::fmt::Debug for Error { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self.source() { Some(e) => write!(f, "{}.\n[CAUSE] {:#?}", self.message, e), - None => write!(f, "{}", self.message), + None => match self.error { + ErrorKind::EmptyError(_) => Ok(()), + ErrorKind::SimpleError(ref s) => { + if &self.message == s { + write!(f, "{}", self.message) + } else { + write!(f, "{}. {}", self.message, s) + } + }, + ErrorKind::JsonError(_) => write!(f, "{}", self.message), + _ => unreachable!(), + }, } } } @@ -200,8 +211,8 @@ macro_rules! err { #[macro_export] macro_rules! err_json { - ($expr:expr) => {{ - return Err(crate::error::Error::from($expr)); + ($expr:expr, $log_value:expr) => {{ + return Err(($log_value, $expr).into()); }}; }