Browse Source

Remove roles from the membership module

- remove roles from the membership module
- remove roles from the content working group module
- move ActorId from membership to the content working group
- add MemberId to te content working group Lead
- update tests
- delete commented code
Shamil Gadelshin 4 years ago
parent
commit
05de019467

+ 29 - 210
runtime-modules/content-working-group/src/lib.rs

@@ -19,22 +19,15 @@ pub mod genesis;
 #[cfg(feature = "std")]
 use serde::{Deserialize, Serialize};
 
-use codec::{Decode, Encode};
-use membership::role_types;
+use codec::{Codec, Decode, Encode};
 use rstd::borrow::ToOwned;
 use rstd::collections::btree_map::BTreeMap;
 use rstd::collections::btree_set::BTreeSet;
 use rstd::convert::From;
 use rstd::prelude::*;
-use sr_primitives::traits::{One, Zero}; // Member, SimpleArithmetic, MaybeSerialize
+use sr_primitives::traits::{MaybeSerialize, Member, One, SimpleArithmetic, Zero};
 use srml_support::traits::{Currency, ExistenceRequirement, WithdrawReasons};
-use srml_support::{
-    decl_event,
-    decl_module,
-    decl_storage,
-    dispatch, // , StorageMap, , Parameter
-    ensure,
-};
+use srml_support::{decl_event, decl_module, decl_storage, dispatch, ensure, Parameter};
 use system::{self, ensure_root, ensure_signed};
 
 /// DIRTY IMPORT BECAUSE
@@ -55,21 +48,31 @@ pub trait Trait:
 
     /// The event type.
     type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
+
+    type ActorId: Parameter
+        + Member
+        + SimpleArithmetic
+        + Codec
+        + Default
+        + Copy
+        + MaybeSerialize
+        + PartialEq
+        + Ord;
 }
 
-/// Type constraint for identifer used for actors in members module in this runtime.
-pub type ActorIdInMembersModule<T> = <T as membership::Trait>::ActorId;
+/// Type constraint for identifer used for actors.
+pub type ActorId<T> = <T as Trait>::ActorId;
 
 /// Type for identifier for channels.
 /// The ChannelId must be capable of behaving like an actor id for membership module,
 /// since publishers are identified by their channel id.
-pub type ChannelId<T> = ActorIdInMembersModule<T>;
+pub type ChannelId<T> = ActorId<T>;
 
 /// Type identifier for lead role, which must be same as membership actor identifeir
-pub type LeadId<T> = ActorIdInMembersModule<T>;
+pub type LeadId<T> = ActorId<T>;
 
 /// Type identifier for curator role, which must be same as membership actor identifeir
-pub type CuratorId<T> = ActorIdInMembersModule<T>;
+pub type CuratorId<T> = ActorId<T>;
 
 /// Type for the identifer for an opening for a curator.
 pub type CuratorOpeningId<T> = <T as hiring::Trait>::OpeningId;
@@ -273,7 +276,10 @@ impl<BlockNumber> Default for LeadRoleState<BlockNumber> {
 /// hence information about this is missing. Recurring rewards is included, somewhat arbitrarily!
 #[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
 #[derive(Encode, Decode, Default, Debug, Clone, PartialEq)]
-pub struct Lead<AccountId, RewardRelationshipId, BlockNumber> {
+pub struct Lead<AccountId, RewardRelationshipId, BlockNumber, MemberId> {
+    /// Leader member id,
+    pub member_id: MemberId,
+
     /// Account used to authenticate in this role,
     pub role_account: AccountId,
 
@@ -435,9 +441,6 @@ pub struct Curator<
     /// How the curator was inducted into the working group.
     pub induction: CuratorInduction<LeadId, CuratorApplicationId, BlockNumber>,
 
-    /// Whether this curator can unilaterally alter the curation status of a channel.
-    //pub can_update_channel_curation_status: bool,
-
     /// Permissions module principal id
     pub principal_id: PrincipalId,
 }
@@ -771,27 +774,6 @@ impl<LeadId: Default, CuratorId> Default for WorkingGroupUnstaker<LeadId, Curato
     }
 }
 
