# Feature: User Accounts & Profiles **Source:** VSMS Functional Requirements v1.1, Section 2 --- ## Roles There are two account types: **Admin** and **Volunteer**. Multiple Admin accounts are supported. Admins are not assigned to volunteer shifts. **Trainee** is not a separate account type — it is a permission flag on a Volunteer account that blocks open shift claiming. All other Volunteer behaviour is identical. ### Operational Roles Assigned by Admin. A volunteer may hold multiple simultaneously. Displayed on schedule and calendar views. - Behaviour Team - Dog Log Monitor - Dog Shelter Volunteer - Trainee *(mirrors the Trainee permission flag)* - Floater *(covers open shifts; can also hold a recurring assigned shift)* --- ## Profile Data | Field | Required | Notes | |-------|----------|-------| | Full name | Yes | Editable by volunteer | | Email address | Yes | Used for login and notifications | | Phone number | No | Stored for reference; not used for notifications in MVP | | Operational role(s) | — | Set/edited by Admin only | | Notification preference | — | Email only in MVP; email + SMS future | | Internal Admin notes | — | Admin-only; not visible to volunteer | | Last login date | — | Visible to Admin | | Completed shift count | — | System-tracked; used to inform Trainee promotion | Volunteers can edit: **name** and **phone number** only. --- ## Requirements | FR ID | Requirement | Notes | |-------|-------------|-------| | **FR-U01** | Admin creates all accounts. No self-registration. Admin sets name, email, operational role(s), and Trainee flag at creation. | | | **FR-U02** | On account creation, the system sends an invite email with an activation link. | Admin can resend if not yet activated. | | **FR-U03** | Login uses invite-based flow. Google Auth (OAuth) preferred if feasible; email/password with invite activation is the fallback. | No self-signup regardless of method. **TBD: implementation team to decide.** | | **FR-U04** | Admin can deactivate a volunteer at any time. Volunteer is locked out immediately. Past shift records are preserved; name displays as `Name (inactive)` on past shifts. Deactivated accounts are hidden from active schedule and user list views. | | | **FR-U05** | Admin can promote a Trainee to full Volunteer (remove Trainee flag) at any time. Completed shift count is displayed on their profile to inform the decision. Conventional threshold is 2 shifts, but promotion is always a manual Admin action. Removing the flag immediately grants open shift claiming. | | | **FR-U06** | Admin can add, edit, and delete internal notes on any user profile. Notes are not visible to the volunteer. | | --- ## Open Decisions - **Authentication:** Google Auth vs. email/password — implementation team to advise and recommend. *(TBD)*