nomilo/src/routes/ui/zones.rs

31 lines
762 B
Rust
Raw Normal View History

2022-04-29 02:29:10 +00:00
use serde::Serialize;
use rocket::http::{Status};
use crate::template::Template;
use crate::models;
use crate::DbConn;
#[derive(Serialize)]
pub struct RecordsPage {
zone: String
}
#[get("/zone/<zone>/records")]
pub async fn get_zone_records_page(user_info: models::UserInfo, zone: models::AbsoluteName, conn: DbConn) -> Result<Template<'static, RecordsPage>, Status> {
let zone_name = zone.to_utf8();
conn.run(move |c| {
if user_info.is_admin() {
models::Zone::get_by_name(c, &zone_name)
} else {
user_info.get_zone(c, &zone_name)
}
}).await.map_err(|e| models::ErrorResponse::from(e).status)?;
Ok(Template::new("zone/records.html", RecordsPage {
zone: zone.to_utf8(),
}))
}