mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 02:51:08 +00:00
"OR gate" for EnsureOrigin (#6237)
* 'OR gate' for EnsureOrigin. * Formatting. * More formatting. * Add docstring; Update 'Success' type. * Bump runtime impl_version. * Fix successful_origin. * Add either into std feature list. * Update docs.
This commit is contained in:
@@ -28,7 +28,7 @@ use frame_support::{
|
||||
decl_module, decl_storage, decl_event, decl_error,
|
||||
traits::{ChangeMembers, InitializeMembers, EnsureOrigin},
|
||||
};
|
||||
use frame_system::{self as system, ensure_root, ensure_signed};
|
||||
use frame_system::{self as system, ensure_signed};
|
||||
|
||||
pub trait Trait<I=DefaultInstance>: frame_system::Trait {
|
||||
/// The overarching event type.
|
||||
@@ -120,9 +120,7 @@ decl_module! {
|
||||
/// May only be called from `AddOrigin` or root.
|
||||
#[weight = 50_000_000]
|
||||
pub fn add_member(origin, who: T::AccountId) {
|
||||
T::AddOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)?;
|
||||
T::AddOrigin::ensure_origin(origin)?;
|
||||
|
||||
let mut members = <Members<T, I>>::get();
|
||||
let location = members.binary_search(&who).err().ok_or(Error::<T, I>::AlreadyMember)?;
|
||||
@@ -139,9 +137,7 @@ decl_module! {
|
||||
/// May only be called from `RemoveOrigin` or root.
|
||||
#[weight = 50_000_000]
|
||||
pub fn remove_member(origin, who: T::AccountId) {
|
||||
T::RemoveOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)?;
|
||||
T::RemoveOrigin::ensure_origin(origin)?;
|
||||
|
||||
let mut members = <Members<T, I>>::get();
|
||||
let location = members.binary_search(&who).ok().ok_or(Error::<T, I>::NotMember)?;
|
||||
@@ -161,9 +157,7 @@ decl_module! {
|
||||
/// Prime membership is *not* passed from `remove` to `add`, if extant.
|
||||
#[weight = 50_000_000]
|
||||
pub fn swap_member(origin, remove: T::AccountId, add: T::AccountId) {
|
||||
T::SwapOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)?;
|
||||
T::SwapOrigin::ensure_origin(origin)?;
|
||||
|
||||
if remove == add { return Ok(()) }
|
||||
|
||||
@@ -190,9 +184,7 @@ decl_module! {
|
||||
/// May only be called from `ResetOrigin` or root.
|
||||
#[weight = 50_000_000]
|
||||
pub fn reset_members(origin, members: Vec<T::AccountId>) {
|
||||
T::ResetOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)?;
|
||||
T::ResetOrigin::ensure_origin(origin)?;
|
||||
|
||||
let mut members = members;
|
||||
members.sort();
|
||||
@@ -241,9 +233,7 @@ decl_module! {
|
||||
/// Set the prime member. Must be a current member.
|
||||
#[weight = 50_000_000]
|
||||
pub fn set_prime(origin, who: T::AccountId) {
|
||||
T::PrimeOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)?;
|
||||
T::PrimeOrigin::ensure_origin(origin)?;
|
||||
Self::members().binary_search(&who).ok().ok_or(Error::<T, I>::NotMember)?;
|
||||
Prime::<T, I>::put(&who);
|
||||
T::MembershipChanged::set_prime(Some(who));
|
||||
@@ -252,9 +242,7 @@ decl_module! {
|
||||
/// Remove the prime member if it exists.
|
||||
#[weight = 50_000_000]
|
||||
pub fn clear_prime(origin) {
|
||||
T::PrimeOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)?;
|
||||
T::PrimeOrigin::ensure_origin(origin)?;
|
||||
Prime::<T, I>::kill();
|
||||
T::MembershipChanged::set_prime(None);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user