54 lines
1.8 KiB
Rust
54 lines
1.8 KiB
Rust
use crate::database::controller::groups::get_group_member_count;
|
|
use crate::database::controller::roles::get_roles;
|
|
use crate::helper::settings::Settings;
|
|
use crate::helper::sitebuilder::model::general::{Footer, Header, Script, Stylesheet};
|
|
use crate::helper::sitebuilder::model::sidebar::Sidebar;
|
|
use crate::modules::member_management::model::groups::GroupsModule;
|
|
use crate::modules::member_management::model::member::Member;
|
|
use rocket::http::Status;
|
|
use rocket::State;
|
|
use rocket_dyn_templates::Template;
|
|
|
|
pub fn render(settings: &State<Settings>, caller: Member) -> Result<Template, Status> {
|
|
if !caller.has_permission("modules.member_management.groups.view".to_string()) {
|
|
return Err(Status::Unauthorized);
|
|
}
|
|
|
|
let header = Header {
|
|
html_language: "de".to_string(),
|
|
site_title: "Gruppen".to_string(),
|
|
stylesheets: vec![Stylesheet {
|
|
path: "/css/errms.css".to_string(),
|
|
}],
|
|
};
|
|
let footer = Footer {
|
|
scripts: vec![Script {
|
|
path: "/js/member_management_groups.js".to_string(),
|
|
}, Script{ path: "/js/member_management_group_member_searchbar.js".to_string() }],
|
|
};
|
|
let mut sidebar = Sidebar::new(caller.clone());
|
|
sidebar.member_management.active = true;
|
|
|
|
let groups = match get_group_member_count(settings, caller.entity_id) {
|
|
Ok(groups) => groups,
|
|
Err(_) => return Err(Status::InternalServerError),
|
|
};
|
|
|
|
let roles = match get_roles(settings) {
|
|
Ok(roles) => roles,
|
|
Err(_) => return Err(Status::InternalServerError),
|
|
};
|
|
|
|
return Ok(Template::render(
|
|
"module_member_management_groups",
|
|
GroupsModule {
|
|
header,
|
|
footer,
|
|
sidebar,
|
|
caller_permissions: caller.permissions,
|
|
groups,
|
|
roles,
|
|
},
|
|
));
|
|
}
|