brass/src/endpoints/user/get_reset.rs

42 lines
1.0 KiB
Rust

use actix_identity::Identity;
use actix_web::{get, http::header::LOCATION, web, HttpResponse, Responder};
use askama::Template;
use askama_actix::TemplateToResponse;
use serde::Deserialize;
#[derive(Template)]
#[template(path = "user/forgot_password.html")]
struct ForgotPasswordTemplate {}
#[derive(Template)]
#[template(path = "user/reset_password.html")]
struct ResetPasswordTemplate {
token: String
}
#[derive(Deserialize)]
struct TokenQuery {
token: Option<String>
}
#[get("/reset-password")]
pub async fn get(user: Option<Identity>, query: web::Query<TokenQuery>) -> impl Responder {
if let Some(_) = user {
return HttpResponse::Found()
.insert_header((LOCATION, "/"))
.finish();
} else if let Some(token) = &query.token {
let token_exists = true;
if token_exists {
let template = ResetPasswordTemplate { token: token.to_string() };
return template.to_response();
}
}
let template = ForgotPasswordTemplate {};
return template.to_response();
}