RpcEnvironment: implement set_user() and get_user()

This commit is contained in:
Dietmar Maurer 2019-01-27 10:42:45 +01:00
parent 162b979394
commit d7d23785f0
4 changed files with 29 additions and 2 deletions

View File

@ -18,6 +18,10 @@ pub trait RpcEnvironment {
fn get_result_attrib(&self, name: &str) -> Option<&Value>;
fn env_type(&self) -> RpcEnvironmentType;
fn set_user(&mut self, user: Option<String>);
fn get_user(&self) -> Option<String>;
}
#[derive(Copy, Clone)]

View File

@ -5,11 +5,15 @@ use serde_json::Value;
pub struct CliEnvironment {
result_attributes: HashMap<String, Value>,
user: Option<String>,
}
impl CliEnvironment {
pub fn new() -> Self {
Self { result_attributes: HashMap::new() }
Self {
result_attributes: HashMap::new(),
user: None,
}
}
}
@ -27,4 +31,11 @@ impl RpcEnvironment for CliEnvironment {
RpcEnvironmentType::CLI
}
fn set_user(&mut self, user: Option<String>) {
self.user = user;
}
fn get_user(&self) -> Option<String> {
self.user.clone()
}
}

View File

@ -6,12 +6,14 @@ use serde_json::Value;
pub struct RestEnvironment {
env_type: RpcEnvironmentType,
result_attributes: HashMap<String, Value>,
user: Option<String>,
}
impl RestEnvironment {
pub fn new(env_type: RpcEnvironmentType) -> Self {
Self {
result_attributes: HashMap::new(),
user: None,
env_type,
}
}
@ -30,4 +32,12 @@ impl RpcEnvironment for RestEnvironment {
fn env_type(&self) -> RpcEnvironmentType {
self.env_type
}
fn set_user(&mut self, user: Option<String>) {
self.user = user;
}
fn get_user(&self) -> Option<String> {
self.user.clone()
}
}

View File

@ -397,7 +397,7 @@ pub fn handle_request(api: Arc<ApiConfig>, req: Request<Body>) -> BoxFut {
println!("REQUEST {} {}", method, path);
println!("COMPO {:?}", components);
let rpcenv = RestEnvironment::new(RpcEnvironmentType::PRIVILEDGED);
let mut rpcenv = RestEnvironment::new(RpcEnvironmentType::PRIVILEDGED);
if comp_len >= 1 && components[0] == "api2" {
println!("GOT API REQUEST");
@ -414,6 +414,8 @@ pub fn handle_request(api: Arc<ApiConfig>, req: Request<Body>) -> BoxFut {
let mut uri_param = HashMap::new();
// fixme: handle auth
rpcenv.set_user(Some(String::from("root@pam")));
match api.find_method(&components[2..], method, &mut uri_param) {
MethodDefinition::None => {}
MethodDefinition::Simple(api_method) => {