feat: initial working pwd reset method

This commit is contained in:
Zhongheng Liu 2026-01-31 01:00:08 +01:00
commit c8856ddeb1
Signed by: steven
GPG key ID: 805A28B071DAD84B
8 changed files with 3246 additions and 0 deletions

45
src/main.rs Normal file
View file

@ -0,0 +1,45 @@
mod auth;
mod provider;
mod request_types;
#[macro_use] extern crate rocket;
use std::env;
use rocket::serde::json::Json;
use rocket::{Error, State};
use rocket::http::Status;
use crate::provider::{PurelymailProvider, SMTPUserCredentials};
use crate::request_types::PasswordResetRequest;
#[get("/")]
fn index() -> &'static str {
"Hello, world!"
}
#[get("/onboard/<token>")]
fn onboard(token: String) -> String {
todo!()
}
#[post("/doResetPassword", data = "<data>")]
async fn user(data: Json<PasswordResetRequest>, provider: &State<PurelymailProvider>) -> Result<String, Status> {
provider.reset_password(&data.email, &data.new_password).await
.map(|_| { String::from("Good") })
.or(Err(Status::BadRequest))
}
#[launch]
fn rocket() -> _ {
let token = env::var("API_TOKEN").expect("API_TOKEN env var not set");
let smtp_webmaster_username = env::var("WEBMASTER_USERNAME")
.expect("WEBMASTER_USERNAME env var not set");
let smtp_webmaster_password = env::var("WEBMASTER_PASSWORD")
.expect("WEBMASTER_PASSWORD env var not set");
let provider: PurelymailProvider = PurelymailProvider::new(
token,
SMTPUserCredentials::new(&smtp_webmaster_username, &smtp_webmaster_password)
);
rocket::build()
.manage(provider)
.mount("/", routes![index, onboard, user])
}