EnsureOrigin is a frame abstraction - it should be in frame_support (#5521)

* EnsureOrigin is a frame abstraction - it should be in frame_support

* Fixes
This commit is contained in:
Gavin Wood
2020-04-04 12:58:05 +02:00
committed by GitHub
parent f0375a858f
commit 7c0fa83720
14 changed files with 48 additions and 45 deletions
+2 -2
View File
@@ -39,11 +39,11 @@
use sp_std::{prelude::*, result}; use sp_std::{prelude::*, result};
use sp_core::u32_trait::Value as U32; use sp_core::u32_trait::Value as U32;
use sp_runtime::RuntimeDebug; use sp_runtime::RuntimeDebug;
use sp_runtime::traits::{Hash, EnsureOrigin}; use sp_runtime::traits::Hash;
use frame_support::weights::SimpleDispatchInfo; use frame_support::weights::SimpleDispatchInfo;
use frame_support::{ use frame_support::{
dispatch::{Dispatchable, Parameter}, codec::{Encode, Decode}, dispatch::{Dispatchable, Parameter}, codec::{Encode, Decode},
traits::{Get, ChangeMembers, InitializeMembers}, decl_module, decl_event, traits::{Get, ChangeMembers, InitializeMembers, EnsureOrigin}, decl_module, decl_event,
decl_storage, decl_error, ensure, decl_storage, decl_error, ensure,
}; };
use frame_system::{self as system, ensure_signed, ensure_root}; use frame_system::{self as system, ensure_signed, ensure_root};
@@ -19,9 +19,9 @@
use super::*; use super::*;
use frame_benchmarking::{benchmarks, account}; use frame_benchmarking::{benchmarks, account};
use frame_support::traits::{Currency, Get}; use frame_support::traits::{Currency, Get, EnsureOrigin};
use frame_system::{RawOrigin, Module as System, self}; use frame_system::{RawOrigin, Module as System, self};
use sp_runtime::traits::{Bounded, EnsureOrigin, One}; use sp_runtime::traits::{Bounded, One};
use crate::Module as Democracy; use crate::Module as Democracy;
+2 -2
View File
@@ -166,7 +166,7 @@
use sp_std::prelude::*; use sp_std::prelude::*;
use sp_runtime::{ use sp_runtime::{
DispatchResult, DispatchError, RuntimeDebug, DispatchResult, DispatchError, RuntimeDebug,
traits::{Zero, EnsureOrigin, Hash, Dispatchable, Saturating}, traits::{Zero, Hash, Dispatchable, Saturating},
}; };
use codec::{Ref, Encode, Decode}; use codec::{Ref, Encode, Decode};
use frame_support::{ use frame_support::{
@@ -174,7 +174,7 @@ use frame_support::{
weights::{SimpleDispatchInfo, Weight, WeighData}, weights::{SimpleDispatchInfo, Weight, WeighData},
traits::{ traits::{
Currency, ReservableCurrency, LockableCurrency, WithdrawReason, LockIdentifier, Get, Currency, ReservableCurrency, LockableCurrency, WithdrawReason, LockIdentifier, Get,
OnUnbalanced, BalanceStatus, schedule::Named as ScheduleNamed OnUnbalanced, BalanceStatus, schedule::Named as ScheduleNamed, EnsureOrigin
} }
}; };
use frame_system::{self as system, ensure_signed, ensure_root}; use frame_system::{self as system, ensure_signed, ensure_root};
+2 -2
View File
@@ -70,10 +70,10 @@ use sp_std::{fmt::Debug, ops::Add, iter::once};
use enumflags2::BitFlags; use enumflags2::BitFlags;
use codec::{Encode, Decode}; use codec::{Encode, Decode};
use sp_runtime::{DispatchResult, RuntimeDebug}; use sp_runtime::{DispatchResult, RuntimeDebug};
use sp_runtime::traits::{StaticLookup, EnsureOrigin, Zero, AppendZerosInput}; use sp_runtime::traits::{StaticLookup, Zero, AppendZerosInput};
use frame_support::{ use frame_support::{
decl_module, decl_event, decl_storage, ensure, decl_error, decl_module, decl_event, decl_storage, ensure, decl_error,
traits::{Currency, ReservableCurrency, OnUnbalanced, Get, BalanceStatus}, traits::{Currency, ReservableCurrency, OnUnbalanced, Get, BalanceStatus, EnsureOrigin},
weights::SimpleDispatchInfo, weights::SimpleDispatchInfo,
}; };
use frame_system::{self as system, ensure_signed, ensure_root}; use frame_system::{self as system, ensure_signed, ensure_root};
+1 -2
View File
@@ -25,11 +25,10 @@
use sp_std::prelude::*; use sp_std::prelude::*;
use frame_support::{ use frame_support::{
decl_module, decl_storage, decl_event, decl_error, decl_module, decl_storage, decl_event, decl_error,
traits::{ChangeMembers, InitializeMembers}, traits::{ChangeMembers, InitializeMembers, EnsureOrigin},
weights::SimpleDispatchInfo, weights::SimpleDispatchInfo,
}; };
use frame_system::{self as system, ensure_root, ensure_signed}; use frame_system::{self as system, ensure_root, ensure_signed};
use sp_runtime::traits::EnsureOrigin;
pub trait Trait<I=DefaultInstance>: frame_system::Trait { pub trait Trait<I=DefaultInstance>: frame_system::Trait {
/// The overarching event type. /// The overarching event type.
+2 -2
View File
@@ -40,11 +40,11 @@
use sp_std::prelude::*; use sp_std::prelude::*;
use sp_runtime::{ use sp_runtime::{
traits::{StaticLookup, EnsureOrigin, Zero} traits::{StaticLookup, Zero}
}; };
use frame_support::{ use frame_support::{
decl_module, decl_event, decl_storage, ensure, decl_error, decl_module, decl_event, decl_storage, ensure, decl_error,
traits::{Currency, ReservableCurrency, OnUnbalanced, Get}, traits::{Currency, EnsureOrigin, ReservableCurrency, OnUnbalanced, Get},
weights::SimpleDispatchInfo, weights::SimpleDispatchInfo,
}; };
use frame_system::{self as system, ensure_signed, ensure_root}; use frame_system::{self as system, ensure_signed, ensure_root};
+2 -2
View File
@@ -96,12 +96,12 @@ use sp_std::{
}; };
use frame_support::{ use frame_support::{
decl_module, decl_storage, decl_event, ensure, decl_error, decl_module, decl_storage, decl_event, ensure, decl_error,
traits::{ChangeMembers, InitializeMembers, Currency, Get, ReservableCurrency}, traits::{EnsureOrigin, ChangeMembers, InitializeMembers, Currency, Get, ReservableCurrency},
weights::{Weight, SimpleDispatchInfo, WeighData}, weights::{Weight, SimpleDispatchInfo, WeighData},
}; };
use frame_system::{self as system, ensure_root, ensure_signed}; use frame_system::{self as system, ensure_root, ensure_signed};
use sp_runtime::{ use sp_runtime::{
traits::{EnsureOrigin, AtLeast32Bit, MaybeSerializeDeserialize, Zero, StaticLookup}, traits::{AtLeast32Bit, MaybeSerializeDeserialize, Zero, StaticLookup},
}; };
type BalanceOf<T, I> = <<T as Trait<I>>::Currency as Currency<<T as frame_system::Trait>::AccountId>>::Balance; type BalanceOf<T, I> = <<T as Trait<I>>::Currency as Currency<<T as frame_system::Trait>::AccountId>>::Balance;
+2 -2
View File
@@ -256,14 +256,14 @@ use codec::{Encode, Decode};
use sp_runtime::{Percent, ModuleId, RuntimeDebug, use sp_runtime::{Percent, ModuleId, RuntimeDebug,
traits::{ traits::{
StaticLookup, AccountIdConversion, Saturating, Zero, IntegerSquareRoot, Hash, StaticLookup, AccountIdConversion, Saturating, Zero, IntegerSquareRoot, Hash,
TrailingZeroInput, CheckedSub, EnsureOrigin TrailingZeroInput, CheckedSub
} }
}; };
use frame_support::{decl_error, decl_module, decl_storage, decl_event, ensure, dispatch::DispatchResult}; use frame_support::{decl_error, decl_module, decl_storage, decl_event, ensure, dispatch::DispatchResult};
use frame_support::weights::{SimpleDispatchInfo, Weight, WeighData}; use frame_support::weights::{SimpleDispatchInfo, Weight, WeighData};
use frame_support::traits::{ use frame_support::traits::{
Currency, ReservableCurrency, Randomness, Get, ChangeMembers, BalanceStatus, Currency, ReservableCurrency, Randomness, Get, ChangeMembers, BalanceStatus,
ExistenceRequirement::AllowDeath ExistenceRequirement::AllowDeath, EnsureOrigin
}; };
use frame_system::{self as system, ensure_signed, ensure_root}; use frame_system::{self as system, ensure_signed, ensure_root};
+2 -2
View File
@@ -278,7 +278,7 @@ use frame_support::{
dispatch::{IsSubType, DispatchResult}, dispatch::{IsSubType, DispatchResult},
traits::{ traits::{
Currency, LockIdentifier, LockableCurrency, WithdrawReasons, OnUnbalanced, Imbalance, Get, Currency, LockIdentifier, LockableCurrency, WithdrawReasons, OnUnbalanced, Imbalance, Get,
UnixTime, EstimateNextNewSession, UnixTime, EstimateNextNewSession, EnsureOrigin,
} }
}; };
use pallet_session::historical; use pallet_session::historical;
@@ -287,7 +287,7 @@ use sp_runtime::{
curve::PiecewiseLinear, curve::PiecewiseLinear,
traits::{ traits::{
Convert, Zero, StaticLookup, CheckedSub, Saturating, SaturatedConversion, AtLeast32Bit, Convert, Zero, StaticLookup, CheckedSub, Saturating, SaturatedConversion, AtLeast32Bit,
EnsureOrigin, SignedExtension, SignedExtension,
}, },
transaction_validity::{ transaction_validity::{
TransactionValidityError, TransactionValidity, ValidTransaction, InvalidTransaction, TransactionValidityError, TransactionValidity, ValidTransaction, InvalidTransaction,
+22 -3
View File
@@ -22,9 +22,10 @@ use sp_std::{prelude::*, result, marker::PhantomData, ops::Div, fmt::Debug};
use codec::{FullCodec, Codec, Encode, Decode, EncodeLike}; use codec::{FullCodec, Codec, Encode, Decode, EncodeLike};
use sp_core::u32_trait::Value as U32; use sp_core::u32_trait::Value as U32;
use sp_runtime::{ use sp_runtime::{
RuntimeDebug, RuntimeDebug, ConsensusEngineId, DispatchResult, DispatchError, traits::{
ConsensusEngineId, DispatchResult, DispatchError, MaybeSerializeDeserialize, AtLeast32Bit, Saturating, TrailingZeroInput, Bounded, Zero,
traits::{MaybeSerializeDeserialize, AtLeast32Bit, Saturating, TrailingZeroInput, Bounded, Zero}, BadOrigin
},
}; };
use crate::dispatch::Parameter; use crate::dispatch::Parameter;
use crate::storage::StorageMap; use crate::storage::StorageMap;
@@ -1237,6 +1238,24 @@ pub mod schedule {
} }
} }
/// Some sort of check on the origin is performed by this object.
pub trait EnsureOrigin<OuterOrigin> {
/// A return type.
type Success;
/// Perform the origin check.
fn ensure_origin(o: OuterOrigin) -> result::Result<Self::Success, BadOrigin> {
Self::try_origin(o).map_err(|_| BadOrigin)
}
/// Perform the origin check.
fn try_origin(o: OuterOrigin) -> result::Result<Self::Success, OuterOrigin>;
/// Returns an outer origin capable of passing `try_origin` check.
///
/// ** Should be used for benchmarking only!!! **
#[cfg(feature = "runtime-benchmarks")]
fn successful_origin() -> OuterOrigin;
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
+2 -2
View File
@@ -107,7 +107,7 @@ use sp_runtime::{
}, },
traits::{ traits::{
self, CheckEqual, AtLeast32Bit, Zero, SignedExtension, Lookup, LookupError, self, CheckEqual, AtLeast32Bit, Zero, SignedExtension, Lookup, LookupError,
SimpleBitOps, Hash, Member, MaybeDisplay, EnsureOrigin, BadOrigin, SaturatedConversion, SimpleBitOps, Hash, Member, MaybeDisplay, BadOrigin, SaturatedConversion,
MaybeSerialize, MaybeSerializeDeserialize, MaybeMallocSizeOf, StaticLookup, One, Bounded, MaybeSerialize, MaybeSerializeDeserialize, MaybeMallocSizeOf, StaticLookup, One, Bounded,
}, },
}; };
@@ -117,7 +117,7 @@ use frame_support::{
decl_module, decl_event, decl_storage, decl_error, storage, Parameter, ensure, debug, decl_module, decl_event, decl_storage, decl_error, storage, Parameter, ensure, debug,
traits::{ traits::{
Contains, Get, ModuleToIndex, OnNewAccount, OnKilledAccount, IsDeadAccount, Happened, Contains, Get, ModuleToIndex, OnNewAccount, OnKilledAccount, IsDeadAccount, Happened,
StoredMap, StoredMap, EnsureOrigin,
}, },
weights::{Weight, DispatchInfo, DispatchClass, SimpleDispatchInfo, FunctionOf}, weights::{Weight, DispatchInfo, DispatchClass, SimpleDispatchInfo, FunctionOf},
}; };
+3 -1
View File
@@ -95,8 +95,10 @@ mod benchmarking;
use sp_std::{result, cmp}; use sp_std::{result, cmp};
use sp_inherents::{ProvideInherent, InherentData, InherentIdentifier}; use sp_inherents::{ProvideInherent, InherentData, InherentIdentifier};
#[cfg(feature = "std")]
use frame_support::debug;
use frame_support::{ use frame_support::{
Parameter, decl_storage, decl_module, debug, Parameter, decl_storage, decl_module,
traits::{Time, UnixTime, Get}, traits::{Time, UnixTime, Get},
weights::SimpleDispatchInfo, weights::SimpleDispatchInfo,
}; };
+3 -2
View File
@@ -96,9 +96,10 @@ use frame_support::traits::{
ReservableCurrency, WithdrawReason ReservableCurrency, WithdrawReason
}; };
use sp_runtime::{Permill, ModuleId, Percent, RuntimeDebug, traits::{ use sp_runtime::{Permill, ModuleId, Percent, RuntimeDebug, traits::{
Zero, EnsureOrigin, StaticLookup, AccountIdConversion, Saturating, Hash, BadOrigin Zero, StaticLookup, AccountIdConversion, Saturating, Hash, BadOrigin
}}; }};
use frame_support::{weights::{Weight, WeighData, SimpleDispatchInfo}, traits::Contains}; use frame_support::weights::{Weight, WeighData, SimpleDispatchInfo};
use frame_support::traits::{Contains, EnsureOrigin};
use codec::{Encode, Decode}; use codec::{Encode, Decode};
use frame_system::{self as system, ensure_signed, ensure_root}; use frame_system::{self as system, ensure_signed, ensure_root};
+1 -19
View File
@@ -17,7 +17,7 @@
//! Primitives for the runtime modules. //! Primitives for the runtime modules.
use sp_std::prelude::*; use sp_std::prelude::*;
use sp_std::{self, result, marker::PhantomData, convert::{TryFrom, TryInto}, fmt::Debug}; use sp_std::{self, marker::PhantomData, convert::{TryFrom, TryInto}, fmt::Debug};
use sp_io; use sp_io;
#[cfg(feature = "std")] #[cfg(feature = "std")]
use std::fmt::Display; use std::fmt::Display;
@@ -147,24 +147,6 @@ impl From<BadOrigin> for &'static str {
} }
} }
/// Some sort of check on the origin is performed by this object.
pub trait EnsureOrigin<OuterOrigin> {
/// A return type.
type Success;
/// Perform the origin check.
fn ensure_origin(o: OuterOrigin) -> result::Result<Self::Success, BadOrigin> {
Self::try_origin(o).map_err(|_| BadOrigin)
}
/// Perform the origin check.
fn try_origin(o: OuterOrigin) -> result::Result<Self::Success, OuterOrigin>;
/// Returns an outer origin capable of passing `try_origin` check.
///
/// ** Should be used for benchmarking only!!! **
#[cfg(feature = "runtime-benchmarks")]
fn successful_origin() -> OuterOrigin;
}
/// An error that indicates that a lookup failed. /// An error that indicates that a lookup failed.
#[derive(Encode, Decode, RuntimeDebug)] #[derive(Encode, Decode, RuntimeDebug)]
pub struct LookupError; pub struct LookupError;