This document uses the following definitions:
An account becomes the key point of user and money management.
An account includes:
Any user always belongs to some account. When a user registers at the site (contrary to be invited), he gets his own account. There several ways a user joins an existing account.
Account manager adds user to the account the same way a user shares the project now – by specifying user’s email address. To make the process more efficient, we should allow adding multiple users separated by comma or semicolon. Once such user joins the system, he is immediately linked to the account. The invitation process works like today – an email is sent to the user etc.
A manager could invite a user who’s already in the system. In such case, every time when the user logs in, a modal panel pops up: “You have been invited to join the account XYZ (some explanation here)”. The panel has button: Yes, join the account; No, I want to stay independent.
A user could also leave the organizational account (defined as an account for which the user is not an owner) and get his own account. In such case, as with new registration, a user is his own account manager and payer.
Attention: Inviting new users to the application becomes the exclusive function of a Manager. Project owners, unless they are also account managers, could only add the existing users to the project.
Initially the owner is the person who created the account. However then the owner could transfer it to another user explicitly. Changing the owner doesn’t change Manager and Payer.
Since the change of owner is non-reversible operation, it requires special UI. Once user clicks Change Owner button, the panel pops up asking to select the new owner email – twice. The email must be from the list of account users.