Help
Registration
To get started, you will need to register your email address.
Do this by clicking Security then Register.
Add your email address and click Submit
You will receive an email with a one-time code.
Copy this code and paste it into the dialog with your email and password.
Once registered, you will be prompted to log in.
Login
Enter your email and password.
Choose your authentication method.
This is how Propman can reliably ensure that it is you logging in.
You have two options (see the next section.)
Two-Factor Authentication
Propman requires some level of two-factor authentication.
This is a traditional verification method. Once you have entered your email and password, you will receive an email with a one-time code. Enter this code in the dialog to login.
Authenticator
This method requires an authenticator application like Google Authenticator. To set it up once you have logged in, go to Security then Authenticator. A QR code is presented for the app to image. Once this has been added to your authenticator, you will see a code that changes every 60 seconds. Use this code to confirm authentication and next time you log in, just select Two-Factor Authentication and enter the code from your app.
Forgot Password
If you have forgotten your password, click Security then Forgot Password. You will be prompted with your email. When you click submit and your email is registered, you will receive a one-time code. Enter this code and your new password. If the code is correct, your password will be updated
Change Password
Groups
In django, I want to use Teams to separate Teams (Team) as SystemUsers. The SystemUser model should be associated with the normal Django User model via a one-to-one relationship. If a SystemUser is deleted, the associated Django User should also be deleted (and vise-versa) A SystemUser can belong to multiple Teams, but only one is active at a time. The SystemUser can only access data associated with the Team they are currently logged in as.
SystemUsers should be in one of several access levels for a given Team: Team-Admin: can add/remove Users from the Team (cannot change anything about the SystemUsers or Django Users themselves) Normal-User: normal User can edit/add/remove/add rows in the entity tables for this Team Read-Only: read-only User can view rows in entity tables for the Team These Teams are separate from the Django super-User which can only set or granted by the manage script
Initially, any User that signs up should land on a new Team page and be required to create a new Team. This User will automatically become Team-admin for this new Team. Each User has a maxTeams entry that is initially set to 1 for each SystemUser. Only a super-User can increment this maxTeams value. Each User is allowed to belong to a maximum maxTeams Teams A Team-admin can invite a User (or email a non-User) to join his Team. If an existing User accepts this invitation, he will be offered to contact the application developer to increment his maxTeams or leave his current Team. If the last admin leaves a Team, they must select an existing Team User to become a Team-admin if the last admin leaves a Team and there are no other members, the SystemUser should be warned and the Team will be disconnected and eventually deleted If a non-User is invited to a Team, when he signs in, he should be given an option to accept the invitation and join or create a new Team Team-admins should be notified by email when Users accept their invitations
there are multiple tables that will be accessed by Users of all Teams.
There should be a differentiator in each table row so that Users in one Team can only access entries from the Team that is currently active
A User can only have one active Team at a time (even if they belong to more than one Team).
If a SystemUser is deleted, no other tables should be affected