Compare commits

..
Author SHA1 Message Date
phoenix 8e31f27dff cargo fmt
Release Tagging / release (pull_request) Successful in 28s
Rust Build / Check (pull_request) Successful in 32s
Rust Build / Test Suite (pull_request) Successful in 25s
Rust Build / Rustfmt (pull_request) Successful in 25s
Rust Build / Clippy (pull_request) Failing after 29s
Rust Build / build (pull_request) Successful in 24s
2026-05-29 22:17:05 -04:00
phoenix f91069cded Formatted code
Release Tagging / release (pull_request) Successful in 37s
Rust Build / Check (pull_request) Successful in 38s
Rust Build / Rustfmt (pull_request) Failing after 32s
Rust Build / Test Suite (pull_request) Successful in 36s
Rust Build / Clippy (pull_request) Failing after 30s
Rust Build / build (pull_request) Successful in 33s
2026-05-29 22:15:32 -04:00
phoenix 8de38f204e cargo fmt
Release Tagging / release (pull_request) Successful in 36s
Rust Build / Check (pull_request) Successful in 37s
Rust Build / Rustfmt (pull_request) Failing after 32s
Rust Build / Test Suite (pull_request) Successful in 36s
Rust Build / Clippy (pull_request) Failing after 35s
Rust Build / build (pull_request) Successful in 33s
2026-05-29 22:11:58 -04:00
phoenix 04eaa1dff1 Added UserProfile
Release Tagging / release (pull_request) Successful in 37s
Rust Build / Check (pull_request) Failing after 38s
Rust Build / Test Suite (pull_request) Failing after 35s
Rust Build / Rustfmt (pull_request) Successful in 34s
Rust Build / Clippy (pull_request) Failing after 39s
Rust Build / build (pull_request) Failing after 41s
2026-05-29 22:08:53 -04:00
phoenix 179a550034 Adding Login history (#9)
Release Tagging / release (push) Failing after 36s
Rust Build / Check (push) Successful in 46s
Rust Build / Test Suite (push) Successful in 39s
Rust Build / Rustfmt (push) Successful in 32s
Rust Build / Clippy (push) Successful in 33s
Rust Build / build (push) Successful in 33s
Reviewed-on: phoenix/textsender-models#9
2026-05-29 21:41:40 -04:00
phoenix a8e173d831 ServiceUser (#8)
Release Tagging / release (push) Successful in 29s
Rust Build / Check (push) Successful in 39s
Rust Build / Test Suite (push) Successful in 25s
Rust Build / Rustfmt (push) Successful in 27s
Rust Build / Clippy (push) Successful in 28s
Rust Build / build (push) Successful in 26s
Reviewed-on: phoenix/textsender-models#8
2026-05-29 10:02:51 -04:00
phoenix 6975475330 Added user module (#7)
Release Tagging / release (push) Successful in 34s
Rust Build / Check (push) Successful in 34s
Rust Build / Test Suite (push) Successful in 26s
Rust Build / Rustfmt (push) Successful in 35s
Rust Build / Clippy (push) Successful in 29s
Rust Build / build (push) Successful in 27s
Reviewed-on: phoenix/textsender-models#7
2026-05-29 09:50:59 -04:00
phoenix b28d26e26b Added fields to Claims (#6)
Release Tagging / release (push) Successful in 36s
Rust Build / Check (push) Successful in 36s
Rust Build / Rustfmt (push) Successful in 32s
Rust Build / Test Suite (push) Successful in 37s
Rust Build / Clippy (push) Successful in 33s
Rust Build / build (push) Successful in 34s
Reviewed-on: phoenix/textsender-models#6
2026-05-29 09:38:53 -04:00
phoenix c85ca95016 Adding token module (#5)
Release Tagging / release (push) Successful in 29s
Rust Build / Check (push) Successful in 37s
Rust Build / Test Suite (push) Successful in 29s
Rust Build / Rustfmt (push) Successful in 27s
Rust Build / Clippy (push) Successful in 31s
Rust Build / build (push) Successful in 28s
Reviewed-on: phoenix/textsender-models#5
2026-05-28 22:25:57 -04:00
phoenix cfd5050f98 Added code (#4)
Release Tagging / release (push) Successful in 36s
Rust Build / Check (push) Successful in 43s
Rust Build / Test Suite (push) Successful in 28s
Rust Build / Rustfmt (push) Successful in 29s
Rust Build / Clippy (push) Successful in 27s
Rust Build / build (push) Successful in 26s
Reviewed-on: phoenix/textsender-models#4
2026-05-28 21:42:42 -04:00
4 changed files with 97 additions and 1 deletions
-1
View File
@@ -2,7 +2,6 @@ use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct TwilioConfig {
// #[serde(skip_serializing_if = "init::is_uuid_nil")]
#[serde(alias = "auth_id")]
pub account_sid: uuid::Uuid,
#[serde(skip_serializing_if = "String::is_empty")]
+2
View File
@@ -1,2 +1,4 @@
pub mod config;
pub mod contact;
pub mod token;
pub mod user;
+25
View File
@@ -0,0 +1,25 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct Claims {
pub user_id: uuid::Uuid,
pub role: String,
#[serde(alias = "iss")]
pub issued: String,
#[serde(alias = "exp")]
pub expired: i64,
#[serde(alias = "iat")]
pub issued_at: i64,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct LoginResult {
pub user_id: uuid::Uuid,
pub access_token: String,
pub token_type: String,
pub expires_in: i64,
pub issued_at: i64,
}
// Alias for LoginResult
pub type Login = LoginResult;
+70
View File
@@ -0,0 +1,70 @@
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct User {
pub id: uuid::Uuid,
pub phone_number: String,
pub username: String,
pub password: String,
// Firstname is a pointer
pub firstname: String,
// Lastname is a pointer
pub lastname: String,
#[serde(with = "time::serde::rfc3339::option")]
pub created: Option<time::OffsetDateTime>,
#[serde(with = "time::serde::rfc3339::option")]
pub last_login: Option<time::OffsetDateTime>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ServiceUser {
pub id: uuid::Uuid,
pub username: String,
pub passphrase: String,
#[serde(with = "time::serde::rfc3339::option")]
pub created: Option<time::OffsetDateTime>,
// When serializing to json, if empty do not populate
#[serde(with = "time::serde::rfc3339::option")]
pub last_login: Option<time::OffsetDateTime>,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct UserLoginHistory {
pub id: uuid::Uuid,
#[serde(with = "time::serde::rfc3339::option")]
pub login_time: Option<time::OffsetDateTime>,
pub user_id: uuid::Uuid,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct ServiceUserLoginHistory {
pub id: uuid::Uuid,
#[serde(with = "time::serde::rfc3339::option")]
pub login_time: Option<time::OffsetDateTime>,
pub service_user_id: uuid::Uuid,
}
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
pub struct UserProfile {
pub user_id: uuid::Uuid,
pub phone_number: String,
pub username: String,
pub firstname: String,
pub lastname: String,
pub created: Option<time::OffsetDateTime>,
pub last_login: Option<time::OffsetDateTime>,
}
pub fn init_user_profile(usr: &User) -> UserProfile {
let usr_profile = UserProfile {
user_id: usr.id,
phone_number: usr.phone_number.clone(),
username: usr.username.clone(),
firstname: usr.firstname.clone(),
lastname: usr.lastname.clone(),
created: usr.created,
last_login: usr.last_login,
};
usr_profile
}