From 649bd1c5d6e655ec29edd7b4c7ac03141cbf2e84 Mon Sep 17 00:00:00 2001 From: librelois <c@elo.tf> Date: Fri, 11 Feb 2022 21:43:44 +0100 Subject: [PATCH] feat(wot): remove identity at expiration --- pallets/duniter-wot/src/lib.rs | 12 +++--------- pallets/duniter-wot/src/tests.rs | 8 ++++---- pallets/identity/src/lib.rs | 27 +-------------------------- pallets/identity/src/types.rs | 1 - 4 files changed, 8 insertions(+), 40 deletions(-) diff --git a/pallets/duniter-wot/src/lib.rs b/pallets/duniter-wot/src/lib.rs index 3637a0ca3..161ce0b5e 100644 --- a/pallets/duniter-wot/src/lib.rs +++ b/pallets/duniter-wot/src/lib.rs @@ -166,9 +166,6 @@ impl<T: Config<I>, I: 'static> pallet_certification::traits::IsCertAllowed<IdtyI match receiver_data.status { IdtyStatus::ConfirmedByOwner => true, IdtyStatus::Created => false, - IdtyStatus::Disabled => { - pallet_membership::Pallet::<T, I>::is_in_pending_memberships(receiver) - } IdtyStatus::Validated => { pallet_membership::Pallet::<T, I>::is_member(&receiver) || pallet_membership::Pallet::<T, I>::is_in_pending_memberships( @@ -204,11 +201,7 @@ impl<T: Config<I>, I: 'static> sp_membership::traits::IsIdtyAllowedToRequestMemb { fn is_idty_allowed_to_request_membership(idty_index: &IdtyIndex) -> bool { if let Some(idty_value) = pallet_identity::Pallet::<T>::identity(idty_index) { - if T::IsSubWot::get() { - idty_value.status == IdtyStatus::Validated - } else { - idty_value.status == IdtyStatus::Disabled - } + T::IsSubWot::get() && idty_value.status == IdtyStatus::Validated } else { false } @@ -229,8 +222,9 @@ where } sp_membership::Event::<IdtyIndex, MetaData>::MembershipExpired(idty_index) | sp_membership::Event::<IdtyIndex, MetaData>::MembershipRevoked(idty_index) => { - Self::dispath_idty_call(pallet_identity::Call::disable_identity { + Self::dispath_idty_call(pallet_identity::Call::remove_identity { idty_index: *idty_index, + idty_name: None, }); if !T::IsSubWot::get() { WotDiffs::<T, I>::append(WotDiff::DisableNode(*idty_index)); diff --git a/pallets/duniter-wot/src/tests.rs b/pallets/duniter-wot/src/tests.rs index 99fb10831..9d5b26181 100644 --- a/pallets/duniter-wot/src/tests.rs +++ b/pallets/duniter-wot/src/tests.rs @@ -222,8 +222,8 @@ fn test_idty_membership_expire_them_requested() { ); assert_eq!(DuniterWot::wot_diffs(), vec![WotDiff::DisableNode(3),]); - // Charlie's identity should be disabled at block #5 - assert_eq!(Identity::identity(3).unwrap().status, IdtyStatus::Disabled); + // Charlie's identity should be removed at block #5 + assert!(Identity::identity(3).is_none()); // Alice can't renew it's cert to Charlie assert_err!( @@ -231,7 +231,7 @@ fn test_idty_membership_expire_them_requested() { pallet_certification::Error::<Test, Instance1>::CertNotAllowed ); - // Charlie should be able to request membership + /*// Charlie should be able to request membership run_to_block(6); assert_ok!(Membership::request_membership( Origin::signed(3), @@ -266,6 +266,6 @@ fn test_idty_membership_expire_them_requested() { } ); - assert_eq!(DuniterWot::wot_diffs(), vec![WotDiff::AddNode(3),]); + assert_eq!(DuniterWot::wot_diffs(), vec![WotDiff::AddNode(3),]);*/ }); } diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index 6fc18fa72..50d70f1dc 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -314,7 +314,7 @@ pub mod pallet { match idty_value.status { IdtyStatus::Created => return Err(Error::<T>::IdtyNotConfirmedByOwner.into()), - IdtyStatus::ConfirmedByOwner | IdtyStatus::Disabled => { + IdtyStatus::ConfirmedByOwner => { if !T::EnsureIdtyCallAllowed::can_validate_identity(idty_index) { return Err(Error::<T>::NotAllowedToValidateIdty.into()); } @@ -332,31 +332,6 @@ pub mod pallet { Ok(().into()) } - #[pallet::weight(0)] - pub fn disable_identity( - origin: OriginFor<T>, - idty_index: T::IdtyIndex, - ) -> DispatchResultWithPostInfo { - // Verify phase - ensure_root(origin)?; - - if !Identities::<T>::contains_key(idty_index) { - return Err(Error::<T>::IdtyNotFound.into()); - } - - // Apply phase - let block_number = frame_system::pallet::Pallet::<T>::block_number(); - let removable_on = block_number + T::MaxDisabledPeriod::get(); - Identities::<T>::mutate_exists(idty_index, |idty_value_opt| { - if let Some(idty_value) = idty_value_opt { - idty_value.status = IdtyStatus::Disabled; - idty_value.removable_on = removable_on; - } - }); - <IdentitiesRemovableOn<T>>::append(removable_on, (idty_index, IdtyStatus::Disabled)); - Ok(().into()) - } - #[pallet::weight(0)] pub fn remove_identity( origin: OriginFor<T>, diff --git a/pallets/identity/src/types.rs b/pallets/identity/src/types.rs index e3070a1e1..ecae172f7 100644 --- a/pallets/identity/src/types.rs +++ b/pallets/identity/src/types.rs @@ -69,7 +69,6 @@ impl<'de> serde::Deserialize<'de> for IdtyName { pub enum IdtyStatus { Created, ConfirmedByOwner, - Disabled, Validated, } impl Default for IdtyStatus { -- GitLab