tsk-51: Refresh token endpoint #54

Merged
phoenix merged 16 commits from tsk-51 into devel 2025-08-11 22:15:18 +00:00
Showing only changes of commit 6333444b04 - Show all commits

View File

@@ -13,6 +13,13 @@ pub mod request {
pub passphrase: String, pub passphrase: String,
} }
} }
pub mod refresh_token {
#[derive(Debug, serde::Deserialize, serde::Serialize)]
pub struct Request {
pub access_token: String,
}
}
} }
pub mod response { pub mod response {
@@ -31,6 +38,14 @@ pub mod response {
pub data: Vec<icarus_models::login_result::LoginResult>, pub data: Vec<icarus_models::login_result::LoginResult>,
} }
} }
pub mod refresh_token {
#[derive(Debug, Default, serde::Deserialize, serde::Serialize)]
pub struct Response {
pub message: String,
pub data: Vec<icarus_models::login_result::LoginResult>,
}
}
} }
pub mod endpoint { pub mod endpoint {
@@ -134,4 +149,18 @@ pub mod endpoint {
} }
// TODO: Add endpoint to get a refresh token // TODO: Add endpoint to get a refresh token
pub async fn refresh_token(axum::Extension(pool): axum::Extension<sqlx::PgPool>, axum::Json(payload): axum::Json<request::refresh_token::Request>) -> (axum::http::StatusCode, axum::Json<response::refresh_token::Response>) {
let mut response = response::refresh_token::Response::default();
let key = icarus_envy::environment::get_secret_key().await;
if token_stuff::verify_token(&key, &payload.access_token) {
// * Check token type
// - For right now, just worry about service tokens
// * Create a new token with a longer expiration
(axum::http::StatusCode::OK, axum::Json(response))
} else {
response.message = String::from("Could not verify token");
(axum::http::StatusCode::BAD_REQUEST, axum::Json(response))
}
}
} }