45 lines
1.3 KiB
Rust
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])
|
|
}
|