Skip to content
docisit edited this page Jul 27, 2026 · 2 revisions

👤 User Roles & Profiles

Understanding user roles, registration, profiles, and the COPPA age gate in ITG Media App.


User Roles

ITG Media App has five built-in roles. Each role has specific permissions and access levels.

Role Description Key Permissions
host Show host / broadcaster Create/manage shows, Director Control, Studio access, generate guest links, configure streaming
guest Guest that appears on shows Join guest rooms, manage own profile, view shows they're invited to
athlete Athlete profile (Sports Module) Sports stats, drills, leaderboard participation, verification submissions
staff Production staff / moderators Assist with show management, moderate chat, manage guest queue, view analytics
admin Full system administrator Django Admin access, all role permissions, system configuration, user management

💡 The live deployment at https://donoconnor.com uses these roles. When you deploy your own instance, you can customize roles further.

Role Permissions Matrix

Permission host guest athlete staff admin
Create/Manage Shows
Director Control
Studio Access
Join as Guest
Generate Guest Links
Manage Guest Queue
Configure Streaming
Moderate Chat
Django Admin
Manage Users
System Settings

📝 Registration

How to Register

  1. Navigate to /register
  2. Fill in the registration form:
    • Email address
    • Username
    • Password (with confirmation)
    • Role selection (if applicable)
  3. Complete the Turnstile CAPTCHA (if enabled)
  4. Submit the form
  5. Check your email for a verification link
  6. Click the verification link to activate your account

Email Verification

New accounts must verify their email before accessing restricted features:

  • A verification email is sent after registration
  • The link expires after a configurable time period
  • Unverified accounts have limited access
  • Resend verification link is available on the login page

Password Reset

If you forget your password:

  1. Go to /forgot-password
  2. Enter your email address
  3. Check your email for a reset link
  4. Click the link and set a new password
  5. Login with your new password

📧 If emails aren't arriving, check your spam folder or verify your SMTP configuration in the Configuration guide.


🔒 COPPA Age Gate

ITG Media App includes a COPPA (Children's Online Privacy Protection Act) age gate to comply with regulations for users under 13.

How It Works

  • During registration, users must provide their date of birth
  • Users under 13 are flagged for parental consent
  • A parent/guardian must complete the consent form at /parent-consent
  • Until consent is verified, under-13 accounts have restricted features
  • No personal data is collected from under-13 users without verified consent

Parental Consent Flow

Registration ──▶ Age < 13? ──yes──▶ Restricted Account
                      │                      │
                      no                     ▼
                      │              Parent Consent Form
                      ▼                      │
                 Full Access           ▼ Verified?
                                       │
                                  yes ─┴── no
                                   │        │
                              Full Access  Restricted

👤 Profile Management

Profile Page

Each user has a profile page at /profile (own) or /profiles/<username> (view others).

Profile Fields

Field Description
Avatar / Photo Profile picture (upload or default)
Display Name Public display name
Bio Short biography / description
Location City, state, or region
Website Personal or professional website link
Social Links Twitter/X, Instagram, etc.
Role Badge Automatically displayed based on user role

Profile Visibility

Setting Description
Public Profile visible to everyone, including non-logged-in visitors
Registered Users Only Visible only to logged-in users
Private Only visible to the profile owner and admins

🏅 Sports Module Profiles (Optional)

When SPORTS_MODULE_ENABLED=True, athlete profiles include additional fields:

Athlete Profile Fields

Category Fields
Basic Info Height, weight, graduation year, position, school name, state
Performance 40-yard dash time, vertical jump, shuttle time, bench press, squat, power clean
Academic GPA
Links Hudl, MaxPreps, Twitter/X
Sports Multiple sports selection (football, basketball, baseball, etc.)
Stats Sport-specific stats with history tracking
Verification Video proof for stat verification, coach verification badge

Coach Profiles

Coaches with is_verified_coach=True display:

  • Verification badge on profile
  • Years of experience
  • Certifications list

See the Sports Module page for full details.


🛡️ Security Features

Authentication

Feature Description
JWT Auth JSON Web Tokens for secure, stateless authentication
Token Refresh Automatic token refresh without re-login
Session Timeout Configurable session duration
Rate Limiting API rate limiting per user/IP to prevent abuse

Account Security

Feature Description
Turnstile CAPTCHA Cloudflare privacy-friendly CAPTCHA on registration/login
Admin IP Whitelist Restrict Django Admin access to specific IPs
COPPA Compliance Age gate and parental consent for under-13 users

🔑 Role Assignment

Roles are assigned by administrators:

Via Django Admin

  1. Log into Django Admin at your configured ADMIN_URL
  2. Navigate to Members → Profiles
  3. Find the user and edit their profile
  4. Change the Role field
  5. Save

Via Registration

  • Default role for new registrations is guest
  • Admin can configure default role or require admin approval
  • Athlete role is available when Sports Module is enabled

⏭️ Next Steps

  • Sports Module — Athlete profiles, stats, and leaderboards
  • Admin Panel — Managing users and roles from Django Admin

← Back to Wiki Home

Clone this wiki locally