From ebfc759fa6c288aa605cb4273c640eb765adb500 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Fri, 19 May 2023 15:13:49 -0700 Subject: [PATCH] Add redirect response to signup success. --- src/main.rs | 3 ++- src/users.rs | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 47cf3be..07913a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ use axum::{routing::get, Router}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; use witch_watch::{ db, - users::{get_create_user, post_create_user}, + users::{get_create_user, get_signup_success, post_create_user}, }; #[tokio::main] @@ -22,6 +22,7 @@ async fn main() { // build our application with some routes let app = Router::new() .route("/signup", get(get_create_user).post(post_create_user)) + .route("/signup_success", get(get_signup_success)) .with_state(pool); tracing::debug!("binding to 0.0.0.0:3000"); diff --git a/src/users.rs b/src/users.rs index 3a1d4b1..c5b5c18 100644 --- a/src/users.rs +++ b/src/users.rs @@ -8,7 +8,7 @@ use askama::Template; use axum::{ extract::{Form, State}, http::StatusCode, - response::IntoResponse, + response::{IntoResponse, Response}, }; use sqlx::SqlitePool; use unicode_segmentation::UnicodeSegmentation; @@ -76,7 +76,7 @@ pub async fn get_create_user() -> CreateUser { pub async fn post_create_user( State(pool): State, Form(signup): Form, -) -> Result { +) -> Result { let username = &signup.username; let displayname = &signup.displayname; let email = &signup.email; @@ -122,7 +122,22 @@ pub async fn post_create_user( let user = create_user(username, displayname, email, password, &pool).await?; tracing::debug!("created {user:?}"); - Ok(CreateUserSuccess(user)) + let mut resp = axum::response::Redirect::temporary("/signup_success").into_response(); + resp.headers_mut().append( + "X-Witch-Success", + user.id.simple().to_string().parse().unwrap(), + ); + Ok(resp) +} + +pub async fn get_signup_success( + headers: axum::http::HeaderMap, + State(pool): State, +) -> CreateUserSuccess { + if let Some(id) = headers.get("X-Witch") { + todo!() + } + todo!() } async fn create_user(