use crate::authorization::permissions::Permission; use api::authenticationsystem_capnp::response::successful::Builder; use crate::capnp::machinesystem::Machines; use crate::capnp::permissionsystem::Permissions; use crate::capnp::user_system::Users; use crate::session::SessionHandle; #[derive(Debug, Clone)] pub struct APISession; impl APISession { pub fn new() -> Self { Self } pub fn build(session: SessionHandle, builder: Builder) { let mut builder = builder.init_session(); { let mut b = builder.reborrow().init_machine_system(); b.set_info(capnp_rpc::new_client(Machines::new(session.clone()))); } { let mut b = builder.reborrow().init_user_system(); let u = Users::new(session.clone()); if session.has_perm(Permission::new("bffh.users.manage")) { b.set_manage(capnp_rpc::new_client(u.clone())); b.set_search(capnp_rpc::new_client(u.clone())); } b.set_info(capnp_rpc::new_client(u)); } { let mut b = builder.init_permission_system(); b.set_info(capnp_rpc::new_client(Permissions::new(session))); } } }