headless_lms_server/controllers/cms/
email_templates.rs1use models::email_templates::{EmailTemplate, EmailTemplateUpdate};
4
5use crate::prelude::*;
6
7#[instrument(skip(pool))]
11async fn get_email_template(
12 email_template_id: web::Path<Uuid>,
13 pool: web::Data<PgPool>,
14 user: AuthUser,
15) -> ControllerResult<web::Json<EmailTemplate>> {
16 let mut conn = pool.acquire().await?;
17 let email_templates =
18 models::email_templates::get_email_template(&mut conn, *email_template_id).await?;
19 let token = if let Some(course_id) = email_templates.course_id {
20 authorize(&mut conn, Act::Teach, Some(user.id), Res::Course(course_id)).await?
21 } else {
22 authorize(
23 &mut conn,
24 Act::Administrate,
25 Some(user.id),
26 Res::GlobalPermissions,
27 )
28 .await?
29 };
30 token.authorized_ok(web::Json(email_templates))
31}
32
33#[instrument(skip(pool))]
37async fn update_email_template(
38 email_template_id: web::Path<Uuid>,
39 payload: web::Json<EmailTemplateUpdate>,
40 pool: web::Data<PgPool>,
41 user: AuthUser,
42) -> ControllerResult<web::Json<EmailTemplate>> {
43 let mut conn = pool.acquire().await?;
44 let template =
45 models::email_templates::get_email_template(&mut conn, *email_template_id).await?;
46 let token = if let Some(course_id) = template.course_id {
47 authorize(&mut conn, Act::Teach, Some(user.id), Res::Course(course_id)).await?
48 } else {
49 authorize(
50 &mut conn,
51 Act::Administrate,
52 Some(user.id),
53 Res::GlobalPermissions,
54 )
55 .await?
56 };
57 let request_update_template = payload.0;
58 let updated_template = models::email_templates::update_email_template(
59 &mut conn,
60 *email_template_id,
61 request_update_template,
62 )
63 .await?;
64 token.authorized_ok(web::Json(updated_template))
65}
66
67pub fn _add_routes(cfg: &mut ServiceConfig) {
75 cfg.route("/{email_template_id}", web::get().to(get_email_template))
76 .route("/{email_template_id}", web::put().to(update_email_template));
77}