use crate::auth::identity_toolkit::requests::AccountInfo;
use serde_json::Map;
#[derive(Debug, Clone)]
pub struct UserRecord {
pub uid: String,
pub email: Option<String>,
pub email_verified: bool,
pub display_name: Option<String>,
pub disabled: bool,
pub custom_claims: Map<String, serde_json::Value>,
}
impl From<AccountInfo> for UserRecord {
fn from(info: AccountInfo) -> Self {
let custom_claims = info
.custom_attributes
.as_deref()
.and_then(|raw| serde_json::from_str(raw).ok())
.unwrap_or_default();
Self {
uid: info.local_id,
email: info.email,
email_verified: info.email_verified,
display_name: info.display_name,
disabled: info.disabled.unwrap_or(false),
custom_claims,
}
}
}
#[derive(Debug, Default, Clone)]
pub struct CreateUserRequest {
pub uid: Option<String>,
pub email: Option<String>,
pub password: Option<String>,
pub display_name: Option<String>,
pub disabled: Option<bool>,
}
#[derive(Debug, Default, Clone)]
pub struct UpdateUserRequest {
pub email: Option<String>,
pub display_name: Option<String>,
pub disabled: Option<bool>,
pub custom_claims: Option<Map<String, serde_json::Value>>,
}