use std::collections::HashMap; use axum::{extract::Query, Extension}; use axum_macros::debug_handler; use pasetors::{claims::Claims, keys::{AsymmetricKeyPair, Generate}, version4::V4}; use uuid::Uuid; use crate::{errors::{NoneResult, ServiceError}, State}; /** * Takes in a request to create a new token with a secret key that gets printed * to stdout and, if it matches, returns a valid PASETO token that can be used * for future authentication */ #[debug_handler] pub async fn begin(Query(params): Query>, Extension(state): Extension) -> NoneResult { if let Some(k) = params.get("key") { if k == &state.gen_key { let mut claims = Claims::new()?; claims.non_expiring(); claims.audience("solard")?; claims.add_additional("uuid", Uuid::new_v4().to_string())?; let kp = AsymmetricKeyPair::::generate()?; } else { return Err(ServiceError::NotAuthorized); } } else { return Err(ServiceError::Generic("No key supplied".to_string())); } Ok(()) }