From e531f0fed86893cf1c60970bad9e4ea11db596e0 Mon Sep 17 00:00:00 2001 From: hole-thu Date: Sat, 12 Nov 2022 23:51:07 +0800 Subject: [PATCH] support sha256 token --- src/models.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/models.rs b/src/models.rs index 8cdd18c..a387c67 100644 --- a/src/models.rs +++ b/src/models.rs @@ -14,6 +14,7 @@ use diesel::{ }; use rocket::futures::{future, join}; use rocket::serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; use std::collections::HashMap; no_arg_sql_function!(RANDOM, (), "Represents the sql RANDOM() function"); @@ -388,6 +389,19 @@ impl User { } pub async fn get_by_token(db: &Db, rconn: &RdsConn, token: &str) -> Option { + let real_token; + + let token = match &token.split(':').collect::>()[..] { + ["sha256", tk] => { + let mut h = Sha256::new(); + h.update(tk); + h.update("hole"); + real_token = format!("{:x}", h.finalize())[0..16].to_string(); + &real_token + } + _ => token, + }; + // dbg!(token); let mut cacher = UserCache::init(token, &rconn); if let Some(u) = cacher.get().await { Some(u)