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 user_settings::*;
|
||||||
pub use voice_state::*;
|
pub use voice_state::*;
|
||||||
pub use webhook::*;
|
pub use webhook::*;
|
||||||
|
pub use mfa_token::*;
|
||||||
|
|
||||||
use crate::types::Shared;
|
use crate::types::Shared;
|
||||||
#[cfg(feature = "client")]
|
#[cfg(feature = "client")]
|
||||||
|
@ -67,6 +68,7 @@ mod user;
|
||||||
mod user_settings;
|
mod user_settings;
|
||||||
mod voice_state;
|
mod voice_state;
|
||||||
mod webhook;
|
mod webhook;
|
||||||
|
mod mfa_token;
|
||||||
|
|
||||||
#[cfg(feature = "client")]
|
#[cfg(feature = "client")]
|
||||||
#[async_trait(?Send)]
|
#[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 apierror::*;
|
||||||
pub use auth::*;
|
pub use auth::*;
|
||||||
|
pub use mfa::*;
|
||||||
pub use channel::*;
|
pub use channel::*;
|
||||||
pub use guild::*;
|
pub use guild::*;
|
||||||
pub use message::*;
|
pub use message::*;
|
||||||
|
@ -14,6 +15,7 @@ pub use invites::*;
|
||||||
|
|
||||||
mod apierror;
|
mod apierror;
|
||||||
mod auth;
|
mod auth;
|
||||||
|
mod mfa;
|
||||||
mod channel;
|
mod channel;
|
||||||
mod guild;
|
mod guild;
|
||||||
mod message;
|
mod message;
|
||||||
|
|
Loading…
Reference in New Issue