From 784ffbb335ccb24eb9aa4a0197cee1f8d8988211 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sun, 6 Apr 2025 20:06:54 -0400 Subject: [PATCH] Refactor --- src/lib.rs | 70 +----------------------------------------------------- 1 file changed, 1 insertion(+), 69 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 8c2299e..9ab8f4d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ pub mod callers; pub mod config; pub mod hashing; pub mod repo; +pub mod token_stuff; pub mod keys { pub const DBURL: &str = "DATABASE_URL"; @@ -48,72 +49,3 @@ pub mod db { .expect("Failed to run migrations"); } } - -mod token_stuff { - use josekit::{ - self, - jws::{JwsHeader, alg::hmac::HmacJwsAlgorithm::Hs256}, - jwt::{self, JwtPayload}, - }; - - pub const TOKENTYPE: &str = "JWT"; - pub const KEY_ENV: &str = "SECRET_KEY"; - pub const MESSAGE: &str = "Something random"; - pub const ISSUER: &str = "icarus_auth"; - pub const AUDIENCE: &str = "icarus"; - - pub fn get_key() -> Result { - dotenvy::dotenv().ok(); - let key = std::env::var(KEY_ENV).expect("SECRET_KEY_NOT_FOUND"); - Ok(key) - } - - pub fn create_token(provided_key: &String) -> Result { - let mut header = JwsHeader::new(); - header.set_token_type(TOKENTYPE); - - let mut payload = JwtPayload::new(); - payload.set_subject(MESSAGE); - payload.set_issuer(ISSUER); - payload.set_audience(vec![AUDIENCE]); - - let key: String = if provided_key.is_empty() { - get_key().unwrap() - } else { - provided_key.to_owned() - }; - - let signer = Hs256.signer_from_bytes(key.as_bytes()).unwrap(); - let jwt = josekit::jwt::encode_with_signer(&payload, &header, &signer).unwrap(); - - Ok(jwt) - } - - pub fn verify_token(key: &String, token: &String) -> bool { - let ver = Hs256.verifier_from_bytes(key.as_bytes()).unwrap(); - let (payload, _header) = jwt::decode_with_verifier(token, &ver).unwrap(); - match payload.subject() { - Some(_sub) => true, - None => false, - } - } -} - -#[cfg(test)] -mod tests { - use crate::token_stuff; - - #[test] - fn test_tokenize() { - let special_key = token_stuff::get_key().unwrap(); - match token_stuff::create_token(&special_key) { - Ok(token) => { - let result = token_stuff::verify_token(&special_key, &token); - assert!(result, "Token not verified"); - } - Err(err) => { - assert!(false, "Error: {:?}", err.to_string()); - } - }; - } -}