fabaccess-bffh/bffhd/capnp/user_system.rs
2022-03-16 20:17:59 +01:00

84 lines
2.1 KiB
Rust

use capnp::capability::Promise;
use api::usersystem_capnp::user_system::{
info, manage, Server as UserSystem,
self as system,
};
use crate::authorization::permissions::Permission;
use crate::capnp::user::User;
use crate::session::SessionHandle;
#[derive(Clone)]
pub struct Users {
session: SessionHandle,
}
impl Users {
pub fn new(session: SessionHandle) -> Self {
Self { session }
}
}
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();
User::build(self.session.clone(), builder);
Promise::ok(())
}
}
impl manage::Server for Users {
fn get_user_list(
&mut self,
_: manage::GetUserListParams,
_: manage::GetUserListResults,
) -> Promise<(), ::capnp::Error> {
Promise::err(::capnp::Error::unimplemented(
"method not implemented".to_string(),
))
}
fn add_user(
&mut self,
_: manage::AddUserParams,
_: manage::AddUserResults,
) -> Promise<(), ::capnp::Error> {
Promise::err(::capnp::Error::unimplemented(
"method not implemented".to_string(),
))
}
fn remove_user(
&mut self,
_: manage::RemoveUserParams,
_: manage::RemoveUserResults,
) -> Promise<(), ::capnp::Error> {
Promise::err(::capnp::Error::unimplemented(
"method not implemented".to_string(),
))
}
}