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 get_result_attrib(&self, name: &str) -> Option<&Value>;
fn env_type(&self) -> RpcEnvironmentType; fn env_type(&self) -> RpcEnvironmentType;
fn set_user(&mut self, user: Option<String>);
fn get_user(&self) -> Option<String>;
} }
#[derive(Copy, Clone)] #[derive(Copy, Clone)]

View File

@ -5,11 +5,15 @@ use serde_json::Value;
pub struct CliEnvironment { pub struct CliEnvironment {
result_attributes: HashMap<String, Value>, result_attributes: HashMap<String, Value>,
user: Option<String>,
} }
impl CliEnvironment { impl CliEnvironment {
pub fn new() -> Self { 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 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 { pub struct RestEnvironment {
env_type: RpcEnvironmentType, env_type: RpcEnvironmentType,
result_attributes: HashMap<String, Value>, result_attributes: HashMap<String, Value>,
user: Option<String>,
} }
impl RestEnvironment { impl RestEnvironment {
pub fn new(env_type: RpcEnvironmentType) -> Self { pub fn new(env_type: RpcEnvironmentType) -> Self {
Self { Self {
result_attributes: HashMap::new(), result_attributes: HashMap::new(),
user: None,
env_type, env_type,
} }
} }
@ -30,4 +32,12 @@ impl RpcEnvironment for RestEnvironment {
fn env_type(&self) -> RpcEnvironmentType { fn env_type(&self) -> RpcEnvironmentType {
self.env_type 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!("REQUEST {} {}", method, path);
println!("COMPO {:?}", components); println!("COMPO {:?}", components);
let rpcenv = RestEnvironment::new(RpcEnvironmentType::PRIVILEDGED); let mut rpcenv = RestEnvironment::new(RpcEnvironmentType::PRIVILEDGED);
if comp_len >= 1 && components[0] == "api2" { if comp_len >= 1 && components[0] == "api2" {
println!("GOT API REQUEST"); 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(); let mut uri_param = HashMap::new();
// fixme: handle auth // fixme: handle auth
rpcenv.set_user(Some(String::from("root@pam")));
match api.find_method(&components[2..], method, &mut uri_param) { match api.find_method(&components[2..], method, &mut uri_param) {
MethodDefinition::None => {} MethodDefinition::None => {}
MethodDefinition::Simple(api_method) => { MethodDefinition::Simple(api_method) => {