Allow users to join an assembly
Users should be able to easily join an assembly from the plainui. They should not need to be bothered with the backoffice. This makes user management easier for everyone.
Relevant use cases
- A user that already belongs to an assembly (i.e. a known member) and
- A user that is not yet a (known) member of an assembly but has learnt about the assembly and wants to be part of it. Read as:
- User: "I don't know anyone here
😭 " - User: "Oh, this assembly seems to be nice, I want to be part of that! 🤩"
- User: "I don't know anyone here
Intended behavior (outline)
- Assembly has a button "join"/"Join this assembly"/"I'd like to join this assembly" (whatever text seems to be appropriate and inviting)
- If a user clicks on this button,
- As an authenticated user, you join this assembly, with state "unconfirmed"
- As an anonymous user, you are asked to login first
- Assembly managers(? TODO: insert required role/permission here) get a notification that a new user joined their assembly. They can set the state to "confirmed" in order to show that the user is a known member of this assembly.
Possible extensions of this user story
Further thoughts and considerations, could be developed in separate issues:
- Show assembly members in assembly view (both confirmed and unconfirmed, confirmation status should be displayed next to username)
- Show assembly membership in user profile (confirmation status should be displayed next to username)
- Allow assembly to restrict who can join. If the restriction is active, clicking the "join" button initiates a join request. Assembly managers(?) get a notification and can accept the join request - if the do so, the membership status is set to "confirmed" and the user is shown as a member of this assembly. If the join request is pending or rejected, the user is not shown as a member of this assembly.
- Add an option for the user to hide their assembly membership. (TODO: Needs more specification how this would look like/where in the process this could be chosen. How does the Github approach look like on this, for example?)