supabase_auth_redux/models/
user.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Default, Deserialize, Serialize, PartialEq, Eq)]
11#[serde(default)]
12pub struct UserSchema {
13 pub id: Uuid,
15
16 pub aud: String,
18 pub role: String,
20 pub email: Option<String>,
22 #[serde(with = "time::serde::rfc3339::option")]
24 pub email_confirmed_at: Option<time::OffsetDateTime>,
25 #[serde(with = "time::serde::rfc3339::option")]
27 pub invited_at: Option<time::OffsetDateTime>,
28 pub phone: Option<String>,
30 #[serde(with = "time::serde::rfc3339::option")]
32 pub phone_confirmed_at: Option<time::OffsetDateTime>,
33 #[serde(with = "time::serde::rfc3339::option")]
35 pub confirmation_sent_at: Option<time::OffsetDateTime>,
36 #[serde(with = "time::serde::rfc3339::option")]
38 pub confirmed_at: Option<time::OffsetDateTime>,
39 #[serde(with = "time::serde::rfc3339::option")]
41 pub recovery_sent_at: Option<time::OffsetDateTime>,
42 pub new_email: Option<String>,
44 #[serde(with = "time::serde::rfc3339::option")]
46 pub email_change_sent_at: Option<time::OffsetDateTime>,
47 pub new_phone: Option<String>,
49 #[serde(with = "time::serde::rfc3339::option")]
51 pub phone_change_sent_at: Option<time::OffsetDateTime>,
52 #[serde(with = "time::serde::rfc3339::option")]
54 pub reauthentication_sent_at: Option<time::OffsetDateTime>,
55 #[serde(with = "time::serde::rfc3339::option")]
57 pub last_sign_in_at: Option<time::OffsetDateTime>,
58 pub user_metadata: Option<HashMap<String, serde_json::Value>>,
60 pub app_metadata: Option<HashMap<String, serde_json::Value>>,
62 pub factors: Vec<MFAFactorSchema>,
64 pub identities: Option<Vec<HashMap<String, serde_json::Value>>>,
66 #[serde(with = "time::serde::rfc3339::option")]
68 pub banned_until: Option<time::OffsetDateTime>,
69 #[serde(with = "time::serde::rfc3339::option")]
71 pub created_at: Option<time::OffsetDateTime>,
72 #[serde(with = "time::serde::rfc3339::option")]
74 pub deleted_at: Option<time::OffsetDateTime>,
75 #[serde(with = "time::serde::rfc3339::option")]
77 pub updated_at: Option<time::OffsetDateTime>,
78}
79
80#[derive(Debug, Clone, Deserialize, Serialize, Eq, PartialEq)]
82pub struct MFAFactorSchema {
83 factor_type: Option<String>,
85 friendly_name: Option<String>,
87 id: Option<Uuid>,
89 status: Option<MFAFactorStatus>,
91}
92
93#[derive(Clone, Copy, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
95pub enum MFAFactorStatus {
96 Verified,
98 #[default]
100 Unverified,
101}