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