From 022a138e566bd160c89279e0be87da916425f2bf Mon Sep 17 00:00:00 2001 From: Chris Jean-Marie Date: Wed, 25 Sep 2024 17:18:49 +0000 Subject: [PATCH] Fix user admin page --- backend/src/main.rs | 21 +++++++++++---------- backend/src/middlewares.rs | 10 +++++----- backend/src/routes.rs | 13 +++++-------- backend/templates/useradmin.html | 11 +++++++++-- 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/backend/src/main.rs b/backend/src/main.rs index df3a571..fc5e5bf 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -54,14 +54,14 @@ pub struct AppState { #[derive(Serialize, Deserialize)] pub struct UserData { #[allow(dead_code)] - pub user_id: i64, - pub user_email: String, -/* pub user_name: String, - pub user_discriminator: String, - pub user_avatar: String, - pub user_access_token: String, - pub user_refresh_token: String, - pub user_expires_at: i64, + pub id: i64, + pub email: String, +/* pub name: String, + pub discriminator: String, + pub avatar: String, + pub access_token: String, + pub refresh_token: String, + pub expires_at: i64, */} #[tokio::main] @@ -83,7 +83,7 @@ async fn main() { //Routes that require authentication .route("/logout", get(logout)) .route("/profile", get(profile)) - //.route("/useradmin", get(useradmin)) + .route("/useradmin", get(useradmin)) .route_layer(middleware::from_fn_with_state(app_state.clone(), check_auth)) //Routes that don't require authentication @@ -105,13 +105,14 @@ async fn main() { .serve(app.into_make_service()) .await .unwrap(); + } async fn index( Extension(user_data): Extension>, _request: Request, ) -> impl IntoResponse { - let user_email = user_data.map(|s| s.user_email); + let user_email = user_data.map(|s| s.email); let logged_in = user_email.is_some(); let name = user_email.unwrap_or_default(); diff --git a/backend/src/middlewares.rs b/backend/src/middlewares.rs index ef2c6f9..b380e89 100644 --- a/backend/src/middlewares.rs +++ b/backend/src/middlewares.rs @@ -40,19 +40,19 @@ pub async fn inject_user_data( session_token_p2_cookie, session_token_p2_db, ) { - let user_id = query.0; + let id = query.0; let expires_at = query.1; if expires_at > Utc::now().timestamp() { let query: Result<(String,), _> = sqlx::query_as(r#"SELECT email FROM users WHERE id=?"#) - .bind(user_id) + .bind(id) .fetch_one(&db_pool) .await; if let Ok(query) = query { - let user_email = query.0; + let email = query.0; request.extensions_mut().insert(Some(UserData { - user_id, - user_email, + id, + email, })); } } diff --git a/backend/src/routes.rs b/backend/src/routes.rs index f0c120d..48533d0 100644 --- a/backend/src/routes.rs +++ b/backend/src/routes.rs @@ -1,7 +1,6 @@ use askama_axum::Template; use axum::{extract::State, response::IntoResponse, Extension}; use http::Request; -use serde::{Deserialize, Serialize}; use sqlx::SqlitePool; use crate::{HtmlTemplate, UserData}; @@ -17,16 +16,15 @@ pub async fn profile( Extension(user_data): Extension>, _request: Request, ) -> impl IntoResponse { - let user_email = user_data.map(|s| s.user_email); - let logged_in = user_email.is_some(); - let name = user_email.unwrap_or_default(); + let email = user_data.map(|s| s.email); + let logged_in = email.is_some(); + let name = email.unwrap_or_default(); let template = ProfileTemplate { logged_in, name}; HtmlTemplate(template) } -/* + #[derive(Template)] -#[derive(Serialize, Deserialize)] #[template(path = "useradmin.html")] struct UserAdminTemplate { logged_in: bool, @@ -40,7 +38,7 @@ pub async fn useradmin( _request: Request, ) -> impl IntoResponse { - let user_email = user_data.map(|s| s.user_email); + let user_email = user_data.map(|s| s.email); let logged_in = user_email.is_some(); let name = user_email.unwrap_or_default(); @@ -52,4 +50,3 @@ pub async fn useradmin( let template = UserAdminTemplate { logged_in, name, users }; HtmlTemplate(template) } - */ \ No newline at end of file diff --git a/backend/templates/useradmin.html b/backend/templates/useradmin.html index 4f659c8..b8ad1ba 100644 --- a/backend/templates/useradmin.html +++ b/backend/templates/useradmin.html @@ -1,6 +1,13 @@ {% extends "base.html" %} {% block title %}User Profile{% endblock %} {% block content %} -This is the user administration page.
-{{ users }} +

Users

+ + {% for user in users %} + + + + + {% endfor %} +
{{ user.id }}{{ user.email }}
{% endblock %} \ No newline at end of file