I've created a system where a user can sign up for my application, start a paying subscription & then has access to my app.
I need to create another system that allows the user to invite their team members but in such a way that if the original account's subscription ends, I can also deny the invited users access to the app.
I'm not sure how to do this.
Effectively, the interaction flow would be as follows:
User signs up -> Pays for app -> Enters dashboard -> Inputs team member email -> team member receives email -> team member follows link -> creates password -> enters dashboard in new user account that's linked to original
So if the original subscription ends I can also deny the user access to the app.
I hope this makes sense & appreciate any tips on how to do this.
A common pattern for this is to include a invitedBy
key in the users
collection. When the first member invites other team members, set the invitedBy
key in the invited members to the _id
of the inviting member. In your code that expires the subscription of the first member, do:
Meteor.users.find({ invitedBy: userId })
and then take the appropriate actions to cancel/suspend their subscriptions or ask them to pay up.
The key is to include a reference to the inviting user in the signup link that is sent to the invitees. In my app I manage this with a separate Invitations
collection that contains the inviting user's _id
along with a token that is used in the url.