This commit is contained in:
2022-09-25 06:24:45 +00:00
committed by GitHub
parent cea025482f
commit 89e08ab968
8 changed files with 95 additions and 6 deletions

View File

@@ -37,7 +37,10 @@ impl AuthUserContext {
.await
.try_err3(-1002, gettext("Failed to get parameters:"))?;
if root_user.is_some() {
// # TODO auth
self.ctx
.verify_token(&req, &params)
.await
.try_err3(-403, gettext("Failed to verify the token:"))?;
}
match &self.action {
Some(act) => match act {

View File

@@ -1,9 +1,12 @@
use super::auth::RSAKey;
use super::cors::CorsContext;
use super::params::RequestParams;
use crate::db::{open_and_init_database, PixivDownloaderDb};
use crate::error::PixivDownloaderError;
use crate::get_helper;
use crate::gettext;
use futures_util::lock::Mutex;
use hyper::{Body, Request};
pub struct ServerContext {
pub cors: CorsContext,
@@ -22,4 +25,34 @@ impl ServerContext {
rsa_key: Mutex::new(None),
}
}
pub async fn verify_token(
&self,
req: &Request<Body>,
params: &RequestParams,
) -> Result<(), PixivDownloaderError> {
let mut token_id = None;
match req.headers().get("X-TOKEN-ID") {
Some(v) => {
token_id.replace(v.to_str()?.to_owned());
}
None => match params.get("token_id") {
Some(v) => {
token_id.replace(v.to_owned());
}
None => {}
},
}
let token_id = match token_id {
Some(token_id) => token_id,
None => return Err(PixivDownloaderError::from(gettext("Token id not found."))),
}
.parse::<u64>()?;
let token = self
.db
.get_token(token_id)
.await?
.ok_or(gettext("Token not found."))?;
Ok(())
}
}