checks in provider

This commit is contained in:
DieMyst 2021-01-02 13:23:37 +03:00
parent 213288ddbd
commit e7800266fa
2 changed files with 20 additions and 5 deletions

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
use fluence::fce; use fluence::{fce, CallParameters};
use fluence::WasmLoggerBuilder; use fluence::WasmLoggerBuilder;
use std::collections::HashMap; use std::collections::HashMap;
@ -43,9 +43,12 @@ pub fn main() {
} }
#[fce] #[fce]
pub fn get_status(peer_id: String) -> Status { pub fn get_status() -> Status {
let data = global_data().lock(); 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()) { match data.get(peer_id.as_str()) {
None => { None => {
Status { Status {
@ -60,12 +63,24 @@ pub fn get_status(peer_id: String) -> Status {
pub fn register(peer_id: String) { pub fn register(peer_id: String) {
let mut data = global_data().lock(); 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] #[fce]
pub fn remove(peer_id: String) { pub fn remove(peer_id: String) {
let mut data = global_data().lock(); 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());
}
} }

View File

@ -76,7 +76,7 @@ pub fn is_authorized(auth: bool) -> bool {
return st.peer_pk == t.peer_pk && st.function_name == t.fn_name return st.peer_pk == t.peer_pk && st.function_name == t.fn_name
&& st.service_id == t.service_id && && st.service_id == t.service_id &&
st.json_path == t.json_path; st.json_path == t.json_path && auth;
} }
} }
} }