"Signal" rooms or accounts can typically be treated as matrix rooms or accounts as they are bridged. Most of these functions currently exists in helpers/api/matrix and are called in forms.py some adjustments would need to be made to lock down functions for non admin users.
Currently, onboarding new users is a heavily manual and resource-intensive process:
See Current Process Forum Post: https://forum.irregularchat.com/t/building-communities/86/3?u=sac
- Admins manually track invite requests with a ratio of approximately 250 users per active moderator.
- Users must manually join an entry room; moderators must then manually prompt introductions.
- Confusion arises because users often request access using invite links and reference the person to vouch for them by names instead of their usernames, making it challenging to verify who initiated the invite.
- Admins spend considerable time validating and tracking invite requests.
- An existing user logged into the Identity Provider (IdP) can send direct invites via email or Signal through a user-facing dashboard.
- If the existing user’s Matrix username is connected, they should automatically be able to add the invited user into available rooms.
- Invited users receive a unique, single-use invite link that leads to a publicly accessible registration page.
- Registration validates the invite link and restricts account creation to the invited email or Signal number.
- Registration automatically triggers user account creation and auto-addition to relevant rooms.
- Invites are transparently logged as
UserEventon the existing event timeline. - Admin approval can be enforced for selected users based on account age or other criteria.
- The public invite link can be removed from community Signal rooms to reduce spam and confusion.
- Create a dashboard page allowing users to invite others via email or Signal.
- Utilize existing SMTP/Signal bridge functionalities for sending invites.
- Store invites in the existing database using a dedicated
Invitemodel.
- Implement
UserEventalongside the existingAdminEventto log user-initiated invites. - Provide a clear, audit-friendly view of invite actions in the community timeline.
- Develop a publicly accessible form validating invite tokens and associated emails/Signal contacts.
- Restrict registration to one user per invite token.
- Upon successful validation, utilize existing user creation logic (
forms.py,auth/api.py).
- After registration, automatically add users to appropriate Matrix or Signal rooms.
- Leverage existing methods within
matrix.pyand Signal bridge integration (matrix_actions.py).
- Integrate optional admin approval workflows based on account age or flagged criteria.
- Utilize existing approval mechanisms from admin tools.
- Once implemented, remove public invite links from community Signal rooms.
- Reduced moderator workload: Automates and streamlines onboarding, allowing moderators to focus more on community engagement.
- Increased transparency and security: Clear event logging and validation mechanisms.
- Scalability: Facilitates growth by minimizing administrative overhead.
- Enhanced user experience: Simple, fast onboarding for new members.
app/ui/forms.py: Refine user creation and invitation handling.app/auth/api.py: Enhance invite creation logic and integrate admin approval.app/utils/helpers.py: Utilize for email/Signal integration and event logging.app/utils/matrix.py&app/utils/matrix_actions.py: Implement automatic room joining features.app/db/models.py: IntroduceUserEventfor logging user-initiated actions.app/ui/: Add pages for user dashboard invites and public registration.