Fix user admin page
This commit is contained in:
parent
75f6b94005
commit
022a138e56
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
@ -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 %}
|
||||||
Loading…
Reference in New Issue