Users should be able to invite other community members to join Mozillians.org. To do so, we will use a "Web of Trust" approach where only registered users can invite other community members via e-mail.
This feature is a lower priority than other features. It is pretty self-contained and can be cut from the 1.0 Spec if time or effort becomes an issue. The vouching mechanism should be built before invitations and is critical for launch.
To implement this, the application should offer a touch points to send one or more invites to the e-mail addresses of Mozilla community members. When accessing these touch points (i.e. empty search results page, navigation bar), the user should be able to send one or many invites to the specified e-mail addresses. The workflow is explained below.
Inviting New Users
- Invite Page - This page can be instanced either through the navigation bar or via a hyperlink available in an empty set of search results. Mozillians can invite one or more people to join the phonebook with their e-mail addresses via the Invite page.
E-mail Invitations Sent
- An e-mail should be sent (using either Responsys or SocketLabs) to the specified user with a personalized voucher explaining Mozillians.org and inviting him/her to continue creating their profile as a vouched user. In this scenario, the regular anonymous registration process has the "Get Vouched" section disabled.
An invitation email contains a link that has an invite code. This is a random, unguessable code. The voucher's email address, the vouchee's email address, and the invite code should be recorded so that the invite code can be verified during registration.
This is a sketch... we may revise this once we get deeper into development.
The registration view will verify and maintain the state of an invitation code if one is supplied via the url.
This data is only useful in terms of business logic (vouching), so it isn't important that it be available to LDAP ACLs or LDAP data access. Also MySQL backed DJango models are very familiar :)
Invitations will be put into a work queue, emails are composed and sent over SMTP, then the db is updated with sent date.
- voucher - A verified Mozillian who wants to invite another person
- vouchee - The new user who recieved an invite
voucher_vouchee - Mapping table
- invite_code - UUID
- invite_sent - date