auto_derived!(
pub struct MFATicket {
#[serde(rename = "_id")]
pub id: String,
pub account_id: String,
pub token: String,
pub validated: bool,
pub authorised: bool,
pub last_totp_code: Option<String>,
}
#[serde(untagged)]
pub enum ResponseVerify {
NoTicket,
WithTicket {
ticket: MFATicket,
},
}
#[serde(untagged)]
pub enum MFAResponse {
Password { password: String },
Recovery { recovery_code: String },
Totp { totp_code: String },
}
#[derive(Default)]
pub struct MultiFactorStatus {
#[serde(skip_serializing_if = "crate::if_false", default)]
pub email_otp: bool,
#[serde(skip_serializing_if = "crate::if_false", default)]
pub trusted_handover: bool,
#[serde(skip_serializing_if = "crate::if_false", default)]
pub email_mfa: bool,
#[serde(skip_serializing_if = "crate::if_false", default)]
pub totp_mfa: bool,
#[serde(skip_serializing_if = "crate::if_false", default)]
pub security_key_mfa: bool,
#[serde(skip_serializing_if = "crate::if_false", default)]
pub recovery_active: bool,
}
pub enum MFAMethod {
Password,
Recovery,
Totp,
}
pub struct ResponseTotpSecret {
pub secret: String,
}
);