31 lines
762 B
Rust
31 lines
762 B
Rust
|
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(),
|
||
|
}))
|
||
|
}
|