use serde::{Deserialize, Serialize};
use super::CurrentAccount;
#[derive(
Clone,
Copy,
Debug,
Eq,
PartialEq,
Hash,
Serialize,
Deserialize,
strum::AsRefStr,
)]
#[serde(rename_all = "camelCase")]
pub enum AdditionalAuthFactor {
EmailOtp,
Totp,
Otp,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct LoginResponse {
#[serde(rename = "requiresTwoFactorAuth")]
pub requires_additional_auth: Vec<AdditionalAuthFactor>,
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)]
#[serde(untagged)]
pub enum LoginResponseOrCurrentUser {
User(Box<CurrentAccount>),
Login(LoginResponse),
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct AuthenticationError {
pub verified: bool,
}
#[derive(Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct AuthStatus {
pub ok: bool,
pub token: String,
}
impl std::fmt::Debug for AuthStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("AuthStatus")
.field("ok", &self.ok)
.field("token", &"*****")
.finish()
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
pub struct SecondFactorVerificationStatus {
pub verified: bool,
}