mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-13 22:52:22 +00:00
routing changes
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
use axum::response::Redirect;
|
||||
use axum::routing::any;
|
||||
use axum::{Extension, Router};
|
||||
use derive_more::Constructor;
|
||||
use principal::PrincipalResourceService;
|
||||
@@ -46,8 +48,16 @@ pub fn caldav_router<
|
||||
cal_store: store.clone(),
|
||||
};
|
||||
|
||||
RootResourceService::<_, User, CalDavPrincipalUri>::new(principal_service.clone())
|
||||
.axum_router()
|
||||
.layer(AuthenticationLayer::new(auth_provider))
|
||||
.layer(Extension(CalDavPrincipalUri(prefix)))
|
||||
Router::new()
|
||||
.nest(
|
||||
prefix,
|
||||
RootResourceService::<_, User, CalDavPrincipalUri>::new(principal_service.clone())
|
||||
.axum_router()
|
||||
.layer(AuthenticationLayer::new(auth_provider))
|
||||
.layer(Extension(CalDavPrincipalUri(prefix))),
|
||||
)
|
||||
.route(
|
||||
"/.well-known/caldav",
|
||||
any(async || Redirect::permanent(prefix)),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
use axum::response::Redirect;
|
||||
use axum::routing::any;
|
||||
use axum::{Extension, Router};
|
||||
use derive_more::Constructor;
|
||||
pub use error::Error;
|
||||
@@ -36,8 +38,16 @@ pub fn carddav_router<AP: AuthenticationProvider, A: AddressbookStore, S: Subscr
|
||||
auth_provider.clone(),
|
||||
subscription_store.clone(),
|
||||
);
|
||||
RootResourceService::<_, User, CardDavPrincipalUri>::new(principal_service.clone())
|
||||
.axum_router()
|
||||
.layer(AuthenticationLayer::new(auth_provider))
|
||||
.layer(Extension(CardDavPrincipalUri(prefix)))
|
||||
Router::new()
|
||||
.nest(
|
||||
prefix,
|
||||
RootResourceService::<_, User, CardDavPrincipalUri>::new(principal_service.clone())
|
||||
.axum_router()
|
||||
.layer(AuthenticationLayer::new(auth_provider))
|
||||
.layer(Extension(CardDavPrincipalUri(prefix))),
|
||||
)
|
||||
.route(
|
||||
"/.well-known/carddav",
|
||||
any(async || Redirect::permanent(prefix)),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,30 @@ mod extension;
|
||||
pub mod notifier;
|
||||
mod prop;
|
||||
pub mod register;
|
||||
|
||||
use derive_more::Constructor;
|
||||
pub use extension::*;
|
||||
pub use prop::*;
|
||||
use rustical_store::{CollectionOperation, SubscriptionStore};
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::mpsc::Receiver;
|
||||
use tracing::error;
|
||||
|
||||
#[derive(Debug, Constructor)]
|
||||
pub struct DavPushController<S: SubscriptionStore> {
|
||||
allowed_push_servers: Option<Vec<String>>,
|
||||
sub_store: Arc<S>,
|
||||
}
|
||||
|
||||
impl<S: SubscriptionStore> DavPushController<S> {
|
||||
pub async fn notifier(&self, mut recv: Receiver<CollectionOperation>) {
|
||||
while let Some(message) = recv.recv().await {
|
||||
let subscribers = match self.sub_store.get_subscriptions(&message.topic).await {
|
||||
Ok(subs) => subs,
|
||||
Err(err) => {
|
||||
error!("{err}");
|
||||
continue;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ use axum::{
|
||||
body::Body,
|
||||
extract::{OriginalUri, Request},
|
||||
middleware::{self, Next},
|
||||
response::Response,
|
||||
response::{Redirect, Response},
|
||||
routing::{get, post},
|
||||
};
|
||||
use headers::{ContentType, HeaderMapExt};
|
||||
@@ -51,6 +51,7 @@ pub fn frontend_router<
|
||||
AS: AddressbookStore,
|
||||
S: SessionStore + Clone,
|
||||
>(
|
||||
prefix: &'static str,
|
||||
auth_provider: Arc<AP>,
|
||||
cal_store: Arc<CS>,
|
||||
addr_store: Arc<AS>,
|
||||
@@ -120,7 +121,7 @@ pub fn frontend_router<
|
||||
.layer(Extension(oidc_config));
|
||||
}
|
||||
|
||||
router
|
||||
router = router
|
||||
.layer(AuthenticationLayer::new(auth_provider.clone()))
|
||||
.layer(
|
||||
SessionManagerLayer::new(session_store)
|
||||
@@ -133,7 +134,11 @@ pub fn frontend_router<
|
||||
.layer(Extension(addr_store.clone()))
|
||||
.layer(Extension(frontend_config.clone()))
|
||||
.layer(Extension(oidc_config.clone()))
|
||||
.layer(middleware::from_fn(unauthorized_handler))
|
||||
.layer(middleware::from_fn(unauthorized_handler));
|
||||
|
||||
Router::new()
|
||||
.nest(prefix, router)
|
||||
.route("/", get(async || Redirect::to(prefix)))
|
||||
}
|
||||
|
||||
async fn unauthorized_handler(mut request: Request, next: Next) -> Response {
|
||||
|
||||
Reference in New Issue
Block a user