use serde::{Deserialize, Serialize};
use super::account::Account;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct UserProfile {
pub id: String,
pub name: String,
pub email: String,
#[serde(default)]
pub telephone: Option<String>,
#[serde(default)]
pub government_id: Option<String>,
#[serde(default)]
pub is_email_verified: bool,
#[serde(default)]
pub has_accepted_terms: bool,
pub created_at: String,
#[serde(default)]
pub to_be_deleted_at: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct UserAccount {
pub id: String,
pub name: String,
#[serde(default)]
pub roles: Vec<String>,
#[serde(default)]
pub is_delete_allowed: bool,
pub created_at: String,
}
impl From<UserAccount> for Account {
fn from(ua: UserAccount) -> Self {
Account {
id: ua.id,
name: ua.name,
roles: ua.roles,
is_delete_allowed: ua.is_delete_allowed,
created_at: ua.created_at,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct LoginResult {
pub access_token: String,
pub user: UserProfile,
#[serde(default)]
pub accounts: Vec<UserAccount>,
}