2022-06-20 15:19:25 +02:00
|
|
|
use crate::authorization::roles::Role;
|
|
|
|
use crate::Roles;
|
|
|
|
use api::permissionsystem_capnp::permission_system::info::{
|
|
|
|
GetRoleListParams, GetRoleListResults, Server as PermissionSystem,
|
|
|
|
};
|
|
|
|
use capnp::capability::Promise;
|
|
|
|
use capnp::Error;
|
2022-03-15 20:00:43 +01:00
|
|
|
|
2022-03-12 17:31:53 +01:00
|
|
|
use crate::session::SessionHandle;
|
2022-03-11 22:13:54 +01:00
|
|
|
|
2022-06-20 15:19:25 +02:00
|
|
|
pub struct Permissions {
|
|
|
|
roles: Roles,
|
|
|
|
}
|
2022-03-11 22:13:54 +01:00
|
|
|
|
2022-03-12 17:31:53 +01:00
|
|
|
impl Permissions {
|
2022-06-20 15:19:25 +02:00
|
|
|
pub fn new(session: SessionHandle) -> Self {
|
|
|
|
Self {
|
|
|
|
roles: session.roles,
|
|
|
|
}
|
2022-03-12 17:31:53 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-06-20 15:19:25 +02:00
|
|
|
impl PermissionSystem for Permissions {
|
|
|
|
fn get_role_list(
|
|
|
|
&mut self,
|
|
|
|
_: GetRoleListParams,
|
|
|
|
mut results: GetRoleListResults,
|
|
|
|
) -> Promise<(), Error> {
|
|
|
|
let roles = self.roles.list().collect::<Vec<&String>>();
|
|
|
|
let mut builder = results.get();
|
|
|
|
let mut b = builder.init_role_list(roles.len() as u32);
|
|
|
|
for (i, role) in roles.into_iter().enumerate() {
|
|
|
|
let mut role_builder = b.reborrow().get(i as u32);
|
|
|
|
role_builder.set_name(role);
|
|
|
|
}
|
|
|
|
Promise::ok(())
|
|
|
|
}
|
|
|
|
}
|