Skip to content
Snippets Groups Projects
Commit 649bd1c5 authored by Éloïs's avatar Éloïs
Browse files

feat(wot): remove identity at expiration

parent 4fb19d80
No related branches found
No related tags found
1 merge request!32feat(wot): remove identity at expiration
...@@ -166,9 +166,6 @@ impl<T: Config<I>, I: 'static> pallet_certification::traits::IsCertAllowed<IdtyI ...@@ -166,9 +166,6 @@ impl<T: Config<I>, I: 'static> pallet_certification::traits::IsCertAllowed<IdtyI
match receiver_data.status { match receiver_data.status {
IdtyStatus::ConfirmedByOwner => true, IdtyStatus::ConfirmedByOwner => true,
IdtyStatus::Created => false, IdtyStatus::Created => false,
IdtyStatus::Disabled => {
pallet_membership::Pallet::<T, I>::is_in_pending_memberships(receiver)
}
IdtyStatus::Validated => { IdtyStatus::Validated => {
pallet_membership::Pallet::<T, I>::is_member(&receiver) pallet_membership::Pallet::<T, I>::is_member(&receiver)
|| pallet_membership::Pallet::<T, I>::is_in_pending_memberships( || pallet_membership::Pallet::<T, I>::is_in_pending_memberships(
...@@ -204,11 +201,7 @@ impl<T: Config<I>, I: 'static> sp_membership::traits::IsIdtyAllowedToRequestMemb ...@@ -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 { fn is_idty_allowed_to_request_membership(idty_index: &IdtyIndex) -> bool {
if let Some(idty_value) = pallet_identity::Pallet::<T>::identity(idty_index) { if let Some(idty_value) = pallet_identity::Pallet::<T>::identity(idty_index) {
if T::IsSubWot::get() { T::IsSubWot::get() && idty_value.status == IdtyStatus::Validated
idty_value.status == IdtyStatus::Validated
} else {
idty_value.status == IdtyStatus::Disabled
}
} else { } else {
false false
} }
...@@ -229,8 +222,9 @@ where ...@@ -229,8 +222,9 @@ where
} }
sp_membership::Event::<IdtyIndex, MetaData>::MembershipExpired(idty_index) sp_membership::Event::<IdtyIndex, MetaData>::MembershipExpired(idty_index)
| sp_membership::Event::<IdtyIndex, MetaData>::MembershipRevoked(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_index: *idty_index,
idty_name: None,
}); });
if !T::IsSubWot::get() { if !T::IsSubWot::get() {
WotDiffs::<T, I>::append(WotDiff::DisableNode(*idty_index)); WotDiffs::<T, I>::append(WotDiff::DisableNode(*idty_index));
......
...@@ -222,8 +222,8 @@ fn test_idty_membership_expire_them_requested() { ...@@ -222,8 +222,8 @@ fn test_idty_membership_expire_them_requested() {
); );
assert_eq!(DuniterWot::wot_diffs(), vec![WotDiff::DisableNode(3),]); assert_eq!(DuniterWot::wot_diffs(), vec![WotDiff::DisableNode(3),]);
// Charlie's identity should be disabled at block #5 // Charlie's identity should be removed at block #5
assert_eq!(Identity::identity(3).unwrap().status, IdtyStatus::Disabled); assert!(Identity::identity(3).is_none());
// Alice can't renew it's cert to Charlie // Alice can't renew it's cert to Charlie
assert_err!( assert_err!(
...@@ -231,7 +231,7 @@ fn test_idty_membership_expire_them_requested() { ...@@ -231,7 +231,7 @@ fn test_idty_membership_expire_them_requested() {
pallet_certification::Error::<Test, Instance1>::CertNotAllowed pallet_certification::Error::<Test, Instance1>::CertNotAllowed
); );
// Charlie should be able to request membership /*// Charlie should be able to request membership
run_to_block(6); run_to_block(6);
assert_ok!(Membership::request_membership( assert_ok!(Membership::request_membership(
Origin::signed(3), Origin::signed(3),
...@@ -266,6 +266,6 @@ fn test_idty_membership_expire_them_requested() { ...@@ -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),]);*/
}); });
} }
...@@ -314,7 +314,7 @@ pub mod pallet { ...@@ -314,7 +314,7 @@ pub mod pallet {
match idty_value.status { match idty_value.status {
IdtyStatus::Created => return Err(Error::<T>::IdtyNotConfirmedByOwner.into()), IdtyStatus::Created => return Err(Error::<T>::IdtyNotConfirmedByOwner.into()),
IdtyStatus::ConfirmedByOwner | IdtyStatus::Disabled => { IdtyStatus::ConfirmedByOwner => {
if !T::EnsureIdtyCallAllowed::can_validate_identity(idty_index) { if !T::EnsureIdtyCallAllowed::can_validate_identity(idty_index) {
return Err(Error::<T>::NotAllowedToValidateIdty.into()); return Err(Error::<T>::NotAllowedToValidateIdty.into());
} }
...@@ -332,31 +332,6 @@ pub mod pallet { ...@@ -332,31 +332,6 @@ pub mod pallet {
Ok(().into()) 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)] #[pallet::weight(0)]
pub fn remove_identity( pub fn remove_identity(
origin: OriginFor<T>, origin: OriginFor<T>,
......
...@@ -69,7 +69,6 @@ impl<'de> serde::Deserialize<'de> for IdtyName { ...@@ -69,7 +69,6 @@ impl<'de> serde::Deserialize<'de> for IdtyName {
pub enum IdtyStatus { pub enum IdtyStatus {
Created, Created,
ConfirmedByOwner, ConfirmedByOwner,
Disabled,
Validated, Validated,
} }
impl Default for IdtyStatus { impl Default for IdtyStatus {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment