brass/src/endpoints/user/get_new.rs

29 lines
797 B
Rust

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<Vec<Area>>
}
#[actix_web::get("/users/new")]
pub async fn get_new(user: Identity, pool: web::Data<PgPool>) -> impl Responder {
let current_user = User::read_by_id(pool.get_ref(), user.id().unwrap().parse().unwrap()).await.unwrap();
let mut areas: Option<Vec<Area>> = 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()
}