use actix_web::{get, web::Data, HttpRequest, HttpResponse}; use askama::Template; use crate::{ ctx::Ctx, db::models::NewsPost, error::NekrochanError, filters, web::{tcx::TemplateCtx, template_response}, }; #[derive(Template)] #[template(path = "staff/news.html")] struct NewsTemplate { tcx: TemplateCtx, news: Vec, } #[get("/staff/news")] pub async fn news(ctx: Data, req: HttpRequest) -> Result { let tcx = TemplateCtx::new(&ctx, &req).await?; if !(tcx.perms.owner() || tcx.perms.news()) { return Err(NekrochanError::InsufficientPermissionError); } let news = NewsPost::read_all(&ctx).await?; let template = NewsTemplate { tcx, news }; template_response(&template) }