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 } #[get("/reset-password")] pub async fn get(user: Option, query: web::Query) -> 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(); }