pallet-sudo: Accept Root origin as valid sudo (#2783)

This changes `pallet-sudo` to also accept `Root` origin for
`ensure_sudo`. This can be useful for parachains who allow the relay
chain to have superuser rights to setup the sudo pallet for example.
This commit is contained in:
Bastian Köcher
2023-12-22 09:58:32 +01:00
committed by GitHub
parent 46dd4b8f53
commit 96bec7a7ab
3 changed files with 32 additions and 4 deletions
+8 -4
View File
@@ -349,12 +349,16 @@ pub mod pallet {
impl<T: Config> Pallet<T> {
/// Ensure that the caller is the sudo key.
pub(crate) fn ensure_sudo(origin: OriginFor<T>) -> DispatchResult {
let sender = ensure_signed(origin)?;
let sender = ensure_signed_or_root(origin)?;
if Self::key().map_or(false, |k| k == sender) {
Ok(())
if let Some(sender) = sender {
if Self::key().map_or(false, |k| k == sender) {
Ok(())
} else {
Err(Error::<T>::RequireSudo.into())
}
} else {
Err(Error::<T>::RequireSudo.into())
Ok(())
}
}
}