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:
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());
}};
}