diff options
| author | 2025-01-28 21:23:07 -0600 | |
|---|---|---|
| committer | 2025-01-28 21:23:07 -0600 | |
| commit | dc3917b05018cb32e2451d9eaed242036c5e7512 (patch) | |
| tree | f697a64acf2eb5d7d2419d9ca3b97be05f9067ee /src/auth/types.rs | |
| parent | interactive auth testing (diff) | |
wip: auth
Diffstat (limited to 'src/auth/types.rs')
| -rw-r--r-- | src/auth/types.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/auth/types.rs b/src/auth/types.rs new file mode 100644 index 0000000..8889b63 --- /dev/null +++ b/src/auth/types.rs @@ -0,0 +1,49 @@ +use chrono::{DateTime, Utc};
+use multimap::MultiMap;
+use serde::{Deserialize, Serialize};
+use uuid::Uuid;
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Property {
+ pub value: String,
+ pub signature: Option<String>
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct UserProfile {
+ pub uuid: Option<Uuid>,
+ pub name: Option<String>,
+
+ #[serde(default, skip_serializing_if = "MultiMap::is_empty")]
+ pub properties: MultiMap<String, Property>
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub(super) struct Token {
+ pub value: String,
+
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub expire: Option<DateTime<Utc>>
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct MsaUser {
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub profile: Option<UserProfile>,
+ pub xuid: Uuid,
+ pub(super) auth_token: Option<Token>,
+ pub(super) xbl_token: Option<Token>,
+ pub(super) refresh_token: Option<Token>
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(tag = "type")]
+pub enum User {
+ Dummy(UserProfile),
+ MSA(MsaUser)
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct AuthenticationDatabase {
+ pub users: Vec<User>
+}
|
