51 lines
1.4 KiB
Rust
51 lines
1.4 KiB
Rust
use lettre::AsyncTransport;
|
|
|
|
use crate::domain::api::ports::UserNotifier;
|
|
|
|
use crate::domain::api::models::user::*;
|
|
|
|
use super::DangerousLettre;
|
|
|
|
impl UserNotifier for DangerousLettre {
|
|
async fn user_created(&self, user: &User, token: &ActivationToken) {
|
|
let mut context = tera::Context::new();
|
|
|
|
let url = format!("http://127.0.0.1:3000/auth/activate/{}", token); // Move base url to env
|
|
|
|
context.insert("activate_url", &url);
|
|
|
|
let to = format!("{}", user.email()).parse().unwrap();
|
|
|
|
let message = self
|
|
.template("user/created", "Welcome to AVAM!", &context, to)
|
|
.unwrap();
|
|
|
|
if let Err(e) = self.mailer.send(message).await {
|
|
eprintln!("{:#?}", e);
|
|
};
|
|
}
|
|
|
|
async fn forgot_password(&self, user: &User, token: &ForgotPasswordToken) {
|
|
let mut context = tera::Context::new();
|
|
|
|
let url = format!("http://127.0.0.1:3000/auth/reset/{}", token); // Move base url to env
|
|
|
|
context.insert("reset_url", &url);
|
|
|
|
let to = format!("{}", user.email()).parse().unwrap();
|
|
|
|
let message = self
|
|
.template(
|
|
"user/password_reset",
|
|
"Password reset request",
|
|
&context,
|
|
to,
|
|
)
|
|
.unwrap();
|
|
|
|
if let Err(e) = self.mailer.send(message).await {
|
|
eprintln!("{:#?}", e);
|
|
};
|
|
}
|
|
}
|