INNER CODE UNIT · Rust
ensure_governance_or_caller
AstarNetwork/Astar · pallets/collator-selection/src/lib.rs:686
fn ensure_governance_or_caller(
origin: T::RuntimeOrigin,
who: &T::AccountId,
) -> DispatchResult {
if T::GovernanceOrigin::ensure_origin(origin.clone()).is_err() {
let caller = ensure_signed(origin.clone())?;
ensure!(&caller == who, BadOrigin);
}
Ok(())
}
/// Checks if the account has a registered validator key.
fn is_validator_registered(who: &T::AccountId) -> DispatchResult {
let validator_key = T::ValidatorIdOf::convert(who.clone())
.ok_or(Error::<T>::NoAssociatedValidatorId)?;
ensure!(
T::ValidatorRegistration::is_registered(&validator_key),
Error::<T>::ValidatorNotRegistered