Add redirect response to signup success.
This commit is contained in:
parent
fee7fff3df
commit
ebfc759fa6
2 changed files with 20 additions and 4 deletions
|
@ -4,7 +4,7 @@ use axum::{routing::get, Router};
|
||||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||||
use witch_watch::{
|
use witch_watch::{
|
||||||
db,
|
db,
|
||||||
users::{get_create_user, post_create_user},
|
users::{get_create_user, get_signup_success, post_create_user},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
|
@ -22,6 +22,7 @@ async fn main() {
|
||||||
// build our application with some routes
|
// build our application with some routes
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/signup", get(get_create_user).post(post_create_user))
|
.route("/signup", get(get_create_user).post(post_create_user))
|
||||||
|
.route("/signup_success", get(get_signup_success))
|
||||||
.with_state(pool);
|
.with_state(pool);
|
||||||
|
|
||||||
tracing::debug!("binding to 0.0.0.0:3000");
|
tracing::debug!("binding to 0.0.0.0:3000");
|
||||||
|
|
21
src/users.rs
21
src/users.rs
|
@ -8,7 +8,7 @@ use askama::Template;
|
||||||
use axum::{
|
use axum::{
|
||||||
extract::{Form, State},
|
extract::{Form, State},
|
||||||
http::StatusCode,
|
http::StatusCode,
|
||||||
response::IntoResponse,
|
response::{IntoResponse, Response},
|
||||||
};
|
};
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
use unicode_segmentation::UnicodeSegmentation;
|
use unicode_segmentation::UnicodeSegmentation;
|
||||||
|
@ -76,7 +76,7 @@ pub async fn get_create_user() -> CreateUser {
|
||||||
pub async fn post_create_user(
|
pub async fn post_create_user(
|
||||||
State(pool): State<SqlitePool>,
|
State(pool): State<SqlitePool>,
|
||||||
Form(signup): Form<CreateUser>,
|
Form(signup): Form<CreateUser>,
|
||||||
) -> Result<CreateUserSuccess, CreateUserError> {
|
) -> Result<Response, CreateUserError> {
|
||||||
let username = &signup.username;
|
let username = &signup.username;
|
||||||
let displayname = &signup.displayname;
|
let displayname = &signup.displayname;
|
||||||
let email = &signup.email;
|
let email = &signup.email;
|
||||||
|
@ -122,7 +122,22 @@ pub async fn post_create_user(
|
||||||
|
|
||||||
let user = create_user(username, displayname, email, password, &pool).await?;
|
let user = create_user(username, displayname, email, password, &pool).await?;
|
||||||
tracing::debug!("created {user:?}");
|
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<SqlitePool>,
|
||||||
|
) -> CreateUserSuccess {
|
||||||
|
if let Some(id) = headers.get("X-Witch") {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
todo!()
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn create_user(
|
async fn create_user(
|
||||||
|
|
Loading…
Reference in a new issue