mirror of
https://gitlab.com/fabinfra/fabaccess/bffh.git
synced 2025-06-11 10:53:19 +02:00
comp
This commit is contained in:
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
@ -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(())
|
||||
}
|
||||
|
Reference in New Issue
Block a user