tsk-71: Add token expiration checks #78
@@ -2,11 +2,9 @@ name: Release Tagging
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
|
||||||
- next-v0.8
|
|
||||||
pull_request:
|
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
- next-v0.8
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
|
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -149,7 +149,7 @@ checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "icarus_models"
|
name = "icarus_models"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"josekit",
|
"josekit",
|
||||||
"rand",
|
"rand",
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "icarus_models"
|
name = "icarus_models"
|
||||||
version = "0.7.2"
|
version = "0.7.3"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.90"
|
rust-version = "1.90"
|
||||||
description = "models used for the icarus project"
|
description = "models used for the icarus project"
|
||||||
|
@@ -2,7 +2,7 @@ use std::default::Default;
|
|||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize, utoipa::ToSchema)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize, utoipa::ToSchema)]
|
||||||
pub struct LoginResult {
|
pub struct LoginResult {
|
||||||
pub id: uuid::Uuid,
|
pub id: uuid::Uuid,
|
||||||
pub username: String,
|
pub username: String,
|
||||||
@@ -12,20 +12,14 @@ pub struct LoginResult {
|
|||||||
pub expiration: i64,
|
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 {
|
impl LoginResult {
|
||||||
pub fn _to_json(&self) -> Result<String, serde_json::Error> {
|
pub fn to_json(&self) -> Result<String, serde_json::Error> {
|
||||||
serde_json::to_string_pretty(&self)
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
30
src/token.rs
30
src/token.rs
@@ -2,7 +2,7 @@ use std::default::Default;
|
|||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
#[derive(Clone, Debug, Default, Deserialize, Serialize)]
|
||||||
pub struct Token {
|
pub struct Token {
|
||||||
pub scope: String,
|
pub scope: String,
|
||||||
pub expiration: i64,
|
pub expiration: i64,
|
||||||
@@ -27,23 +27,16 @@ pub struct AccessToken {
|
|||||||
pub message: String,
|
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 {
|
impl AccessToken {
|
||||||
|
/// Get the token fit for Bearer authentication
|
||||||
pub fn bearer_token(&self) -> String {
|
pub fn bearer_token(&self) -> String {
|
||||||
let mut token: String = String::from("Bearer ");
|
format!("Bearer {}", self.token)
|
||||||
token += &self.token.clone();
|
}
|
||||||
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)
|
serde_json::to_string_pretty(&self)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Implement
|
|
||||||
pub fn token_expired(&self) -> bool {
|
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 {
|
pub fn contains_scope(&self, des_scope: &String) -> bool {
|
||||||
|
Reference in New Issue
Block a user