support sha256 token

This commit is contained in:
2022-11-12 23:51:07 +08:00
parent dd88bbb868
commit e531f0fed8

View File

@@ -14,6 +14,7 @@ use diesel::{
}; };
use rocket::futures::{future, join}; use rocket::futures::{future, join};
use rocket::serde::{Deserialize, Serialize}; use rocket::serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
use std::collections::HashMap; use std::collections::HashMap;
no_arg_sql_function!(RANDOM, (), "Represents the sql RANDOM() function"); 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<Self> { pub async fn get_by_token(db: &Db, rconn: &RdsConn, token: &str) -> Option<Self> {
let real_token;
let token = match &token.split(':').collect::<Vec<&str>>()[..] {
["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); let mut cacher = UserCache::init(token, &rconn);
if let Some(u) = cacher.get().await { if let Some(u) = cacher.get().await {
Some(u) Some(u)