commit 17052b665f5d49a6d185ed8e1adee1c4278d70ba
parent c5c9e3fd65df3624e259818b6c23c2816bb8bb66
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Sat, 17 Nov 2018 15:28:41 +0100
Merge pull request #257 from Step7750/fix-nfc-mobile
Fixes NFC Response for Mobile Yubikey OTP Login
Diffstat:
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/api/core/two_factor.rs b/src/api/core/two_factor.rs
@@ -507,9 +507,9 @@ struct EnableYubikeyData {
#[derive(Deserialize, Serialize, Debug)]
#[allow(non_snake_case)]
-struct YubikeyMetadata {
+pub struct YubikeyMetadata {
Keys: Vec<String>,
- Nfc: bool,
+ pub Nfc: bool,
}
use yubico::Yubico;
diff --git a/src/api/identity.rs b/src/api/identity.rs
@@ -269,6 +269,19 @@ fn _json_err_twofactor(providers: &[i32], user_uuid: &str, conn: &DbConn) -> Api
result["TwoFactorProviders2"][provider.to_string()] = Value::Object(map);
}
+ Some(TwoFactorType::YubiKey) => {
+ let twofactor = match TwoFactor::find_by_user_and_type(user_uuid, TwoFactorType::YubiKey as i32, &conn) {
+ Some(tf) => tf,
+ None => err!("No YubiKey devices registered"),
+ };
+
+ let yubikey_metadata: two_factor::YubikeyMetadata = serde_json::from_str(&twofactor.data).expect("Can't parse Yubikey Metadata");
+
+ let mut map = JsonMap::new();
+ map.insert("Nfc".into(), Value::Bool(yubikey_metadata.Nfc));
+ result["TwoFactorProviders2"][provider.to_string()] = Value::Object(map);
+ }
+
_ => {}
}
}