Implement changes from fabaccess-api#24

This commit is contained in:
Nadja Reitzenstein
2022-04-22 20:09:34 +02:00
parent 047f7bc1de
commit 3300105082
4 changed files with 33 additions and 31 deletions

View File

@ -208,8 +208,8 @@ impl ManageServer for Machine {
) -> Promise<(), ::capnp::Error> {
let mut builder = result.get();
let user = User::new_self(self.session.clone());
user.build_else(self.resource.get_current_user(), builder.reborrow().init_current_user());
user.build_else(self.resource.get_previous_user(), builder.init_last_user());
user.build_optional(self.resource.get_current_user(), builder.reborrow().init_current_user());
user.build_optional(self.resource.get_previous_user(), builder.init_last_user());
Promise::ok(())
}
fn set_property(

View File

@ -1,7 +1,8 @@
use capnp::capability::Promise;
use capnp_rpc::pry;
use crate::session::SessionHandle;
use api::user_capnp::user::{admin, info, manage, Builder};
use api::user_capnp::user::{admin, info, manage, self};
use api::general_capnp::optional;
use crate::authorization::permissions::Permission;
use crate::users::{db, UserRef};
@ -21,19 +22,20 @@ impl User {
Self::new(session, user)
}
pub fn build_else(&self, user: Option<UserRef>, builder: Builder) {
pub fn build_optional(&self, user: Option<UserRef>, builder: optional::Builder<user::Owned>) {
if let Some(user) = user.and_then(|u| self.session.users.get_user(u.get_username())) {
let mut builder = builder.init_just();
self.fill(user, builder);
}
}
pub fn build(session: SessionHandle, mut builder: Builder) {
pub fn build(session: SessionHandle, mut builder: user::Builder) {
let this = Self::new_self(session);
let user = this.session.get_user();
this.fill(user, builder);
}
pub fn fill(&self, user: db::User, mut builder: Builder) {
pub fn fill(&self, user: db::User, mut builder: user::Builder) {
builder.set_username(user.id.as_str());
let client = Self::new(self.session.clone(), UserRef::new(user.id.clone()));