phylax/src/main.rs
2026-01-31 01:03:22 +01:00

45 lines
1.3 KiB
Rust

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])
}