This commit is contained in:
Nadja Reitzenstein
2022-04-21 23:02:58 +02:00
parent 5538dd6751
commit 15c878e1d2
12 changed files with 831 additions and 2176 deletions

View File

@ -1,7 +1,7 @@
use crate::session::SessionHandle;
use api::machinesystem_capnp::machine_system::{
info, InfoParams, InfoResults, Server as MachineSystem,
info,
};
use capnp::capability::Promise;
use capnp_rpc::pry;
@ -23,14 +23,6 @@ impl Machines {
}
}
impl MachineSystem for Machines {
fn info(&mut self, _: InfoParams, mut result: InfoResults) -> Promise<(), ::capnp::Error> {
// TODO permission checking
result.get().set_info(capnp_rpc::new_client(self.clone()));
Promise::ok(())
}
}
impl info::Server for Machines {
fn get_machine_list(
&mut self,

View File

@ -1,4 +1,4 @@
use api::permissionsystem_capnp::permission_system::Server as PermissionSystem;
use api::permissionsystem_capnp::permission_system::info::Server as PermissionSystem;
use crate::session::SessionHandle;

View File

@ -1,4 +1,5 @@
use api::authenticationsystem_capnp::response::successful::Builder;
use crate::authorization::permissions::Permission;
use crate::capnp::machinesystem::Machines;
@ -17,8 +18,24 @@ impl APISession {
pub fn build(session: SessionHandle, builder: Builder) {
let mut builder = builder.init_session();
builder.set_machine_system(capnp_rpc::new_client(Machines::new(session.clone())));
builder.set_user_system(capnp_rpc::new_client(Users::new(session.clone())));
builder.set_permission_system(capnp_rpc::new_client(Permissions::new(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_info(capnp_rpc::new_client(u));
}
{
let mut b = builder.init_permission_system();
b.set_info(capnp_rpc::new_client(Permissions::new(session)));
}
}
}

View File

@ -2,7 +2,7 @@ use capnp::capability::Promise;
use capnp_rpc::pry;
use libc::user;
use api::usersystem_capnp::user_system::{
info, manage, Server as UserSystem,
info, manage,
self as system,
};
use crate::authorization::permissions::Permission;
@ -22,34 +22,13 @@ impl Users {
}
}
impl system::Server for Users {
fn info(
&mut self,
_: system::InfoParams,
mut result: system::InfoResults,
) -> Promise<(), ::capnp::Error> {
result.get().set_info(capnp_rpc::new_client(self.clone()));
Promise::ok(())
}
fn manage(
&mut self,
_: system::ManageParams,
mut result: system::ManageResults,
) -> Promise<(), ::capnp::Error> {
if self.session.has_perm(Permission::new("bffh.users.manage")) {
result.get().set_manage(capnp_rpc::new_client(self.clone()));
}
Promise::ok(())
}
}
impl info::Server for Users {
fn get_user_self(
&mut self,
_: info::GetUserSelfParams,
mut result: info::GetUserSelfResults,
) -> Promise<(), ::capnp::Error> {
let builder = result.get().init_user();
let builder = result.get();
User::build(self.session.clone(), builder);
Promise::ok(())
}