Skip to content
Snippets Groups Projects

feat(identity): explicit revocation

Merged Pascal Engélibert requested to merge idty_revoke into master
Files
2
@@ -566,6 +566,54 @@ pub mod pallet {
@@ -566,6 +566,54 @@ pub mod pallet {
}
}
}
}
#[pallet::weight(0)]
#[pallet::weight(0)]
 
pub fn del_all_rights(
 
origin: OriginFor<T>,
 
idty_index: T::IdtyIndex,
 
) -> DispatchResultWithPostInfo {
 
T::DelRightOrigin::ensure_origin(origin)?;
 
 
if let Ok(mut idty_value) = <Identities<T>>::try_get(idty_index) {
 
if idty_value.status != IdtyStatus::Validated {
 
return Err(Error::<T>::IdtyNotValidated.into());
 
}
 
 
for (right, subkey_opt) in idty_value.rights.drain(..) {
 
let name = idty_value.name.clone();
 
 
let old_key_opt = if let Some(ref subkey) = subkey_opt {
 
Some(subkey.clone())
 
} else if right.allow_owner_key() {
 
Some(idty_value.owner_key.clone())
 
} else {
 
None
 
};
 
 
Self::deposit_event(Event::<T>::IdtyLostRight(name, right));
 
if old_key_opt.is_some() {
 
T::OnRightKeyChange::on_right_key_change(
 
idty_index,
 
right,
 
old_key_opt,
 
None,
 
);
 
}
 
}
 
 
let block_number = frame_system::pallet::Pallet::<T>::block_number();
 
let removable_on = block_number + T::MaxNoRightPeriod::get();
 
idty_value.removable_on = removable_on;
 
<IdentitiesRemovableOn<T>>::append(
 
removable_on,
 
(idty_index, IdtyStatus::Validated),
 
);
 
<Identities<T>>::insert(idty_index, idty_value);
 
 
Ok(().into())
 
} else {
 
Err(Error::<T>::IdtyNotFound.into())
 
}
 
}
 
#[pallet::weight(0)]
pub fn set_right_subkey(
pub fn set_right_subkey(
origin: OriginFor<T>,
origin: OriginFor<T>,
idty_index: T::IdtyIndex,
idty_index: T::IdtyIndex,
Loading