Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: EventSenders forward RequestToJoin decision to control node #3843

Merged
merged 1 commit into from
Aug 8, 2023

Commits on Aug 7, 2023

  1. refactor: EventSenders forward RequestToJoin decision to control node

    This is a bigger change in how community membership requests are handled
    among admins, token masters, owners, and control nodes.
    
    Prior to this commit, all privileged users, also known as
    `EventSenders`, were able to accept and reject community membership
    requests and those changes would be applied by all users.
    
    This commit changes this behaviour such that:
    
    1. EventSenders can make a decision (accept, reject), but merely forward
       their decision to the control node, which ultimately has to confirm
       it
    2. EventSenders are no longer removing or adding members to and from
       communities
    3. When an eventsender signaled a decision, the membership request will
       enter a pending state (acceptedPending or rejectedPending)
    4. Once a decision was made by one eventsender, no other eventsender can
       override that decision
    
    This implementation is covered with a bunch of tests:
    
    - Ensure that decision made by event sender is shared with other event
      senders
      - `testAcceptMemberRequestToJoinResponseSharedWithOtherEventSenders()`
      - `testRejectMemberRequestToJoinResponseSharedWithOtherEventSenders()`
    - Ensure memebrship request stays pending, until control node has
      confirmed decision by event senders
      - `testAcceptMemberRequestToJoinNotConfirmedByControlNode()`
      - `testRejectMemberRequestToJoinNotConfirmedByControlNode()`
    - Ensure that decision made by event sender cannot be overriden by other
      event senders
      - `testEventSenderCannotOverrideRequestToJoinState()`
    
    These test cases live in three test suites for different event sender
    types respectively
    
    - `OwnerWithoutCommunityKeyCommunityEventsSuite`
    - `TokenMasterCommunityEventsSuite`
    - `AdminCommunityEventsSuite`
    
    In addition to the changes mentioned above, there's also a smaller
    changes that ensures membership requests to *not* attached revealed wallet
    addresses when the requests are sent to event senders (in addition to
    control nodes).
    
    Requests send to a control node will still include revealed addresses as
    the control node needs them to verify token permissions.
    
    This commit does not yet handle the case of event senders attempting to
    kick and ban members.
    
    Similar to accepting and rejecting membership requests, kicking and
    banning need a new pending state. However, we don't track such state in
    local databases yet so those two cases will be handled in future commit
    to not have this commit grow larger.
    0x-r4bbit committed Aug 7, 2023
    Configuration menu
    Copy the full SHA
    a4dc80d View commit details
    Browse the repository at this point in the history