feat: add Request/Response and other necessary objects for MFA implementation
This commit is contained in:
parent
b4a8082f29
commit
2dcee5cff0
|
@ -0,0 +1,7 @@
|
|||
use chrono::{DateTime, Utc};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct MfaToken {
|
||||
pub token: String,
|
||||
pub expires_at: DateTime<Utc>,
|
||||
}
|
|
@ -26,6 +26,7 @@ pub use user::*;
|
|||
pub use user_settings::*;
|
||||
pub use voice_state::*;
|
||||
pub use webhook::*;
|
||||
pub use mfa_token::*;
|
||||
|
||||
use crate::types::Shared;
|
||||
#[cfg(feature = "client")]
|
||||
|
@ -67,6 +68,7 @@ mod user;
|
|||
mod user_settings;
|
||||
mod voice_state;
|
||||
mod webhook;
|
||||
mod mfa_token;
|
||||
|
||||
#[cfg(feature = "client")]
|
||||
#[async_trait(?Send)]
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
use std::fmt::Display;
|
||||
|
||||
use serde::{Serialize, Deserialize};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct MfaRequiredSchema {
|
||||
pub message: String,
|
||||
pub code: i32,
|
||||
pub mfa: MfaVerificationSchema,
|
||||
}
|
||||
|
||||
impl Display for MfaRequiredSchema {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.debug_struct("MfaRequired")
|
||||
.field("message", &self.message)
|
||||
.field("code", &self.code)
|
||||
.field("mfa", &self.mfa)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct MfaVerificationSchema {
|
||||
pub ticket: String,
|
||||
pub methods: Vec<MfaMethod>
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct MfaMethod {
|
||||
#[serde(rename = "type")]
|
||||
pub kind: MfaType,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub challenge: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub backup_codes_allowed: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum MfaType {
|
||||
TOTP,
|
||||
SMS,
|
||||
Backup,
|
||||
WebAuthn,
|
||||
Password,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct MfaVerifySchema {
|
||||
pub ticket: String,
|
||||
pub mfa_type: MfaType,
|
||||
pub data: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct MfaTokenSchema {
|
||||
pub token: String,
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
pub use apierror::*;
|
||||
pub use auth::*;
|
||||
pub use mfa::*;
|
||||
pub use channel::*;
|
||||
pub use guild::*;
|
||||
pub use message::*;
|
||||
|
@ -14,6 +15,7 @@ pub use invites::*;
|
|||
|
||||
mod apierror;
|
||||
mod auth;
|
||||
mod mfa;
|
||||
mod channel;
|
||||
mod guild;
|
||||
mod message;
|
||||
|
|
Loading…
Reference in New Issue