EinsatzOnline/src/modules/communicator/send_email.rs

58 lines
1.7 KiB
Rust

use rocket::http::Status;
use crate::helper::session_cookies::model::SessionCookie;
use crate::helper::sitebuilder::model::general::{Header, Footer, Stylesheet, Script};
use crate::helper::sitebuilder::model::sidebar::Sidebar;
use crate::helper::sitebuilder::model::alerts::Alert;
use rocket_dyn_templates::Template;
#[derive(Serialize)]
pub struct CommunicatorEmailTemplate{
pub header: Header,
pub footer: Footer,
pub sidebar: Sidebar,
pub alert: Option<Alert>,
pub to: Option<String>,
pub cc: Option<String>,
pub bcc: Option<String>
}
#[get("/portal/communicator/email?<to>&<cc>&<bcc>")]
pub fn communicator_email_get(cookie: SessionCookie, to: Option<String>, cc: Option<String>, bcc: Option<String>) -> Result<Template, Status> {
let caller = match cookie.member {
//Unwraps member from cookie or send user to login if no member specified (user skipped member selection)
Some(member) => member,
None => return Err(Status::Unauthorized),
};
if !caller.has_permission(crate::permissions::modules::communicator::VIEW.to_string()){
return Err(Status::Forbidden)
}
let header = Header{
html_language: "de".to_string(),
site_title: "Email versenden".to_string(),
stylesheets: vec![Stylesheet {
path: "/css/errms.css".to_string(),
}]
};
let footer = Footer { scripts: vec![Script{ path: "/js/communicator.js".to_string() }] };
let mut sidebar = Sidebar::new(caller);
sidebar.communicator.active=true;
let templ = CommunicatorEmailTemplate{
header,
footer,
sidebar,
alert: None,
to,
cc,
bcc
};
Ok(Template::render("module_communicator_email", templ))
}