Fix user admin page
This commit is contained in:
parent
75f6b94005
commit
022a138e56
|
|
@ -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<T>(
|
||||
Extension(user_data): Extension<Option<UserData>>,
|
||||
_request: Request<T>,
|
||||
) -> 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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<T>(
|
|||
Extension(user_data): Extension<Option<UserData>>,
|
||||
_request: Request<T>,
|
||||
) -> 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<T>(
|
|||
_request: Request<T>,
|
||||
) -> 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<T>(
|
|||
let template = UserAdminTemplate { logged_in, name, users };
|
||||
HtmlTemplate(template)
|
||||
}
|
||||
*/
|
||||
|
|
@ -1,6 +1,13 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}User Profile{% endblock %}
|
||||
{% block content %}
|
||||
This is the user administration page. <br />
|
||||
{{ users }}
|
||||
<h1>Users</h1>
|
||||
<table>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{ user.id }}</td>
|
||||
<td>{{ user.email }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock %}
|
||||
Loading…
Reference in New Issue