-/*
-/// ...
-#[derive(Encode, Decode, Debug, Eq, PartialEq, Clone, PartialOrd, Ord)]
-pub struct OpeningHire<CuratorApplicationId, CuratorId, PrincipalId> {
-    curator_application_id: CuratorApplicationId,
-    curator_id: CuratorId,
-    principal_id: PrincipalId
-}
-*/
-
-/*
-pub enum ChannelActor<T: Trait> {
-
-    ///
-    WorkingGroupActor(WorkingGroupActor<T>),
-
-    ///
-    Owner
-}
-*/
-
 // ======================================================================== //
 // Move section below, this out in its own file later                       //
 // ======================================================================== //
@@ -1003,7 +985,7 @@ decl_storage! {
         pub CurrentLeadId get(current_lead_id) : Option<LeadId<T>>;
 
         /// Maps identifier to corresponding lead.
-        pub LeadById get(lead_by_id): linked_map LeadId<T> => Lead<T::AccountId, T::RewardRelationshipId, T::BlockNumber>;
+        pub LeadById get(lead_by_id): linked_map LeadId<T> => Lead<T::AccountId, T::RewardRelationshipId, T::BlockNumber, T::MemberId>;
 
         /// Next identifier for new current lead.
         pub NextLeadId get(next_lead_id): LeadId<T>;
@@ -1151,9 +1133,6 @@ decl_module! {
                 MSG_CHANNEL_CREATION_DISABLED
             );
 
-            // Ensure prospective owner member is currently allowed to become channel owner
-            let (member_in_role, next_channel_id) = Self::ensure_can_register_channel_owner_role_on_member(&owner, None)?;
-
             // Ensure channel handle is acceptable length
             Self::ensure_channel_handle_is_valid(&handle)?;
 
@@ -1174,6 +1153,7 @@ decl_module! {
             //
 
             // Make and add new principal
+            let next_channel_id = NextChannelId::<T>::get();
             let principal_id = Self::add_new_principal(&Principal::ChannelOwner(next_channel_id));
 
             // Construct channel
@@ -1204,14 +1184,8 @@ decl_module! {
 
             // CREDENTIAL STUFF //
 
-            // Dial out to membership module and inform about new role as channe owner.
-            let registered_role = <membership::Module<T>>::register_role_on_member(owner, &member_in_role).is_ok();
-
-            assert!(registered_role);
-
             // Trigger event
             Self::deposit_event(RawEvent::ChannelCreated(next_channel_id));
-
         }
 
         /// An owner transfers channel ownership to a new owner.
@@ -1224,13 +1198,6 @@ decl_module! {
             // Ensure channel owner has signed
             let channel = Self::ensure_channel_owner_signed(origin, &channel_id)?;
 
-            // Ensure prospective new owner can actually become a channel owner (with a new channel id)
-            // We do not pass the existing channel id because it is already owned and the call would
-            // return with Err, since the membership system doesn't allow the same ActorInRole to be assigned
-            // to more than one member, and we don't use the returned actor_in_role because its not
-            // for the channel being transferred.
-            Self::ensure_can_register_channel_owner_role_on_member(&new_owner, None)?;
-
             //
             // == MUTATION SAFE ==
             //
@@ -1245,26 +1212,6 @@ decl_module! {
             // Overwrite entry in ChannelById
             ChannelById::<T>::insert(channel_id, new_channel);
 
-            let role = role_types::ActorInRole::new(
-                role_types::Role::ChannelOwner,
-                channel_id
-            );
-
-            // Remove
-            let unregistered_role = <membership::Module<T>>::unregister_role(
-                role
-            ).is_ok();
-
-            assert!(unregistered_role);
-
-            // Dial out to membership module and inform about new role as channel owner.
-            let registered_role = <membership::Module<T>>::register_role_on_member(
-                new_owner,
-                &role
-            ).is_ok();
-
-            assert!(registered_role);
-
             // Trigger event
             Self::deposit_event(RawEvent::ChannelOwnershipTransferred(channel_id));
         }
@@ -1494,18 +1441,6 @@ decl_module! {
                                             .map(|(successful_curator_application, _, _)| successful_curator_application.application_id)
                                             .collect::<BTreeSet<_>>();
 
-            // Ensure all applications are from members that _still_ can step into the given role
-            let num_successful_applications_that_can_register_as_curator = successful_iter
-                                                                        .clone()
-                                                                        .map(|(successful_curator_application, _, _)| successful_curator_application.member_id)
-                                                                        .filter_map(|successful_member_id| Self::ensure_can_register_curator_role_on_member(&successful_member_id).ok() )
-                                                                        .count();
-
-            ensure!(
-                num_successful_applications_that_can_register_as_curator == num_provided_successful_curator_application_ids,
-                MSG_MEMBER_NO_LONGER_REGISTRABLE_AS_CURATOR
-            );
-
             // NB: Combined ensure check and mutation in hiring module
             ensure_on_wrapped_error!(
                 hiring::Module::<T>::fill_opening(
@@ -1613,14 +1548,6 @@ decl_module! {
                 // Store curator
                 CuratorById::<T>::insert(new_curator_id, curator);
 
-                // Register role on member
-                let registered_role = membership::Module::<T>::register_role_on_member(
-                    successful_curator_application.member_id,
-                    &role_types::ActorInRole::new(role_types::Role::Curator, new_curator_id)
-                ).is_ok();
-
-                assert!(registered_role);
-
                 // Update next curator id
                 NextCuratorId::<T>::mutate(|id| *id += <CuratorId<T> as One>::one());
 
@@ -1632,20 +1559,6 @@ decl_module! {
 
         }
 
-        /*
-        /// ...
-        pub fn update_curator_reward(_origin) {
-
-        }
-        */
-
-        /*
-        /// ...
-        pub fn slash_curator(_origin) {
-
-        }
-        */
-
         pub fn withdraw_curator_application(
             origin,
             curator_application_id: CuratorApplicationId<T>
@@ -1737,9 +1650,6 @@ decl_module! {
             // Ensure curator opening exists
             let (curator_opening, _opening) = Self::ensure_curator_opening_exists(&curator_opening_id)?;
 
-            // Ensure new owner can actually become a curator
-            let (_member_as_curator, _new_curator_id) = Self::ensure_can_register_curator_role_on_member(&member_id)?;
-
             // Ensure that there is sufficient balance to cover stake proposed
             Self::ensure_can_make_stake_imbalance(
                 vec![&opt_role_stake_balance, &opt_application_stake_balance],
@@ -1814,13 +1724,6 @@ decl_module! {
                 membership::Module::<T>::ensure_member_controller_account_signed(origin, &member_id)
             )?;
 
-            // Ensure that member is this curator
-            let actor_in_role = role_types::ActorInRole::new(role_types::Role::Curator, curator_id);
-
-            ensure!(
-                membership::MembershipIdByActorInRole::<T>::get(actor_in_role) == member_id,
-                MSG_CURATOR_NOT_CONTROLLED_BY_MEMBER
-            );
 
             //
             // == MUTATION SAFE ==
@@ -2058,18 +1961,13 @@ impl<T: Trait> Module<T> {
 
         let new_lead_id = <NextLeadId<T>>::get();
 
-        let new_lead_role =
-            role_types::ActorInRole::new(role_types::Role::CuratorLead, new_lead_id);
-
         //
         // == MUTATION SAFE ==
         //
 
-        // Register in role - will fail if member cannot become lead
-        membership::Module::<T>::register_role_on_member(member, &new_lead_role)?;
-
         // Construct lead
         let new_lead = Lead {
+            member_id: member,
             role_account,
             reward_relationship: None,
             inducted: <system::Module<T>>::block_number(),
@@ -2080,7 +1978,7 @@ impl<T: Trait> Module<T> {
         <LeadById<T>>::insert(new_lead_id, new_lead);
 
         // Update current lead
-        <CurrentLeadId<T>>::put(new_lead_id); // Some(new_lead_id)
+        <CurrentLeadId<T>>::put(new_lead_id);
 
         // Update next lead counter
         <NextLeadId<T>>::mutate(|id| *id += <LeadId<T> as One>::one());
@@ -2100,14 +1998,6 @@ impl<T: Trait> Module<T> {
         // == MUTATION SAFE ==
         //
 
-        // Unregister from role in membership model
-        let current_lead_role = role_types::ActorInRole {
-            role: role_types::Role::CuratorLead,
-            actor_id: lead_id,
-        };
-
-        <membership::Module<T>>::unregister_role(current_lead_role)?;
-
         // Update lead stage as exited
         let current_block = <system::Module<T>>::block_number();
 
@@ -2121,7 +2011,7 @@ impl<T: Trait> Module<T> {
         <LeadById<T>>::insert(lead_id, new_lead);
 
         // Update current lead
-        <CurrentLeadId<T>>::take(); // None
+        <CurrentLeadId<T>>::take();
 
         // Trigger event
         Self::deposit_event(RawEvent::LeadUnset(lead_id));
@@ -2150,54 +2040,7 @@ impl<T: Trait> Module<T> {
         Ok(())
     }
 
-    fn ensure_can_register_role_on_member(
-        member_id: &T::MemberId,
-        role: role_types::Role,
-        actor_id: &ActorIdInMembersModule<T>,
-    ) -> Result<membership::ActorInRole<ActorIdInMembersModule<T>>, &'static str> {
-        let new_actor_in_role = role_types::ActorInRole::new(role, *actor_id);
-
-        <membership::Module<T>>::can_register_role_on_member(member_id, &new_actor_in_role)
-            .map(|_| new_actor_in_role)
-    }
-
-    fn ensure_can_register_curator_role_on_member(
-        member_id: &T::MemberId,
-    ) -> Result<
-        (
-            membership::ActorInRole<ActorIdInMembersModule<T>>,
-            CuratorId<T>,
-        ),
-        &'static str,
-    > {
-        let next_id = <NextCuratorId<T>>::get();
-
-        Self::ensure_can_register_role_on_member(member_id, role_types::Role::Curator, &next_id)
-            .map(|curator_in_role| (curator_in_role, next_id))
-    }
-
-    fn ensure_can_register_channel_owner_role_on_member(
-        member_id: &T::MemberId,
-        opt_channel_id: Option<ChannelId<T>>,
-    ) -> Result<
-        (
-            membership::ActorInRole<ActorIdInMembersModule<T>>,
-            ChannelId<T>,
-        ),
-        &'static str,
-    > {
-        let next_channel_id = opt_channel_id.unwrap_or_else(NextChannelId::<T>::get);
-
-        Self::ensure_can_register_role_on_member(
-            member_id,
-            role_types::Role::ChannelOwner,
-            &next_channel_id,
-        )
-        .map(|member_in_role| (member_in_role, next_channel_id))
-    }
-
     // TODO: convert InputConstraint ensurer routines into macroes
-
     fn ensure_channel_handle_is_valid(handle: &[u8]) -> dispatch::Result {
         ChannelHandleConstraint::get().ensure_valid(
             handle.len(),
@@ -2302,7 +2145,7 @@ impl<T: Trait> Module<T> {
     pub fn ensure_lead_is_set() -> Result<
         (
             LeadId<T>,
-            Lead<T::AccountId, T::RewardRelationshipId, T::BlockNumber>,
+            Lead<T::AccountId, T::RewardRelationshipId, T::BlockNumber, T::MemberId>,
         ),
         &'static str,
     > {
@@ -2331,7 +2174,7 @@ impl<T: Trait> Module<T> {
     ) -> Result<
         (
             LeadId<T>,
-            Lead<T::AccountId, T::RewardRelationshipId, T::BlockNumber>,
+            Lead<T::AccountId, T::RewardRelationshipId, T::BlockNumber, T::MemberId>,
         ),
         &'static str,
     > {
@@ -2346,25 +2189,7 @@ impl<T: Trait> Module<T> {
 
         Ok((lead_id, lead))
     }
-    /*
-        fn ensure_activate_opening_at_valid(activate_at: &hiring::ActivateOpeningAt<T::BlockNumber>) -> Result<T::BlockNumber, &'static str>{
-
-            let current_block = <system::Module<T>>::block_number();
-
-            let starting_block =
-                match activate_at {
-                    hiring::ActivateOpeningAt::CurrentBlock => current_block,
-                    hiring::ActivateOpeningAt::ExactBlock(block_number) => block_number.clone()
-            };
-
-            ensure!(
-                starting_block >= current_block,
-                MSG_OPENING_CANNOT_ACTIVATE_IN_THE_PAST
-            );
 
-            Ok(starting_block)
-        }
-    */
     fn ensure_curator_opening_exists(
         curator_opening_id: &CuratorOpeningId<T>,
     ) -> Result<
@@ -2529,8 +2354,6 @@ impl<T: Trait> Module<T> {
         ),
         &'static str,
     > {
-        //Result<(hiring::Application<<T as hiring::Trait>::OpeningId, T::BlockNumber, <T as stake::Trait>::StakeId>, CuratorOpening<T::OpeningId, T::BlockNumber, BalanceOf<T>, CuratorApplicationId<T>> ,hiring::Opening<BalanceOf<T>, T::BlockNumber, <T as hiring::Trait>::ApplicationId>), &'static str> {
-
         ensure!(
             CuratorApplicationById::<T>::exists(curator_application_id),
             MSG_CURATOR_APPLICATION_DOES_NOT_EXIST
@@ -2538,12 +2361,8 @@ impl<T: Trait> Module<T> {
 
         let curator_application = CuratorApplicationById::<T>::get(curator_application_id);
 
-        //let application = hiring::ApplicationById::<T>::get(curator_application.application_id);
-
         let curator_opening = CuratorOpeningById::<T>::get(curator_application.curator_opening_id);
 
-        //let opening = hiring::OpeningById::<T>::get(curator_opening.opening_id);
-
         Ok((
             curator_application,
             *curator_application_id,

+ 2 - 24
runtime-modules/content-working-group/src/mock.rs

@@ -1,6 +1,6 @@
 #![cfg(test)]
 
-pub use crate::*; // {self, Module, Trait, GenesisConfig};
+pub use crate::*;
 pub use srml_support::traits::Currency;
 pub use system;
 
@@ -124,16 +124,6 @@ impl balances::Trait for Test {
     type CreationFee = CreationFee;
 }
 
-/*
-pub trait PrincipalIdChecker<T: Trait> {
-    fn account_can_act_as_principal(account: &T::AccountId, group: T::PrincipalId) -> bool;
-}
-
-pub trait CreateClassPermissionsChecker<T: Trait> {
-    fn account_can_create_class_permissions(account: &T::AccountId) -> bool;
-}
-*/
-
 impl GovernanceCurrency for Test {
     type Currency = Balances;
 }
@@ -188,12 +178,12 @@ impl membership::Trait for Test {
     type MemberId = TestMemberId;
     type PaidTermId = u64;
     type SubscriptionId = u64;
-    type ActorId = u64;
     type InitialMembersBalance = InitialMembersBalance;
 }
 
 impl Trait for Test {
     type Event = TestEvent;
+    type ActorId = u64;
 }
 
 pub struct TestExternalitiesBuilder<T: Trait> {
@@ -213,17 +203,6 @@ impl<T: Trait> Default for TestExternalitiesBuilder<T> {
 }
 
 impl<T: Trait> TestExternalitiesBuilder<T> {
-    /*
-    pub fn set_system_config(mut self, system_config: system::GenesisConfig) -> Self {
-        self.system_config = Some(system_config);
-        self
-    }
-    pub fn set_membership_config(mut self, membership_config: membership::GenesisConfig<T>) -> Self {
-        self.membership_config = Some(membership_config);
-        self
-    }
-    */
-
     pub fn with_content_wg_config(mut self, conteng_wg_config: GenesisConfig<T>) -> Self {
         self.content_wg_config = Some(conteng_wg_config);
         self
@@ -244,7 +223,6 @@ impl<T: Trait> TestExternalitiesBuilder<T> {
             .unwrap();
 
         // Add content wg
-
         if self.content_wg_config.is_none() {
             genesis::GenesisConfigBuilder::<Test>::default()
                 .build()

+ 1 - 0
runtime-modules/content-working-group/src/tests.rs

@@ -1185,6 +1185,7 @@ impl SetLeadFixture {
         let new_lead = LeadById::<Test>::get(new_lead_id);
 
         let expected_new_lead = Lead {
+            member_id: 0,
             role_account: self.new_role_account,
             reward_relationship: None,
             inducted: 1, // make dynamic later

+ 0 - 1
runtime-modules/governance/src/mock.rs

@@ -67,7 +67,6 @@ impl membership::Trait for Test {
     type MemberId = u32;
     type SubscriptionId = u32;
     type PaidTermId = u32;
-    type ActorId = u32;
     type InitialMembersBalance = InitialMembersBalance;
 }
 impl minting::Trait for Test {

+ 2 - 120
runtime-modules/membership/src/lib.rs

@@ -52,16 +52,6 @@ pub trait Trait: system::Trait + GovernanceCurrency + timestamp::Trait {
         + MaybeSerialize
         + PartialEq;
 
-    type ActorId: Parameter
-        + Member
-        + SimpleArithmetic
-        + Codec
-        + Default
-        + Copy
-        + MaybeSerialize
-        + PartialEq
-        + Ord;
-
     /// Initial balance of members created at genesis
     type InitialMembersBalance: Get<BalanceOf<Self>>;
 }
@@ -83,19 +73,11 @@ pub type MembershipOf<T> = Membership<
     <T as Trait>::PaidTermId,
     <T as Trait>::SubscriptionId,
     <T as system::Trait>::AccountId,
-    <T as Trait>::ActorId,
 >;
 
 #[derive(Encode, Decode, Default)]
 /// Stored information about a registered user
-pub struct Membership<
-    BlockNumber,
-    Moment,
-    PaidTermId,
-    SubscriptionId,
-    AccountId,
-    ActorId: Ord + Copy,
-> {
+pub struct Membership<BlockNumber, Moment, PaidTermId, SubscriptionId, AccountId> {
     /// The unique handle chosen by member
     pub handle: Vec<u8>,
 
@@ -130,9 +112,6 @@ pub struct Membership<
     /// a member to act under their identity in other modules. It will usually be used more
     /// online and will have less funds in its balance.
     pub controller_account: AccountId,
-
-    /// The set of registered roles the member has enrolled in.
-    pub roles: ActorInRoleSet<ActorId>,
 }
 
 // Contains valid or default user details
@@ -216,7 +195,6 @@ decl_storage! {
         pub MaxAvatarUriLength get(max_avatar_uri_length) : u32 = DEFAULT_MAX_AVATAR_URI_LENGTH;
         pub MaxAboutTextLength get(max_about_text_length) : u32 = DEFAULT_MAX_ABOUT_TEXT_LENGTH;
 
-        pub MembershipIdByActorInRole get(membership_id_by_actor_in_role): map ActorInRole<T::ActorId> => T::MemberId;
     }
     add_extra_genesis {
         config(default_paid_membership_fee): BalanceOf<T>;
@@ -242,15 +220,13 @@ decl_event! {
     pub enum Event<T> where
       <T as system::Trait>::AccountId,
       <T as Trait>::MemberId,
-      <T as Trait>::ActorId, {
+    {
         MemberRegistered(MemberId, AccountId),
         MemberUpdatedAboutText(MemberId),
         MemberUpdatedAvatar(MemberId),
         MemberUpdatedHandle(MemberId),
         MemberSetRootAccount(MemberId, AccountId),
         MemberSetControllerAccount(MemberId, AccountId),
-        MemberRegisteredRole(MemberId, ActorInRole<ActorId>),
-        MemberUnregisteredRole(MemberId, ActorInRole<ActorId>),
     }
 }
 
@@ -574,7 +550,6 @@ impl<T: Trait> Module<T> {
             subscription: None,
             root_account: who.clone(),
             controller_account: who.clone(),
-            roles: ActorInRoleSet::new(),
         };
 
         <MemberIdsByRootAccountId<T>>::mutate(who, |ids| {
@@ -621,27 +596,6 @@ impl<T: Trait> Module<T> {
         Ok(())
     }
 
-    /// Determines if the signing account is a controller account of a member that has the registered
-    /// actor_in_role.
-    pub fn key_can_sign_for_role(
-        signing_account: &T::AccountId,
-        actor_in_role: ActorInRole<T::ActorId>,
-    ) -> bool {
-        <MemberIdsByControllerAccountId<T>>::get(signing_account)
-            .iter()
-            .any(|member_id| {
-                let membership = Self::membership(member_id);
-                membership.roles.has_registered_role(&actor_in_role)
-            })
-    }
-
-    /// Returns true if member identified by their member id occupies a Role at least once
-    pub fn member_is_in_role(member_id: T::MemberId, role: Role) -> bool {
-        Self::ensure_membership(member_id)
-            .ok()
-            .map_or(false, |membership| membership.roles.occupies_role(role))
-    }
-
     pub fn ensure_member_controller_account_signed(
         origin: T::Origin,
         member_id: &T::MemberId,
@@ -693,76 +647,4 @@ impl<T: Trait> Module<T> {
 
         Ok(())
     }
-
-    // policy across all roles is:
-    // members can only occupy a role at most once at a time
-    // members can enter any role
-    // no limit on total number of roles a member can enter
-    // ** Note ** Role specific policies should be enforced by the client modules
-    // this method should handle higher level policies
-    pub fn can_register_role_on_member(
-        member_id: &T::MemberId,
-        actor_in_role: &ActorInRole<T::ActorId>,
-    ) -> Result<MembershipOf<T>, &'static str> {
-        // Ensure member exists
-        let membership = Self::ensure_membership(*member_id)?;
-
-        // ensure is active member
-        ensure!(!membership.suspended, "SuspendedMemberCannotEnterRole");
-
-        // guard against duplicate ActorInRole
-        ensure!(
-            !<MembershipIdByActorInRole<T>>::exists(actor_in_role),
-            "ActorInRoleAlreadyExists"
-        );
-
-        // Other possible checks:
-        // How long the member has been registered
-        // Minimum balance
-        // EntryMethod
-
-        Ok(membership)
-    }
-
-    pub fn register_role_on_member(
-        member_id: T::MemberId,
-        actor_in_role: &ActorInRole<T::ActorId>,
-    ) -> Result<(), &'static str> {
-        // Policy check
-        let mut membership = Self::can_register_role_on_member(&member_id, actor_in_role)?;
-
-        assert!(membership.roles.register_role(actor_in_role));
-
-        <MembershipById<T>>::insert(member_id, membership);
-        <MembershipIdByActorInRole<T>>::insert(actor_in_role, member_id);
-        Self::deposit_event(RawEvent::MemberRegisteredRole(member_id, *actor_in_role));
-        Ok(())
-    }
-
-    pub fn can_unregister_role(actor_in_role: ActorInRole<T::ActorId>) -> Result<(), &'static str> {
-        ensure!(
-            <MembershipIdByActorInRole<T>>::exists(&actor_in_role),
-            "ActorInRoleNotFound"
-        );
-
-        Ok(())
-    }
-
-    pub fn unregister_role(actor_in_role: ActorInRole<T::ActorId>) -> Result<(), &'static str> {
-        Self::can_unregister_role(actor_in_role)?;
-
-        let member_id = <MembershipIdByActorInRole<T>>::get(actor_in_role);
-
-        let mut membership = Self::ensure_membership(member_id)?; // .expect().. ?
-
-        assert!(membership.roles.unregister_role(&actor_in_role));
-
-        <MembershipIdByActorInRole<T>>::remove(actor_in_role);
-
-        <MembershipById<T>>::insert(member_id, membership);
-
-        Self::deposit_event(RawEvent::MemberUnregisteredRole(member_id, actor_in_role));
-
-        Ok(())
-    }
 }

+ 0 - 1
runtime-modules/membership/src/mock.rs

@@ -89,7 +89,6 @@ impl Trait for Test {
     type MemberId = u32;
     type PaidTermId = u32;
     type SubscriptionId = u32;
-    type ActorId = u32;
     type InitialMembersBalance = InitialMembersBalance;
 }
 

+ 0 - 63
runtime-modules/membership/src/tests.rs

@@ -341,66 +341,3 @@ fn set_root_account() {
             assert!(<crate::MemberIdsByRootAccountId<Test>>::get(&ALICE_ACCOUNT_ID).is_empty());
         });
 }
-
-#[test]
-fn registering_and_unregistering_roles_on_member() {
-    let initial_members = [1, 2];
-
-    TestExternalitiesBuilder::<Test>::default()
-        .set_membership_config(
-            genesis::GenesisConfigBuilder::default()
-                .members(initial_members.to_vec())
-                .build(),
-        )
-        .build()
-        .execute_with(|| {
-            const DUMMY_ACTOR_ID: u32 = 100;
-            let member_id_1 = 0;
-            let member_id_2 = 0;
-
-            // no initial roles for member
-            assert!(!Members::member_is_in_role(
-                member_id_1,
-                crate::Role::ChannelOwner
-            ));
-
-            // REGISTERING
-
-            // successful registration
-            assert_ok!(Members::register_role_on_member(
-                member_id_1,
-                &crate::ActorInRole::new(crate::Role::ChannelOwner, DUMMY_ACTOR_ID)
-            ));
-            assert!(Members::member_is_in_role(
-                member_id_1,
-                crate::Role::ChannelOwner
-            ));
-
-            // registering another member in same role and actorid combination should fail
-            assert_dispatch_error_message(
-                Members::register_role_on_member(
-                    member_id_2,
-                    &crate::ActorInRole::new(crate::Role::ChannelOwner, DUMMY_ACTOR_ID),
-                ),
-                "ActorInRoleAlreadyExists",
-            );
-
-            // UNREGISTERING
-
-            // trying to unregister non existent actor role should fail
-            assert_dispatch_error_message(
-                Members::unregister_role(crate::ActorInRole::new(crate::Role::Curator, 222)),
-                "ActorInRoleNotFound",
-            );
-
-            // successfully unregister role
-            assert_ok!(Members::unregister_role(crate::ActorInRole::new(
-                crate::Role::ChannelOwner,
-                DUMMY_ACTOR_ID
-            )));
-            assert!(!Members::member_is_in_role(
-                member_id_1,
-                crate::Role::ChannelOwner
-            ));
-        });
-}

+ 1 - 1
runtime-modules/proposals/codex/src/tests/mock.rs

@@ -49,7 +49,6 @@ impl membership::Trait for Test {
     type MemberId = u64;
     type PaidTermId = u64;
     type SubscriptionId = u64;
-    type ActorId = u64;
     type InitialMembersBalance = ();
 }
 
@@ -168,6 +167,7 @@ impl governance::election::Trait for Test {
 
 impl content_working_group::Trait for Test {
     type Event = ();
+    type ActorId = u64;
 }
 
 impl recurring_rewards::Trait for Test {

+ 0 - 1
runtime-modules/proposals/discussion/src/tests/mock.rs

@@ -80,7 +80,6 @@ impl membership::Trait for Test {
     type MemberId = u64;
     type PaidTermId = u64;
     type SubscriptionId = u64;
-    type ActorId = u64;
     type InitialMembersBalance = ();
 }
 

+ 0 - 1
runtime-modules/proposals/engine/src/tests/mock/mod.rs

@@ -99,7 +99,6 @@ impl membership::Trait for Test {
     type MemberId = u64;
     type PaidTermId = u64;
     type SubscriptionId = u64;
-    type ActorId = u64;
     type InitialMembersBalance = ();
 }
 

+ 0 - 1
runtime-modules/roles/src/mock.rs

@@ -96,7 +96,6 @@ impl membership::Trait for Test {
     type MemberId = u32;
     type SubscriptionId = u32;
     type PaidTermId = u32;
-    type ActorId = u32;
     type InitialMembersBalance = InitialMembersBalance;
 }
 

+ 0 - 1
runtime-modules/storage/src/mock.rs

@@ -187,7 +187,6 @@ impl membership::Trait for Test {
     type MemberId = u32;
     type SubscriptionId = u32;
     type PaidTermId = u32;
-    type ActorId = u32;
     type InitialMembersBalance = InitialMembersBalance;
 }
 

+ 1 - 1
runtime/src/lib.rs

@@ -676,6 +676,7 @@ impl stake::StakingEventsHandler<Runtime> for ContentWorkingGroupStakingEventHan
 
 impl content_wg::Trait for Runtime {
     type Event = Event;
+    type ActorId = u64;
 }
 
 impl common::currency::GovernanceCurrency for Runtime {
@@ -762,7 +763,6 @@ impl membership::Trait for Runtime {
     type MemberId = u64;
     type PaidTermId = u64;
     type SubscriptionId = u64;
-    type ActorId = u64;
     type InitialMembersBalance = InitialMembersBalance;
 }