haste_server/auth_n/oidc/routes/interactions/
mod.rs1use crate::{
2 auth_n::oidc::{
3 middleware::OIDCParameterInjectLayer,
4 routes::{AUTHORIZE_PARAMETERS, LOGOUT_PARAMETERS},
5 },
6 services::AppState,
7};
8use axum::Router;
9use axum_extra::routing::RouterExt;
10use haste_fhir_search::SearchEngine;
11use haste_fhir_terminology::FHIRTerminology;
12use haste_repository::Repository;
13use std::sync::Arc;
14use tower::ServiceBuilder;
15
16mod login;
17mod logout;
18pub mod password_reset;
19
20pub fn interactions_router<
21 Repo: Repository + Send + Sync + 'static,
22 Search: SearchEngine + Send + Sync + 'static,
23 Terminology: FHIRTerminology + Send + Sync + 'static,
24>() -> Router<Arc<AppState<Repo, Search, Terminology>>> {
25 let password_reset_routes = Router::new()
26 .typed_get(password_reset::password_reset_initiate_get)
27 .typed_post(password_reset::password_reset_initiate_post)
28 .typed_get(password_reset::password_reset_verify_get)
29 .typed_post(password_reset::password_reset_verify_post);
30
31 let login_routes = Router::new()
32 .typed_get(login::login_get)
33 .typed_post(login::login_post)
34 .route_layer(ServiceBuilder::new().layer(OIDCParameterInjectLayer::new(
35 (*AUTHORIZE_PARAMETERS).clone(),
36 )));
37
38 let logout_routes = Router::new()
39 .typed_post(logout::logout)
40 .typed_get(logout::logout)
41 .route_layer(
42 ServiceBuilder::new()
43 .layer(OIDCParameterInjectLayer::new((*LOGOUT_PARAMETERS).clone())),
44 );
45
46 Router::new()
47 .merge(login_routes)
48 .merge(logout_routes)
49 .merge(password_reset_routes)
50}