diff --git a/.gitea/workflows/tag_release.yaml b/.gitea/workflows/tag_release.yaml index 717f9ac..d424e07 100644 --- a/.gitea/workflows/tag_release.yaml +++ b/.gitea/workflows/tag_release.yaml @@ -2,11 +2,9 @@ name: Release Tagging on: push: - branches: - - next-v0.8 - pull_request: branches: - main + - next-v0.8 jobs: release: diff --git a/Cargo.lock b/Cargo.lock index 8cf848a..9a6f1c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -149,7 +149,7 @@ checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" [[package]] name = "icarus_models" -version = "0.7.2" +version = "0.7.3" dependencies = [ "josekit", "rand", diff --git a/Cargo.toml b/Cargo.toml index 54a405f..9a7974c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_models" -version = "0.7.2" +version = "0.7.3" edition = "2024" rust-version = "1.90" description = "models used for the icarus project" diff --git a/src/login_result.rs b/src/login_result.rs index 670be51..ff03083 100644 --- a/src/login_result.rs +++ b/src/login_result.rs @@ -2,7 +2,7 @@ use std::default::Default; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Deserialize, Serialize, utoipa::ToSchema)] +#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)] pub struct LoginResult { pub id: uuid::Uuid, pub username: String, @@ -12,20 +12,14 @@ pub struct LoginResult { pub expiration: i64, } -impl Default for LoginResult { - fn default() -> Self { - LoginResult { - id: uuid::Uuid::nil(), - username: String::new(), - token: String::new(), - token_type: String::new(), - expiration: -1, - } - } -} - impl LoginResult { - pub fn _to_json(&self) -> Result { + pub fn to_json(&self) -> Result { serde_json::to_string_pretty(&self) } + + pub fn token_expired(&self) -> bool { + let current_time = time::OffsetDateTime::now_utc(); + let expired = time::OffsetDateTime::from_unix_timestamp(self.expiration).unwrap(); + current_time > expired + } } diff --git a/src/token.rs b/src/token.rs index 5ade1d0..5831a75 100644 --- a/src/token.rs +++ b/src/token.rs @@ -2,7 +2,7 @@ use std::default::Default; use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct Token { pub scope: String, pub expiration: i64, @@ -27,23 +27,16 @@ pub struct AccessToken { pub message: String, } -impl Default for Token { - fn default() -> Self { - Token { - scope: String::new(), - expiration: -1, - audience: String::new(), - issuer: String::new(), - issued: -1, - } - } -} - impl AccessToken { + /// Get the token fit for Bearer authentication pub fn bearer_token(&self) -> String { - let mut token: String = String::from("Bearer "); - token += &self.token.clone(); - token + format!("Bearer {}", self.token) + } + + pub fn token_expired(&self) -> bool { + let current_time = time::OffsetDateTime::now_utc(); + let expired = time::OffsetDateTime::from_unix_timestamp(self.expiration).unwrap(); + current_time > expired } } @@ -52,9 +45,10 @@ impl Token { serde_json::to_string_pretty(&self) } - // TODO: Implement pub fn token_expired(&self) -> bool { - false + let current_time = time::OffsetDateTime::now_utc(); + let expired = time::OffsetDateTime::from_unix_timestamp(self.expiration).unwrap(); + current_time > expired } pub fn contains_scope(&self, des_scope: &String) -> bool {