From 417875300f18e6761db29b8acadeccedd8eb0a0a Mon Sep 17 00:00:00 2001 From: Chris Jean-Marie Date: Mon, 25 Nov 2024 18:03:34 +0000 Subject: [PATCH] Fix merge issues --- backend/src/main.rs | 15 +++- backend/src/routes.rs | 1 - backend/src/secret_gift_exchange.rs | 117 +++++++++++++++------------- backend/src/wishlist.rs | 10 --- 4 files changed, 76 insertions(+), 67 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index 06d45eb..74b3453 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -53,12 +53,18 @@ async fn main() { // build our application with some routes let app = Router::new() .route("/dashboard", get(dashboard)) - .route("/cottagecalendar", get(cottagecalendar)) + + // User .route("/profile", get(profile)) .route("/useradmin", get(useradmin)) .route("/users/:user_id", get(user_profile)) .route("/roles/:user_id/:role_id/add", get(add_user_role)) .route("/roles/:user_id/:user_role_id/delete", get(delete_user_role)) + + // Calendar + .route("/cottagecalendar", get(cottagecalendar)) + + // Wishlist .route("/wishlists", get(wishlists)) .route("/userwishlist/:user_id", get(user_wishlist)) .route("/userwishlist/add/:user_id", get(user_wishlist_add).post(user_wishlist_add_item)) @@ -67,8 +73,11 @@ async fn main() { .route("/userwishlist/received/:user_id", get(user_wishlist_received_item)) .route("/userwishlist/delete/:item_id", get(user_wishlist_delete_item)) .route("/userwishlist/returned/:item_id", get(user_wishlist_returned_item)) - .route("/giftexchanges", get(giftexchanges)) - .route("/giftexchange/:giftexchange_id", get(giftexchange).post(giftexchange_save)) + + // Secret Gift Exchange - Not ready for public use yet + //.route("/giftexchanges", get(giftexchanges)) + //.route("/giftexchange/:giftexchange_id", get(giftexchange).post(giftexchange_save)) + .nest_service("/assets", ServeDir::new("templates/assets") .fallback(get_service(ServeDir::new("templates/assets")))) .route("/", get(index)) diff --git a/backend/src/routes.rs b/backend/src/routes.rs index cb4bdf7..8ff78c1 100644 --- a/backend/src/routes.rs +++ b/backend/src/routes.rs @@ -75,7 +75,6 @@ pub async fn index( if logged_in { // Extract the user data. let user = user_data.as_ref().unwrap().clone(); - let userid = user_data.as_ref().map(|s| s.id.clone()).unwrap_or_default(); if is_authorized("/dashboard", user_data, db_pool).await { Redirect::to("/dashboard").into_response() diff --git a/backend/src/secret_gift_exchange.rs b/backend/src/secret_gift_exchange.rs index bbc6ee0..8083687 100644 --- a/backend/src/secret_gift_exchange.rs +++ b/backend/src/secret_gift_exchange.rs @@ -92,7 +92,7 @@ struct GiftExchange { #[template(path = "giftexchanges.html")] struct GiftExchangesTemplate { logged_in: bool, - name: String, + user: UserData, user_roles: Vec, giftexchanges: Vec, } @@ -101,28 +101,33 @@ pub async fn giftexchanges( Extension(user_data): Extension>, State(db_pool): State, ) -> impl IntoResponse { - let user_name = user_data.as_ref().map(|s| s.name.clone()); - let logged_in = user_name.is_some(); - let name = user_name.unwrap_or_default(); + // Is the user logged in? + let logged_in = user_data.is_some(); - let giftexchanges = sqlx::query_as::<_, GiftExchange>("SELECT * FROM gift_exchange") - .fetch_all(&db_pool) - .await - .unwrap(); + if logged_in { + // Extract the user data. + let user = user_data.as_ref().unwrap().clone(); + let userid = user_data.as_ref().map(|s| s.id.clone()).unwrap_or_default(); - let userid = user_data.as_ref().map(|s| s.id.clone()).unwrap_or_default(); + let giftexchanges = sqlx::query_as::<_, GiftExchange>("SELECT * FROM gift_exchange") + .fetch_all(&db_pool) + .await + .unwrap(); - if is_authorized("/giftexchange", user_data, db_pool.clone()).await { - // Get user roles - let user_roles = get_user_roles_display(userid, &db_pool.clone()).await; + if is_authorized("/giftexchange", user_data, db_pool.clone()).await { + // Get user roles + let user_roles = get_user_roles_display(userid, &db_pool.clone()).await; - let template = GiftExchangesTemplate { - logged_in, - name, - user_roles, - giftexchanges, - }; - HtmlTemplate(template).into_response() + let template = GiftExchangesTemplate { + logged_in, + user, + user_roles, + giftexchanges, + }; + HtmlTemplate(template).into_response() + } else { + Redirect::to("/").into_response() + } } else { Redirect::to("/").into_response() } @@ -144,7 +149,7 @@ struct GiftExchangeParticipant { #[template(path = "giftexchange.html")] struct GiftExchangeTemplate { logged_in: bool, - name: String, + user: UserData, user_roles: Vec, giftexchange: GiftExchange, participants: Vec, @@ -156,30 +161,33 @@ pub async fn giftexchange( Extension(user_data): Extension>, State(db_pool): State, ) -> impl IntoResponse { - let user_name = user_data.as_ref().map(|s| s.name.clone()); - let logged_in = user_name.is_some(); - let name = user_name.unwrap_or_default(); - let userid = user_data.as_ref().map(|s| s.id.clone()).unwrap_or_default(); + // Is the user logged in? + let logged_in = user_data.is_some(); - if is_authorized("/giftexchange", user_data, db_pool.clone()).await { - // Get user roles - let user_roles = get_user_roles_display(userid, &db_pool.clone()).await; + if logged_in { + // Extract the user data. + let user = user_data.as_ref().unwrap().clone(); + let userid = user_data.as_ref().map(|s| s.id.clone()).unwrap_or_default(); - // Get gift exchange - let giftexchange = match sqlx::query_as!( - GiftExchange, - "SELECT * FROM gift_exchange WHERE id = ?", - exchange_id - ) - .fetch_one(&db_pool) - .await - { - Ok(giftexchange) => giftexchange, - Err(_) => GiftExchange::default(), - }; + if is_authorized("/giftexchange", user_data, db_pool.clone()).await { + // Get user roles + let user_roles = get_user_roles_display(userid, &db_pool.clone()).await; - // Get participants - let participants = sqlx::query_as::<_, UserData>( + // Get gift exchange + let giftexchange = match sqlx::query_as!( + GiftExchange, + "SELECT * FROM gift_exchange WHERE id = ?", + exchange_id + ) + .fetch_one(&db_pool) + .await + { + Ok(giftexchange) => giftexchange, + Err(_) => GiftExchange::default(), + }; + + // Get participants + let participants = sqlx::query_as::<_, UserData>( "select * from users where users.id in (select participant_id from gift_exchange_participants where exchange_id = ?)", ) .bind(exchange_id) @@ -187,8 +195,8 @@ pub async fn giftexchange( .await .unwrap(); - // Get non participants - let non_participants = sqlx::query_as::<_, UserData>( + // Get non participants + let non_participants = sqlx::query_as::<_, UserData>( "select * from users where users.id not in (select participant_id from gift_exchange_participants where exchange_id = ?)", ) .bind(exchange_id) @@ -196,15 +204,18 @@ pub async fn giftexchange( .await .unwrap(); - let template = GiftExchangeTemplate { - logged_in, - name, - user_roles, - giftexchange, - participants, - non_participants, - }; - HtmlTemplate(template).into_response() + let template = GiftExchangeTemplate { + logged_in, + user, + user_roles, + giftexchange, + participants, + non_participants, + }; + HtmlTemplate(template).into_response() + } else { + Redirect::to("/").into_response() + } } else { Redirect::to("/").into_response() } @@ -240,7 +251,7 @@ pub async fn giftexchange_save( } } */ let (req_parts, map_request_body) = request.into_parts(); - let bytes = match body::to_bytes(map_request_body,usize::MAX).await { + let bytes = match body::to_bytes(map_request_body, usize::MAX).await { Ok(bytes) => bytes, Err(err) => { return Err(( diff --git a/backend/src/wishlist.rs b/backend/src/wishlist.rs index cc02c2a..3572e4c 100644 --- a/backend/src/wishlist.rs +++ b/backend/src/wishlist.rs @@ -1,12 +1,8 @@ use askama_axum::{IntoResponse, Response, Template}; use axum::{ - extract::{Path, State}, - response::Redirect, - Extension, Form, -, }; use axum_extra::response::Html; use chrono::Utc; @@ -15,14 +11,11 @@ use serde::Deserialize; use sqlx::{Row, SqlitePool}; use crate::{ - middlewares::is_authorized, - user::{ get_user_roles_display, get_user_wishlist_item_by_id, get_user_wishlist_items, UserData, UserWishlistItem, }, -, }; struct HtmlTemplate(T); @@ -210,7 +203,6 @@ pub async fn user_wishlist_add_item( State(db_pool): State, Extension(user_data): Extension>, Form(item_form): Form, - Form(item_form): Form, ) -> impl IntoResponse { if is_authorized("/wishlist", user_data.clone(), db_pool.clone()).await { // Insert new item to database @@ -257,8 +249,6 @@ pub async fn user_wishlist_edit_item( let user = user_data.as_ref().unwrap().clone(); let userid = user_data.as_ref().map(|s| s.id.clone()).unwrap_or_default(); - // Extract the user data. - if is_authorized("/wishlist", user_data.clone(), db_pool.clone()).await { // Get user roles let user_roles = get_user_roles_display(userid, &db_pool.clone()).await;