Fix user admin page

This commit is contained in:
Chris Jean-Marie 2024-09-25 17:18:49 +00:00
parent 75f6b94005
commit 022a138e56
4 changed files with 30 additions and 25 deletions

View File

@ -54,14 +54,14 @@ pub struct AppState {
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct UserData { pub struct UserData {
#[allow(dead_code)] #[allow(dead_code)]
pub user_id: i64, pub id: i64,
pub user_email: String, pub email: String,
/* pub user_name: String, /* pub name: String,
pub user_discriminator: String, pub discriminator: String,
pub user_avatar: String, pub avatar: String,
pub user_access_token: String, pub access_token: String,
pub user_refresh_token: String, pub refresh_token: String,
pub user_expires_at: i64, pub expires_at: i64,
*/} */}
#[tokio::main] #[tokio::main]
@ -83,7 +83,7 @@ async fn main() {
//Routes that require authentication //Routes that require authentication
.route("/logout", get(logout)) .route("/logout", get(logout))
.route("/profile", get(profile)) .route("/profile", get(profile))
//.route("/useradmin", get(useradmin)) .route("/useradmin", get(useradmin))
.route_layer(middleware::from_fn_with_state(app_state.clone(), check_auth)) .route_layer(middleware::from_fn_with_state(app_state.clone(), check_auth))
//Routes that don't require authentication //Routes that don't require authentication
@ -105,13 +105,14 @@ async fn main() {
.serve(app.into_make_service()) .serve(app.into_make_service())
.await .await
.unwrap(); .unwrap();
} }
async fn index<T>( async fn index<T>(
Extension(user_data): Extension<Option<UserData>>, Extension(user_data): Extension<Option<UserData>>,
_request: Request<T>, _request: Request<T>,
) -> impl IntoResponse { ) -> 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 logged_in = user_email.is_some();
let name = user_email.unwrap_or_default(); let name = user_email.unwrap_or_default();

View File

@ -40,19 +40,19 @@ pub async fn inject_user_data(
session_token_p2_cookie, session_token_p2_cookie,
session_token_p2_db, session_token_p2_db,
) { ) {
let user_id = query.0; let id = query.0;
let expires_at = query.1; let expires_at = query.1;
if expires_at > Utc::now().timestamp() { if expires_at > Utc::now().timestamp() {
let query: Result<(String,), _> = let query: Result<(String,), _> =
sqlx::query_as(r#"SELECT email FROM users WHERE id=?"#) sqlx::query_as(r#"SELECT email FROM users WHERE id=?"#)
.bind(user_id) .bind(id)
.fetch_one(&db_pool) .fetch_one(&db_pool)
.await; .await;
if let Ok(query) = query { if let Ok(query) = query {
let user_email = query.0; let email = query.0;
request.extensions_mut().insert(Some(UserData { request.extensions_mut().insert(Some(UserData {
user_id, id,
user_email, email,
})); }));
} }
} }

View File

@ -1,7 +1,6 @@
use askama_axum::Template; use askama_axum::Template;
use axum::{extract::State, response::IntoResponse, Extension}; use axum::{extract::State, response::IntoResponse, Extension};
use http::Request; use http::Request;
use serde::{Deserialize, Serialize};
use sqlx::SqlitePool; use sqlx::SqlitePool;
use crate::{HtmlTemplate, UserData}; use crate::{HtmlTemplate, UserData};
@ -17,16 +16,15 @@ pub async fn profile<T>(
Extension(user_data): Extension<Option<UserData>>, Extension(user_data): Extension<Option<UserData>>,
_request: Request<T>, _request: Request<T>,
) -> impl IntoResponse { ) -> impl IntoResponse {
let user_email = user_data.map(|s| s.user_email); let email = user_data.map(|s| s.email);
let logged_in = user_email.is_some(); let logged_in = email.is_some();
let name = user_email.unwrap_or_default(); let name = email.unwrap_or_default();
let template = ProfileTemplate { logged_in, name}; let template = ProfileTemplate { logged_in, name};
HtmlTemplate(template) HtmlTemplate(template)
} }
/*
#[derive(Template)] #[derive(Template)]
#[derive(Serialize, Deserialize)]
#[template(path = "useradmin.html")] #[template(path = "useradmin.html")]
struct UserAdminTemplate { struct UserAdminTemplate {
logged_in: bool, logged_in: bool,
@ -40,7 +38,7 @@ pub async fn useradmin<T>(
_request: Request<T>, _request: Request<T>,
) -> impl IntoResponse { ) -> 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 logged_in = user_email.is_some();
let name = user_email.unwrap_or_default(); let name = user_email.unwrap_or_default();
@ -52,4 +50,3 @@ pub async fn useradmin<T>(
let template = UserAdminTemplate { logged_in, name, users }; let template = UserAdminTemplate { logged_in, name, users };
HtmlTemplate(template) HtmlTemplate(template)
} }
*/

View File

@ -1,6 +1,13 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}User Profile{% endblock %} {% block title %}User Profile{% endblock %}
{% block content %} {% block content %}
This is the user administration page. <br /> <h1>Users</h1>
{{ users }} <table>
{% for user in users %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.email }}</td>
</tr>
{% endfor %}
</table>
{% endblock %} {% endblock %}