Skip to the content.

User Management

Overview

The User Management system provides comprehensive tools for administrators to manage all app users, assign roles, configure memberships, and link family relationships. This centralized system ensures proper access control and data organization across the BPVA Calendar app.

User Roles

Role Hierarchy

  1. Admin
    • Full system access
    • Manage all users and roles
    • Configure calendar settings
    • Access all admin features
    • Typically: Head coaches, facility managers
  2. Receptionist
    • Front desk operations
    • Quick member check-in
    • View member list
    • Limited admin access
    • Typically: Front desk staff
  3. Parent
    • View linked athlete information
    • Monitor athlete’s check-ins and attendance
    • View athlete’s document status
    • Manage family emergency contacts
    • Typically: Parents/guardians
  4. Athlete
    • Full app functionality for pole vaulters
    • Gym check-in capability
    • View practice/meet calendars
    • Upload registration documents
    • Manage runway step configurations
    • Track personal progress
    • Typically: Pole vault athletes
  5. User (Default)
    • Basic read-only access
    • View public calendars
    • No check-in or profile features
    • Typically: Visitors, prospective members

Features

View All Users

Search Functionality

Role Management

Assign Roles

  1. Navigate to Admin Dashboard (open hamburger menu in top-left)
  2. Tap User Management expansion tile
  3. Tap Manage Users option
  4. Find the user in the list (use search if needed)
  5. Tap on the user to open the options menu
  6. Tap “Change Membership Type”
  7. Select new membership type from the list
  8. Confirm the change
  9. User’s permissions and role update immediately

Role Restrictions

Membership Management

Membership Expiration

Membership Status

Setting Expiration Dates

  1. In User Management, tap on an athlete
  2. Tap “Set Expiration Date” (for monthly/yearly members)
  3. OR tap “Mark as Paid for Today” (for drop-in members)
  4. Select date from calendar picker (if setting expiration)
  5. Save changes

Family Linking (Parent-Athlete)

Link Athletes to Parents

  1. Open parent’s user profile
  2. Tap “Link Athlete”
  3. Search for athlete by name/email
  4. Select athlete to link
  5. Confirm relationship
  6. Athlete appears in parent’s linked athletes list

Link Parents to Athletes

  1. Open athlete’s user profile
  2. Tap “Link Parent”
  3. Search for parent by name/email
  4. Select parent to link
  5. Confirm relationship
  6. Parent appears in athlete’s linked parents list

Benefits of Linking

Multiple Relationships

Emergency Contacts

Manage Emergency Contacts

Access Levels

Admin List Management

View Admins

Add Admins

  1. Navigate to Admin Dashboard (hamburger menu)
  2. Tap User Management → Manage Users
  3. Find the user you want to make an admin
  4. Tap on the user, then “Change Membership Type”
  5. Select “Admin” from the membership types
  6. Confirm the change
  7. User’s role automatically updated to Admin

Remove Admins

  1. View admin list
  2. Select admin to remove
  3. Tap “Remove Admin”
  4. Confirm removal (cannot remove last admin)
  5. User role reverts to User

Admin Safeguards

Data Model

UserProfile

{
  "uid": "firebase_auth_uid",
  "email": "[email protected]",
  "displayName": "John Smith",
  "photoURL": "https://...",
  "role": "athlete",
  "createdAt": "2024-01-15T10:00:00Z",
  "lastLogin": "2024-01-20T08:30:00Z"
}

UserMembership

{
  "userId": "firebase_auth_uid",
  "membershipExpiration": "2024-12-31T23:59:59Z",
  "linkedParentIds": ["parent_uid_1", "parent_uid_2"],
  "linkedAthleteIds": ["athlete_uid_1", "athlete_uid_2"],
  "emergencyContact": {
    "primaryName": "Jane Smith",
    "primaryPhone": "555-0123",
    "primaryRelationship": "Mother",
    "secondaryName": "Bob Smith",
    "secondaryPhone": "555-0124",
    "secondaryRelationship": "Father"
  },
  "medicalInfo": {
    "allergies": "Peanuts",
    "medications": "Inhaler as needed",
    "specialInstructions": "Asthma - has rescue inhaler"
  }
}

Workflows

Onboarding New Athlete

  1. User Signs Up (via app)
    • Creates account with Google/Apple Sign-In
    • Default role: User
    • Profile created automatically
  2. Admin Configures Account
    • Navigate to User Management
    • Search for new user by email
    • Assign role: Athlete
    • Set membership expiration date
    • Link to parent account (if applicable)
  3. Athlete Completes Profile
    • Upload registration form
    • Upload waiver documents
    • Add emergency contacts
    • Configure runway step settings
  4. Admin Reviews Documents
    • Review submitted documents
    • Approve or request changes
    • Account fully activated

Onboarding New Parent

  1. Parent Signs Up
    • Creates account via app
    • Default role: User
  2. Admin Links to Athlete
    • Open parent’s profile
    • Link to athlete account(s)
    • Assign role: Parent
  3. Parent Access Granted
    • Can view linked athlete info
    • See athlete check-ins
    • View athlete documents

Adding New Admin

  1. User Must Exist
    • User must have signed in at least once
    • Have valid email on file
  2. Admin Adds to List
    • Go to Admin List
    • Add email address
    • Confirm addition
  3. Role Updated
    • User role changes to Admin
    • Full admin access granted immediately
    • Notification sent to new admin

Firestore Security

All user management operations enforce strict security rules:

// User can only read their own profile
match /users/{userId} {
  allow read: if request.auth.uid == userId;
}

// Only admins can write user data
match /users/{userId} {
  allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.role == 'admin';
}

// Athletes can read linked parents' memberships
match /user_memberships/{userId} {
  allow read: if request.auth != null && 
    exists(/databases/$(database)/documents/user_memberships/$(request.auth.uid)) &&
    userId in get(/databases/$(database)/documents/user_memberships/$(request.auth.uid)).data.linkedParentIds;
}

Best Practices

Role Assignment

Membership Management

Family Linking

Data Privacy

Common Tasks

View User’s Complete Information

  1. Search for user in User Management
  2. Tap user to open details
  3. View tabs: Profile, Membership, Links, Documents, Check-ins

Bulk Update Memberships

  1. Export user list to CSV
  2. Update expiration dates in spreadsheet
  3. Import updated CSV (future feature)
  4. Verify changes

Handle Expired Membership

  1. User receives notification at 30, 14, 7 days before expiration
  2. Admin sees “Expiring Soon” badge
  3. At expiration, check-in access disabled
  4. Admin can extend membership or deactivate account

Audit User Activity

  1. View admin actions log
  2. Filter by user or date range
  3. Review role changes and membership updates
  4. Export audit log for compliance

Troubleshooting

User Can’t See Expected Features

Parent Can’t See Athlete Data

Can’t Add New Admin

Membership Expiration Not Working

Integration Points

With Other Features

Check-In System

Document Management

Calendar Access

Notifications

Reporting & Analytics

User Statistics

Access Reports

Future Enhancements

Potential improvements under consideration: