headless_lms_server/controllers/main_frontend/
email_templates.rs1use models::email_templates::EmailTemplate;
4
5use crate::prelude::*;
6
7#[instrument(skip(pool))]
11async fn get_all_email_templates(
12 pool: web::Data<PgPool>,
13 user: AuthUser,
14) -> ControllerResult<web::Json<Vec<EmailTemplate>>> {
15 let mut conn = pool.acquire().await?;
16 let token = authorize(
17 &mut conn,
18 Act::Administrate,
19 Some(user.id),
20 Res::GlobalPermissions,
21 )
22 .await?;
23 let email_templates = models::email_templates::get_all_email_templates(&mut conn).await?;
24 token.authorized_ok(web::Json(email_templates))
25}
26
27#[instrument(skip(pool))]
31async fn delete_email_template(
32 email_template_id: web::Path<Uuid>,
33 pool: web::Data<PgPool>,
34 user: AuthUser,
35) -> ControllerResult<web::Json<EmailTemplate>> {
36 let mut conn = pool.acquire().await?;
37 let deleted =
38 models::email_templates::delete_email_template(&mut conn, *email_template_id).await?;
39
40 let token = authorize(&mut conn, Act::Teach, Some(user.id), Res::AnyCourse).await?;
41 token.authorized_ok(web::Json(deleted))
42}
43
44pub fn _add_routes(cfg: &mut ServiceConfig) {
52 cfg.route("", web::get().to(get_all_email_templates)).route(
53 "/{email_template_id}",
54 web::delete().to(delete_email_template),
55 );
56}