use actix_identity::Identity; use actix_web::{web, Responder}; use askama::Template; use askama_actix::TemplateToResponse; use sqlx::PgPool; use crate::models::{Area, Role, User}; #[derive(Template)] #[template(path = "user/new.html")] pub struct NewUserTemplate { user: User, areas: Option> } #[actix_web::get("/users/new")] pub async fn get_new(user: Identity, pool: web::Data) -> impl Responder { let current_user = User::read_by_id(pool.get_ref(), user.id().unwrap().parse().unwrap()).await.unwrap(); let mut areas: Option> = None; if current_user.role == Role::Admin { areas = Some(Area::read_all(pool.get_ref()).await.unwrap()) } let template = NewUserTemplate { user: current_user, areas }; template.to_response() }