From e7800266fab94bc010717e26f2ffdf0ef79cc85b Mon Sep 17 00:00:00 2001 From: DieMyst Date: Sat, 2 Jan 2021 13:23:37 +0300 Subject: [PATCH] checks in provider --- provider/src/main.rs | 23 +++++++++++++++++++---- verifier/src/main.rs | 2 +- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/provider/src/main.rs b/provider/src/main.rs index 5b3438b..96d82b1 100644 --- a/provider/src/main.rs +++ b/provider/src/main.rs @@ -14,7 +14,7 @@ * limitations under the License. */ -use fluence::fce; +use fluence::{fce, CallParameters}; use fluence::WasmLoggerBuilder; use std::collections::HashMap; @@ -43,9 +43,12 @@ pub fn main() { } #[fce] -pub fn get_status(peer_id: String) -> Status { +pub fn get_status() -> Status { let data = global_data().lock(); + let call_parameters: CallParameters = fluence::get_call_parameters(); + let peer_id = call_parameters.init_peer_id; + match data.get(peer_id.as_str()) { None => { Status { @@ -60,12 +63,24 @@ pub fn get_status(peer_id: String) -> Status { pub fn register(peer_id: String) { let mut data = global_data().lock(); - data.insert(peer_id, Status {is_registered: true}); + let call_parameters: CallParameters = fluence::get_call_parameters(); + let init_peer_id = call_parameters.init_peer_id; + let owner = call_parameters.service_creator_peer_id; + + if (init_peer_id == owner || data.contains_key(&init_peer_id)) { + data.insert(peer_id, Status {is_registered: true}); + } } #[fce] pub fn remove(peer_id: String) { let mut data = global_data().lock(); - data.remove(peer_id.as_str()); + let call_parameters: CallParameters = fluence::get_call_parameters(); + let init_peer_id = call_parameters.init_peer_id; + let owner = call_parameters.service_creator_peer_id; + + if (init_peer_id == owner || data.contains_key(&init_peer_id)) { + data.remove(peer_id.as_str()); + } } diff --git a/verifier/src/main.rs b/verifier/src/main.rs index 40c33bd..238086e 100644 --- a/verifier/src/main.rs +++ b/verifier/src/main.rs @@ -76,7 +76,7 @@ pub fn is_authorized(auth: bool) -> bool { return st.peer_pk == t.peer_pk && st.function_name == t.fn_name && st.service_id == t.service_id && - st.json_path == t.json_path; + st.json_path == t.json_path && auth; } } }