Skip to content
Snippets Groups Projects

fix(wot): Identity should be removed after the consumers of the identity & membership revocation should not trigger identity removal

Merged Éloïs requested to merge elois-fix-57 into release/runtime-100
Files
4
@@ -220,12 +220,25 @@ where
@@ -220,12 +220,25 @@ where
WotDiffs::<T, I>::append(WotDiff::AddNode(*idty_index));
WotDiffs::<T, I>::append(WotDiff::AddNode(*idty_index));
}
}
}
}
sp_membership::Event::<IdtyIndex, MetaData>::MembershipExpired(idty_index)
// Membership expiration cases:
| sp_membership::Event::<IdtyIndex, MetaData>::MembershipRevoked(idty_index) => {
// Triggered by the membership pallet: we should remove the identity only for the main
Self::dispath_idty_call(pallet_identity::Call::remove_identity {
// wot
idty_index: *idty_index,
sp_membership::Event::<IdtyIndex, MetaData>::MembershipExpired(idty_index) => {
idty_name: None,
if !T::IsSubWot::get() {
});
Self::dispath_idty_call(pallet_identity::Call::remove_identity {
 
idty_index: *idty_index,
 
idty_name: None,
 
});
 
WotDiffs::<T, I>::append(WotDiff::DisableNode(*idty_index));
 
}
 
}
 
// Membership revocation cases:
 
// - Triggered by identity removal: the identity underlying will by removed by the
 
// caller.
 
// - Triggered by the membership pallet: it's ondly possible for the sub-wot, so we
 
// should not remove the underlying identity
 
// So, in any case, we must do nothing
 
sp_membership::Event::<IdtyIndex, MetaData>::MembershipRevoked(idty_index) => {
if !T::IsSubWot::get() {
if !T::IsSubWot::get() {
WotDiffs::<T, I>::append(WotDiff::DisableNode(*idty_index));
WotDiffs::<T, I>::append(WotDiff::DisableNode(*idty_index));
}
}
@@ -339,14 +352,10 @@ impl<T: Config<I>, I: 'static> pallet_certification::traits::OnRemovedCert<IdtyI
@@ -339,14 +352,10 @@ impl<T: Config<I>, I: 'static> pallet_certification::traits::OnRemovedCert<IdtyI
&& pallet_membership::Pallet::<T, I>::is_member(&receiver)
&& pallet_membership::Pallet::<T, I>::is_member(&receiver)
{
{
// Revoke receiver membership and disable their identity
// Revoke receiver membership and disable their identity
if let Err(e) = pallet_membership::Pallet::<T, I>::revoke_membership(
Self::dispath_idty_call(pallet_identity::Call::remove_identity {
RawOrigin::Root.into(),
idty_index: receiver,
Some(receiver),
idty_name: None,
) {
});
sp_std::if_std! {
println!("fail to revoke membership: {:?}", e)
}
}
}
}
if !T::IsSubWot::get() {
if !T::IsSubWot::get() {
WotDiffs::<T, I>::append(WotDiff::DelLink(issuer, receiver));
WotDiffs::<T, I>::append(WotDiff::DelLink(issuer, receiver));
Loading