diff --git a/src/presentation/templates.rs b/src/presentation/templates.rs index 4958071..986a2b2 100644 --- a/src/presentation/templates.rs +++ b/src/presentation/templates.rs @@ -20,6 +20,7 @@ pub struct RoastersTemplate { #[derive(Template)] #[template(path = "partials/roaster_list.html")] pub struct RoasterListTemplate { + pub is_authenticated: bool, pub roasters: Paginated, pub navigator: ListNavigator, } @@ -54,6 +55,7 @@ pub struct RoastDetailTemplate { #[derive(Template)] #[template(path = "partials/roast_list.html")] pub struct RoastListTemplate { + pub is_authenticated: bool, pub roasts: Paginated, pub navigator: ListNavigator, } diff --git a/src/server/routes/roasters.rs b/src/server/routes/roasters.rs index 59ffdea..7e9eeb5 100644 --- a/src/server/routes/roasters.rs +++ b/src/server/routes/roasters.rs @@ -49,7 +49,8 @@ pub(crate) async fn roasters_page( let request = query.into_request::(); if is_datastar_request(&headers) { - return render_roaster_list_fragment(state, request) + let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await; + return render_roaster_list_fragment(state, request, is_authenticated) .await .map_err(map_app_error); } @@ -127,7 +128,7 @@ pub(crate) async fn create_roaster( .map_err(AppError::from)?; if is_datastar_request(&headers) { - render_roaster_list_fragment(state, request) + render_roaster_list_fragment(state, request, true) .await .map_err(ApiError::from) } else if matches!(source, PayloadSource::Form) { @@ -186,7 +187,7 @@ pub(crate) async fn delete_roaster( .map_err(AppError::from)?; if is_datastar_request(&headers) { - render_roaster_list_fragment(state, request) + render_roaster_list_fragment(state, request, true) .await .map_err(ApiError::from) } else { @@ -197,10 +198,12 @@ pub(crate) async fn delete_roaster( async fn render_roaster_list_fragment( state: AppState, request: ListRequest, + is_authenticated: bool, ) -> Result { let (roasters, navigator) = load_roaster_page(&state, request).await?; let template = RoasterListTemplate { + is_authenticated, roasters, navigator, }; diff --git a/src/server/routes/roasts.rs b/src/server/routes/roasts.rs index 16af669..feebe6b 100644 --- a/src/server/routes/roasts.rs +++ b/src/server/routes/roasts.rs @@ -49,7 +49,8 @@ pub(crate) async fn roasts_page( let request = query.into_request::(); if is_datastar_request(&headers) { - return render_roast_list_fragment(state, request) + let is_authenticated = crate::server::routes::auth::is_authenticated(&state, &cookies).await; + return render_roast_list_fragment(state, request, is_authenticated) .await .map_err(map_app_error); } @@ -131,7 +132,7 @@ pub(crate) async fn create_roast( .map_err(AppError::from)?; if is_datastar_request(&headers) { - render_roast_list_fragment(state, request) + render_roast_list_fragment(state, request, true) .await .map_err(ApiError::from) } else if matches!(source, PayloadSource::Form) { @@ -176,7 +177,7 @@ pub(crate) async fn delete_roast( state.roast_repo.delete(id).await.map_err(AppError::from)?; if is_datastar_request(&headers) { - render_roast_list_fragment(state, request) + render_roast_list_fragment(state, request, true) .await .map_err(ApiError::from) } else { @@ -266,10 +267,15 @@ impl TastingNotesInput { async fn render_roast_list_fragment( state: AppState, request: ListRequest, + is_authenticated: bool, ) -> Result { let (roasts, navigator) = load_roast_page(&state, request).await?; - let template = RoastListTemplate { roasts, navigator }; + let template = RoastListTemplate { + is_authenticated, + roasts, + navigator, + }; crate::server::routes::support::render_fragment(template, "#roast-list") } diff --git a/templates/partials/roast_list.html b/templates/partials/roast_list.html index b1b9487..268ab8f 100644 --- a/templates/partials/roast_list.html +++ b/templates/partials/roast_list.html @@ -183,7 +183,9 @@ Notes + {% if is_authenticated %} Actions + {% endif %} @@ -228,6 +230,7 @@ {% endif %} + {% if is_authenticated %} + {% endif %} {% endfor %} diff --git a/templates/partials/roaster_list.html b/templates/partials/roaster_list.html index ea2c5d7..b8dafaf 100644 --- a/templates/partials/roaster_list.html +++ b/templates/partials/roaster_list.html @@ -163,7 +163,9 @@ Homepage Notes + {% if is_authenticated %} Actions + {% endif %} @@ -213,6 +215,7 @@ {% endif %} {{ roaster.notes }} + {% if is_authenticated %} + {% endif %} {% endfor %}