fabaccess-bffh/bffhd/users/mod.rs

91 lines
2.1 KiB
Rust
Raw Normal View History

2021-12-17 16:43:31 +01:00
/*
* Copyright (c) 2021. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
* Vestibulum commodo. Ut rhoncus gravida arcu.
*/
2021-11-26 22:11:24 +01:00
use rkyv::{Archive, Serialize, Deserialize};
2021-11-26 21:01:43 +01:00
2021-11-26 22:11:24 +01:00
use capnp::capability::Promise;
use capnp::Error;
2021-12-06 21:53:42 +01:00
use capnp_rpc::pry;
2021-11-26 22:11:24 +01:00
use api::user::{
info,
manage,
admin,
2021-12-06 21:53:42 +01:00
passwd,
2021-11-26 22:11:24 +01:00
};
mod db;
2021-12-06 21:53:42 +01:00
mod pass;
2021-11-26 22:11:24 +01:00
pub use db::UserDB;
2021-12-06 21:53:42 +01:00
pub use pass::PassDB;
2021-11-26 22:11:24 +01:00
#[derive(Debug, Clone, Archive, Serialize, Deserialize, serde::Serialize, serde::Deserialize)]
2021-12-06 21:53:42 +01:00
/// User API endpoint
2021-11-26 22:11:24 +01:00
pub struct User {
id: u128,
username: String,
roles: Vec<String>,
}
impl User {
2021-12-17 16:43:31 +01:00
pub fn new(id: u128, username: String, roles: Vec<String>) -> Self {
User { id, username, roles }
}
2021-11-26 22:11:24 +01:00
}
impl info::Server for User {
fn list_roles(
&mut self,
2021-12-06 21:53:42 +01:00
_params: info::ListRolesParams,
2021-11-26 22:11:24 +01:00
mut results: info::ListRolesResults
) -> Promise<(), Error>
{
2021-12-06 21:53:42 +01:00
let results = results.get();
let mut roles = results.init_roles(self.roles.len() as u32);
for (i, role) in self.roles.iter().enumerate() {
let mut role_builder = roles.reborrow().get(i as u32);
role_builder.set_name(role);
}
2021-11-26 22:11:24 +01:00
Promise::ok(())
}
}
impl manage::Server for User {
2021-12-06 21:53:42 +01:00
fn add_role(
&mut self,
params: manage::AddRoleParams,
_: manage::AddRoleResults
) -> Promise<(), Error> {
let params = pry!(params.get());
let name = pry!(params.get_name()).to_string();
self.roles.push(name);
Promise::ok(())
}
2021-11-26 22:11:24 +01:00
2021-12-06 21:53:42 +01:00
fn remove_role(
&mut self,
params: manage::RemoveRoleParams,
_: manage::RemoveRoleResults
) -> Promise<(), Error> {
let params = pry!(params.get());
let name = pry!(params.get_name());
self.roles.retain(|role| role != name);
Promise::ok(())
}
2021-11-26 22:11:24 +01:00
}
impl admin::Server for User {
2021-12-06 21:53:42 +01:00
}
impl passwd::Server for User {
2021-11-26 22:11:24 +01:00
}