diff --git a/backend/src/main.rs b/backend/src/main.rs index d5abb1a..df3a571 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -4,7 +4,8 @@ use axum::{ middleware, response::{Html, IntoResponse, Response}, routing::{get, get_service}, Extension, Router }; use http::{Request, StatusCode}; -use sqlx::{sqlite::SqlitePoolOptions, SqlitePool}; +use serde::{Deserialize, Serialize}; +use sqlx::{prelude::FromRow, sqlite::SqlitePoolOptions, SqlitePool}; use tower_http::services::ServeDir; mod error_handling; @@ -49,7 +50,8 @@ pub struct AppState { pub db_pool: SqlitePool, } -#[derive(Clone, Debug)] +#[derive(Clone, Debug, FromRow)] +#[derive(Serialize, Deserialize)] pub struct UserData { #[allow(dead_code)] pub user_id: i64, @@ -81,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 diff --git a/backend/src/routes.rs b/backend/src/routes.rs index 37681b8..f0c120d 100644 --- a/backend/src/routes.rs +++ b/backend/src/routes.rs @@ -1,6 +1,8 @@ use askama_axum::Template; -use axum::{response::IntoResponse, Extension}; +use axum::{extract::State, response::IntoResponse, Extension}; use http::Request; +use serde::{Deserialize, Serialize}; +use sqlx::SqlitePool; use crate::{HtmlTemplate, UserData}; @@ -22,22 +24,32 @@ pub async fn profile( let template = ProfileTemplate { logged_in, name}; HtmlTemplate(template) } - +/* #[derive(Template)] +#[derive(Serialize, Deserialize)] #[template(path = "useradmin.html")] struct UserAdminTemplate { logged_in: bool, name: String, + users: Vec } pub async fn useradmin( Extension(user_data): Extension>, + State(db_pool): State, _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 template = UserAdminTemplate { logged_in, name}; + let users = sqlx::query_as::<_, UserData>("SELECT * FROM users") + .fetch_all(&db_pool) + .await + .unwrap(); + + let template = UserAdminTemplate { logged_in, name, users }; HtmlTemplate(template) -} \ No newline at end of file +} + */ \ No newline at end of file diff --git a/backend/templates/useradmin.html b/backend/templates/useradmin.html index 15e071b..4f659c8 100644 --- a/backend/templates/useradmin.html +++ b/backend/templates/useradmin.html @@ -2,5 +2,5 @@ {% block title %}User Profile{% endblock %} {% block content %} This is the user administration page.
-Your email address: {{ name }}. +{{ users }} {% endblock %} \ No newline at end of file