haste_server/auth_n/oidc/routes/federated/
mod.rs1use crate::{
2 auth_n::oidc::{middleware::OIDCParameterInjectLayer, routes::AUTHORIZE_PARAMETERS},
3 services::AppState,
4};
5use axum::Router;
6use axum_extra::routing::RouterExt;
7use haste_fhir_search::SearchEngine;
8use haste_fhir_terminology::FHIRTerminology;
9use haste_repository::Repository;
10use std::sync::Arc;
11use tower::ServiceBuilder;
12
13mod callback;
14mod initiate;
15
16pub use initiate::FederatedInitiate;
17
18pub fn federated_router<
19 Repo: Repository + Send + Sync + 'static,
20 Search: SearchEngine + Send + Sync + 'static,
21 Terminology: FHIRTerminology + Send + Sync + 'static,
22>() -> Router<Arc<AppState<Repo, Search, Terminology>>> {
23 let router = Router::new().typed_get(callback::federated_callback).merge(
24 Router::new()
26 .typed_get(initiate::federated_initiate)
27 .route_layer(ServiceBuilder::new().layer(OIDCParameterInjectLayer::new(
28 (*AUTHORIZE_PARAMETERS).clone(),
29 ))),
30 );
31
32 router
33}