Skip to main content

alibi_sqlx/store/entities/
two_factor.rs

1use crate::SqlxModel;
2use alibi_core::TwoFactor;
3use chrono::{DateTime, Utc};
4
5#[derive(Clone, Debug, PartialEq, sqlx::FromRow, SqlxModel)]
6#[auth(table = "twoFactor")]
7pub struct Model {
8    pub id: String,
9    pub secret: String,
10    #[sqlx(rename = "backupCodes")]
11    pub backup_codes: String,
12    #[sqlx(rename = "userId")]
13    pub user_id: String,
14    pub verified: Option<bool>,
15    #[sqlx(rename = "failedVerificationCount")]
16    pub failed_verification_count: Option<crate::Number>,
17    #[sqlx(rename = "lockedUntil")]
18    pub locked_until: Option<DateTime<Utc>>,
19}
20
21impl From<&Model> for TwoFactor {
22    fn from(model: &Model) -> Self {
23        Self {
24            id: model.id.clone(),
25            secret: model.secret.clone(),
26            backup_codes: model.backup_codes.clone(),
27            user_id: model.user_id.clone(),
28            verified: model.verified,
29            failed_verification_count: model.failed_verification_count.map(|value| value.0),
30            locked_until: model.locked_until,
31        }
32    }
33}