diff --git a/pallets/identity/src/lib.rs b/pallets/identity/src/lib.rs index 2fa4febc8711cc15f61dfa22b53be1bc870d40be..567ebc9dfef3b06123aeb25e79dd2c52b8d286da 100644 --- a/pallets/identity/src/lib.rs +++ b/pallets/identity/src/lib.rs @@ -405,6 +405,7 @@ pub mod pallet { pub fn validate_identity( origin: OriginFor<T>, idty_index: T::IdtyIndex, + idty_rights: Vec<T::IdtyRight>, ) -> DispatchResultWithPostInfo { T::IdtyValidationOrigin::ensure_origin(origin.clone())?; @@ -414,51 +415,25 @@ pub mod pallet { IdtyStatus::ConfirmedByOwner => { let _post_info = T::Membership::claim_membership_(origin, idty_index)?; - let block_number = frame_system::pallet::Pallet::<T>::block_number(); - let removable_on = block_number + T::MaxNoRightPeriod::get(); - idty_value.removable_on = removable_on; - idty_value.status = IdtyStatus::Validated; - let name = idty_value.name.clone(); - - <Identities<T>>::insert(idty_index, idty_value); - <IdentitiesRemovableOn<T>>::append( - removable_on, - (idty_index, IdtyStatus::Validated), - ); - Self::deposit_event(Event::IdtyValidated(name)); - T::OnIdtyChange::on_idty_change(idty_index, IdtyEvent::Validated); - Ok(().into()) - } - IdtyStatus::Validated | IdtyStatus::Expired => { - Err(Error::<T>::IdtyAlreadyValidated.into()) - } - } - } else { - Err(Error::<T>::IdtyNotFound.into()) - } - } - #[pallet::weight(0)] - pub fn validate_identity_and_add_rights( - origin: OriginFor<T>, - idty_index: T::IdtyIndex, - rights: Vec<T::IdtyRight>, - ) -> DispatchResultWithPostInfo { - T::IdtyValidationOrigin::ensure_origin(origin)?; - - if let Ok(mut idty_value) = <Identities<T>>::try_get(idty_index) { - match idty_value.status { - IdtyStatus::Created => Err(Error::<T>::IdtyNotConfirmedByOwner.into()), - IdtyStatus::ConfirmedByOwner => { idty_value.removable_on = T::BlockNumber::zero(); - idty_value.rights = rights.iter().map(|right| (*right, None)).collect(); + idty_value.rights = + idty_rights.iter().map(|right| (*right, None)).collect(); idty_value.status = IdtyStatus::Validated; let name = idty_value.name.clone(); let owner_key = idty_value.owner_key.clone(); <Identities<T>>::insert(idty_index, idty_value); + if idty_rights.is_empty() { + let block_number = frame_system::pallet::Pallet::<T>::block_number(); + let removable_on = block_number + T::MaxNoRightPeriod::get(); + <IdentitiesRemovableOn<T>>::append( + removable_on, + (idty_index, IdtyStatus::Validated), + ); + } Self::deposit_event(Event::IdtyValidated(name.clone())); T::OnIdtyChange::on_idty_change(idty_index, IdtyEvent::Validated); - for right in rights { + for right in idty_rights { Self::deposit_event(Event::IdtyAcquireRight(name.clone(), right)); if right.allow_owner_key() { T::OnRightKeyChange::on_right_key_change( diff --git a/runtime/common/src/handlers.rs b/runtime/common/src/handlers.rs index ce6f6753d4d9216c3463567f772f6d29c6444227..54406b331676a954c97451b0bb7afb8d1c049e09 100644 --- a/runtime/common/src/handlers.rs +++ b/runtime/common/src/handlers.rs @@ -106,7 +106,7 @@ impl< let total_weight = 0; if receiver_received_count == MIN_STRONG_CERT_FOR_UD { // total_weight += Identity::WeightInfo::add_right(); - let _ = <pallet_identity::Pallet<Runtime>>::validate_identity_and_add_rights( + let _ = <pallet_identity::Pallet<Runtime>>::validate_identity( frame_system::Origin::<Runtime>::Root.into(), receiver, sp_std::vec![IdtyRight::Ud],