29 lines
797 B
Rust
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()
|
|
}
|