Nekrocuck
This commit is contained in:
31
src/web/staff/news.rs
Normal file
31
src/web/staff/news.rs
Normal file
@@ -0,0 +1,31 @@
|
||||
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<NewsPost>,
|
||||
}
|
||||
|
||||
#[get("/staff/news")]
|
||||
pub async fn news(ctx: Data<Ctx>, req: HttpRequest) -> Result<HttpResponse, NekrochanError> {
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user