blob: a9ac394fa03b942697cd1fa4c61072869759d664 (
plain) (
tree)
|
|
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<HashMap<String, String>>, Extension(state): Extension<State>) -> 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::<V4>::generate()?;
} else {
return Err(ServiceError::NotAuthorized);
}
} else {
return Err(ServiceError::Generic("No key supplied".to_string()));
}
Ok(())
}
|