From 8de1eae2b49d763dcac55b8a2a84673475a35e63 Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Tue, 28 Jun 2022 07:07:34 -0400 Subject: auth: Scaffold auth/begin [WIP] --- src/handlers/auth.rs | 34 ++++++++++++++++++++++++++++++++++ src/handlers/mod.rs | 1 + 2 files changed, 35 insertions(+) create mode 100644 src/handlers/auth.rs (limited to 'src/handlers') diff --git a/src/handlers/auth.rs b/src/handlers/auth.rs new file mode 100644 index 0000000..a9ac394 --- /dev/null +++ b/src/handlers/auth.rs @@ -0,0 +1,34 @@ +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(()) +} diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 591f76e..8f8224e 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -1 +1,2 @@ pub mod planets; +pub mod auth; -- cgit v1.2.3