mirror of
https://github.com/flibusta-apps/users_settings_server.git
synced 2025-12-06 14:45:38 +01:00
37 lines
972 B
Rust
37 lines
972 B
Rust
use axum::{Router, response::Response, http::{StatusCode, self, Request}, middleware::{Next, self}};
|
|
|
|
use crate::config::CONFIG;
|
|
|
|
pub mod users;
|
|
pub mod pagination;
|
|
pub mod languages;
|
|
pub mod donate_notifications;
|
|
|
|
|
|
async fn auth<B>(req: Request<B>, next: Next<B>) -> Result<Response, StatusCode> {
|
|
let auth_header = req.headers()
|
|
.get(http::header::AUTHORIZATION)
|
|
.and_then(|header| header.to_str().ok());
|
|
|
|
let auth_header = if let Some(auth_header) = auth_header {
|
|
auth_header
|
|
} else {
|
|
return Err(StatusCode::UNAUTHORIZED);
|
|
};
|
|
|
|
if auth_header != CONFIG.api_key {
|
|
return Err(StatusCode::UNAUTHORIZED);
|
|
}
|
|
|
|
Ok(next.run(req).await)
|
|
}
|
|
|
|
|
|
pub fn get_router() -> Router {
|
|
Router::new()
|
|
.nest("/users/", users::get_router())
|
|
.nest("/languages/", languages::get_router())
|
|
.nest("/donate_notifications/", donate_notifications::get_router())
|
|
.layer(middleware::from_fn(auth))
|
|
}
|