claude rework

This commit is contained in:
2026-06-07 15:43:43 +02:00
parent a2e2ff141e
commit b4874ad318
63 changed files with 5945 additions and 1752 deletions
+10 -4
View File
@@ -3,29 +3,36 @@ extern crate jwt;
extern crate sha2;
use std::collections::BTreeMap;
use std::env;
use actix_web::HttpRequest;
use dotenv::dotenv;
use hmac::{Hmac, Mac};
use jwt::{Header, SignWithKey, Token, VerifyWithKey};
use sha2::Sha256;
pub struct JwtToken {
pub user_id: i32,
pub body: String,
}
type HmacSha256 = Hmac<Sha256>;
fn signing_key() -> HmacSha256 {
dotenv().ok();
let secret = env::var("JWT_SECRET").expect("JWT_SECRET must be set");
HmacSha256::new_from_slice(secret.as_bytes()).unwrap()
}
impl JwtToken {
pub fn encode(user_id: i32) -> String {
let key: HmacSha256 = HmacSha256::new_from_slice(b"secret").unwrap();
let key: HmacSha256 = signing_key();
let mut claims = BTreeMap::new();
claims.insert("user_id", user_id);
claims.sign_with_key(&key).unwrap()
}
pub fn decode(encoded_token: String) -> Result<JwtToken, &'static str> {
let key: HmacSha256 = HmacSha256::new_from_slice(b"secret").unwrap();
let key: HmacSha256 = signing_key();
let token_str: &str = encoded_token.as_str();
let token: Result<Token<Header, BTreeMap<String, i32>, jwt::Verified>, jwt::Error> =
VerifyWithKey::verify_with_key(token_str, &key);
@@ -36,7 +43,6 @@ impl JwtToken {
let claims = token.claims();
Ok(JwtToken {
user_id: claims["user_id"],
body: encoded_token,
})
}
Err(_err) => Err("could not decode token"),
+2 -2
View File
@@ -4,7 +4,7 @@ pub mod processes;
use crate::auth::processes::check_password;
use crate::auth::processes::extract_header_token;
pub fn process_token(request: &ServiceRequest) -> Result<String, &'static str> {
pub fn process_token(request: &ServiceRequest) -> Result<i32, &'static str> {
match extract_header_token(request) {
Ok(token) => check_password(token),
Err(message) => Err(message),
@@ -26,7 +26,7 @@ mod mod_test {
.to_srv_request();
match process_token(&request) {
Ok(message) => assert_eq!("passed", message),
Ok(user_id) => assert_eq!(32, user_id),
Err(_) => panic!("process token failed"),
}
}
+3 -3
View File
@@ -1,9 +1,9 @@
use super::jwt;
use actix_web::dev::ServiceRequest;
pub fn check_password(password: String) -> Result<String, &'static str> {
pub fn check_password(password: String) -> Result<i32, &'static str> {
match jwt::JwtToken::decode(password) {
Ok(_token) => Ok(String::from("passed")),
Ok(token) => Ok(token.user_id),
Err(message) => Err(message),
}
}
@@ -37,7 +37,7 @@ mod processes_test {
let result = check_password(password_string);
match result {
Ok(check) => assert_eq!("passed", check),
Ok(user_id) => assert_eq!(32, user_id),
_ => panic!("Check correct password failed."),
}
}