1
0
mirror of https://github.com/dani-garcia/vaultwarden.git synced 2024-11-10 13:02:41 +01:00

Add separate host-only fromrequest handler

This commit is contained in:
Daniel García 2021-03-14 23:24:47 +01:00
parent ce62e898c3
commit 2969e87b52
No known key found for this signature in database
GPG Key ID: FC8A7D14C3CD543A

View File

@ -222,13 +222,12 @@ use crate::db::{
DbConn, DbConn,
}; };
pub struct Headers { pub struct Host {
pub host: String, pub host: String
pub device: Device,
pub user: User,
} }
impl<'a, 'r> FromRequest<'a, 'r> for Headers {
impl<'a, 'r> FromRequest<'a, 'r> for Host {
type Error = &'static str; type Error = &'static str;
fn from_request(request: &'a Request<'r>) -> Outcome<Self, Self::Error> { fn from_request(request: &'a Request<'r>) -> Outcome<Self, Self::Error> {
@ -262,6 +261,28 @@ impl<'a, 'r> FromRequest<'a, 'r> for Headers {
format!("{}://{}", protocol, host) format!("{}://{}", protocol, host)
}; };
Outcome::Success(Host { host })
}
}
pub struct Headers {
pub host: String,
pub device: Device,
pub user: User,
}
impl<'a, 'r> FromRequest<'a, 'r> for Headers {
type Error = &'static str;
fn from_request(request: &'a Request<'r>) -> Outcome<Self, Self::Error> {
let headers = request.headers();
let host = match Host::from_request(request) {
Outcome::Forward(_) => return Outcome::Forward(()),
Outcome::Failure(f) => return Outcome::Failure(f),
Outcome::Success(host) => host.host,
};
// Get access_token // Get access_token
let access_token: &str = match headers.get_one("Authorization") { let access_token: &str = match headers.get_one("Authorization") {
Some(a) => match a.rsplit("Bearer ").next() { Some(a) => match a.rsplit("Bearer ").next() {