Registration & Communication Status

Austin Civic Wind Ensemble Members Portal

Last Updated: November 27, 2025
Status: Phase 1.7 Complete - Login Flow & Documentation

Table of Contents

Progress Overview

75%
Core Features Complete
32
Features Completed
22+
Features Pending
Phase 1.7
Phase Status

Current Status

The core registration and communication system is functional and ready for testing. Essential features are in place: keyword-protected registration, approval workflow with auto-group-assignment, members-only forums, and member directory. However, significant work remains: user documentation needs rewriting (current docs are too long/checklist-like), content migration from existing "Members" pages, music management system implementation (Phase 2), and notification/email systems. Ready for small-group testing of core workflow.

Completed Features

Registration & Approval System COMPLETE

  • Custom acwe_registration module built and functional
  • Registration form with keyword validation field
  • Keyword stored in Drupal state system
  • Keyword management form at /admin/config/acwe/rehearsal-keyword
    • Shows current keyword
    • Shows last updated date/time
    • Logs who updated it (accountability)
    • Includes helpful tips (collapsed)
  • Approval dashboard at /admin/people/pending
    • Lists all pending registrations
    • Shows username, email, time waiting
    • Approve/Deny/View action links
    • Logs all approval actions
  • "Registration Approver" role created (for section leaders and board members)
  • Auto-assignment to Section Groups on approval
  • Welcome email sent automatically on approval
  • Full workflow tested end-to-end successfully
Technical Implementation:
• Form alter via hook_form_alter()
• Custom validation handler for keyword check
• Custom approval form with confirmation step
• Group assignment via Group module API
• State API for keyword storage

Section Groups COMPLETE

  • 11 Section Groups created matching forum structure:
    • Conductor
    • Flutes/Piccolos
    • Oboes/Bassoons/English Horns
    • Clarinets
    • Bass Clarinets
    • Saxophones
    • French Horns
    • Cornets/Trumpets
    • Trombones
    • Euphoniums/Tubas
    • Percussion
  • Groups assigned IDs 1-11 sequentially
  • Auto-assignment logic built into ApproveUserForm
  • Mapping between section field values and group IDs
  • Tested: Users correctly added to groups on approval
Architecture Notes:
• field_primary_section and Group membership are separate
• Only linked automatically at initial approval
• Admins can manually adjust group membership later
• Allows flexibility for multi-section players and guest musicians

Forum System COMPLETE

  • Forum module installed (contrib version for Drupal 11)
  • Complete forum structure created programmatically:
    • Announcements Container: 1 forum (Official Announcements)
    • General Container: 3 forums (General Discussion, Repertoire Discussion, Off-Topic & Social)
    • Section Forums Container: 11 section-specific forums
    • Total: 3 containers, 15 forums
  • Members-only access implemented via custom hooks:
    • hook_node_access() - Blocks anonymous users from viewing forum content
    • hook_preprocess_page() - Redirects anonymous users from /forum pages
  • Permissions configured:
    • Authenticated users: Create, edit own, delete own forum content
    • Registration approvers: Edit any, delete any, administer forums
Security:
• Anonymous users cannot see forum content (NODE_ACCESS_DENY)
• Anonymous users redirected from /forum to homepage
• All forum nodes require authentication
• Moderators can edit/delete any post

Member Directory COMPLETE

  • View created at /members/directory
  • Table display with three columns:
    • Name (username)
    • Primary Section/Instrument
    • Member Since (account creation date)
  • Privacy-focused: No email addresses or phone numbers displayed
  • Exposed filter: "Filter by Section" dropdown
  • Filters: Active users only, excludes admin accounts (uid 0 and 1)
  • Pagination: 50 members per page
  • Sorted alphabetically by username
  • Clickable column headers for sorting
  • Custom CSS styling with proper contrast:
    • Dark headers (ACWE primary color) with white text
    • Alternating row colors
    • Hover effects
    • Mobile-responsive
Implementation:
• Views configuration saved to database
• CSS added to theme (acwe2025_bootstrap/css/style.css)
• Library attached via hook_preprocess_views_view()
• Uses ACWE color variables for consistency

Anti-Spam Protection COMPLETE

  • reCAPTCHA v3 configured and enabled:
    • Site key: 6LfDogcsAAAAABGXPMA6YKSsCSoWVAPAHrWuYdpq
    • Secret key configured (not displayed here)
    • Enabled on: Registration form, Password reset form, Contact forms
    • Invisible background scoring (v3)
  • Honeypot module configured:
    • 5-second time limit for form submissions
    • All forms protected (protect_all_forms: true)
    • Hidden field that bots auto-fill
  • Antibot module enabled:
    • 6-second delay before form submission available
    • JavaScript-based bot detection
  • Flood Control module installed for rate limiting
  • Rehearsal Keyword as human verification (custom)
  • Manual Approval workflow (final spam barrier)
Multi-Layer Protection Strategy

Layer 1: reCAPTCHA v3 (invisible scoring)

Layer 2: Honeypot + Antibot (hidden field + time delay)

Layer 3: Rehearsal keyword validation (custom verification question)

Layer 4: Manual approval by section leaders (human review)

Result: Extremely robust protection against automated spam and bot registrations

Field Management COMPLETE

  • field_primary_section recreated as list_string type
  • 11 allowed values configured (matching sections)
  • Widget changed to options_select (dropdown)
  • Existing user data preserved during migration
  • Admins now see dropdown instead of text field when editing users
  • Ensures data consistency across all user profiles
Migration Script:
• Saved existing values before deletion
• Deleted old string field
• Purged field data
• Created new list_string field storage
• Created new field configuration
• Restored all saved values
• Updated form display configuration
• Zero data loss

Phase 1.6 - Security & Profile Enhancements COMPLETE

  • reCAPTCHA v3: Upgraded from v2 to v3 module
    • Installed drupal/recaptcha_v3 module
    • Removed orphaned v2 configuration
    • Configured invisible v3 verification
  • User Profile System: Profile module integrated
    • Installed drupal/profile 1.13.0
    • Created Member Profile type
    • Added First Name and Last Name fields
    • Profile accessible at /user/{uid}/profile
  • Navigation Improvements: Mobile-friendly offcanvas menu
    • Enabled Bootstrap offcanvas collapse in theme settings
    • Fixed icon colors in navigation and dropdowns
    • CSS improvements for better contrast
  • System Cleanup: Database and cache optimization
    • Removed orphaned module references (blog routes, recaptcha)
    • Cleaned up core.extension configuration
    • Multiple cache rebuilds for stability
Technical Updates (Nov 18-19, 2025):
• Module: drupal/recaptcha_v3 (replaced drupal/recaptcha)
• Module: drupal/profile 1.13.0
• CSS: Navigation icon color fixes in style.css
• Config: Bootstrap offcanvas navbar behavior enabled
• Database: Cleaned orphaned module entries

Phase 1.7 - Login Flow & Documentation COMPLETE

  • Login Destination System: Post-login routing to section groups
    • Installed drupal/login_destination module
    • Created URL aliases for all 11 sections (/flutes, /trumpets, etc.)
    • Token-based redirect using [current-user:field_primary_section:value]
    • Users land on their section group page after login
  • Configuration Cleanup: Removed obsolete content types
    • Deleted 18 event_calendar config files + 1 group relationship
    • Deleted 17 multimedia config files + 1 group relationship
    • Total cleanup: 36 orphaned configuration files
    • Config sync directory now consistent with active site
  • Registration Form Fix: Resolved TypeError bug
    • Removed duplicate form element creation for field widgets
    • Simplified form alter to only adjust field weights
    • Field widgets now render naturally without conflicts
    • New user registration now completes without errors
  • Comprehensive Documentation: USERGUIDE.md rewrite
    • 14 structured sections covering all aspects
    • Environment comparison (dev vs production)
    • Complete workflows: registration, approval, login
    • Roles, permissions, groups mapping reference tables
    • Troubleshooting matrix with common issues
    • Maintenance commands and deployment checklist
Technical Updates (Nov 26-27, 2025):
• Module: drupal/login_destination
• URL Aliases: 11 section aliases created via path_alias
• Bug Fix: acwe_registration.module form alter simplified
• Config: 36 orphaned files removed from sync directory
• Docs: USERGUIDE.md expanded to comprehensive reference (14 sections)

User Documentation NEEDS REWRITE

  • Draft documentation created as Page nodes (unpublished):
    • Node 509: Member Portal Guide - For New Members
    • Node 510: Member Portal Guide - For Section Leaders & Approvers
  • Problem: Current documentation is too long and checklist-like
    • Not scannable or user-friendly
    • Too much detail for quick reference
    • Needs to be broken into focused, task-oriented pages
  • Needed: Rewrite as concise, focused how-to guides
    • "How to Register" (1 page, simple steps)
    • "How to Post in Forums" (quick guide)
    • "How to Approve New Members" (section leaders)
    • "How to Find Sheet Music" (when implemented)
    • "Quick Start Guide" (landing page with links)
  • Content Migration Needed:
    • Existing "ACWE's music library" page (node 491) needs integration
    • Other member-facing content to be identified and migrated
    • Create clear information architecture
Action Items:
• Audit existing member content (identify what to migrate)
• Create content strategy for user-facing documentation
• Rewrite as short, task-oriented pages (not long checklists)
• Design clear navigation for help/documentation section
• Test with actual users for clarity and usability

Music Management (Phase 2)

Sheet Music Library System NOT STARTED

  • Current State: Existing "ACWE's music library" page (node 491)
    • Likely references old/external music management system
    • Needs to be reviewed and integrated with new portal
  • Planned Approach: Drupal-native using Group content
    • Leverage existing Groups module infrastructure
    • Section groups already in place (ready to extend)
    • No external API integration needed
  • Architecture Design:
    • Content Type: "Sheet Music" with fields for title, composer, arranger, part/instrument
    • PDF file uploads (private file system for security)
    • Group content plugin: Makes sheet music group-able
    • Access control via Groups module (only group members can access)

Copyright Compliance & Retention NOT STARTED

  • Automatic Retention Management:
    • Retention date = Performance date + 2 weeks (configurable)
    • Calculated automatically on file upload
    • Cron job checks daily for expired files
    • Email warnings 7 days before deletion
    • Auto-deletion after retention date passes
  • Admin Override:
    • Mark files as "Keep indefinitely"
    • For public domain or ensemble-owned music
    • Requires justification note
  • Audit Trail:
    • Log all uploads (who, when, what file)
    • Log all deletions (manual and automatic)
    • Track who downloaded files
    • Available for copyright compliance reviews

Upload & Distribution Workflow NOT STARTED

  • Upload Interface:
    • For directors, section leaders, librarians
    • Bulk upload capability (multiple files at once)
    • Associate with concert/event
    • Auto-assign to appropriate section groups
  • Member Access:
    • View: Music library page (filtered by section group membership)
    • Search/filter by: Concert, composer, title, date
    • Download individual PDFs
    • Optional: Bulk download for concert
  • Notifications:
    • "New music available for your section"
    • Email notification to section group members
    • In-portal notification badge

Integration with Existing System

Groups Module Foundation:

  • ✅ 11 Section Groups already created and tested
  • ✅ Users auto-assigned to groups on registration approval
  • ✅ Group membership management already working
  • ✅ Access control architecture in place

What's Needed:

  • Create "Sheet Music" content type
  • Enable Group content plugin for Sheet Music
  • Configure private file system
  • Build upload form/interface
  • Create music library view
  • Implement retention/deletion system
  • Add notification integration

Estimated Effort: 2-3 weeks (after core features tested and stable)

Why Drupal-Native for Music Management

Advantages over External System Integration:

  • Seamless Access Control: Groups already manage section membership
  • Single Sign-On: No separate login for music system
  • Unified Interface: Same portal for forums, directory, and music
  • Simpler Architecture: No API complexity, no sync issues
  • Better Notifications: Integrated with message system
  • Easier Maintenance: One system to update and secure
  • More Flexible: Easy to add features (comments, ratings, practice notes)

Decision: Build natively in Drupal using Group content (same proven approach as rest of portal)

Technology Stack for Music Management:
• Group content plugin (part of Groups 3.3.5 module)
• Drupal private file system (secure storage)
• Custom content type: sheet_music
• Computed field for retention date calculation
• Cron hooks for automated deletion checks
• Message module for "new music" notifications
• Views for music library displays (by section, by concert)
• Custom module: acwe_music (to be created)
• Extends existing acwe_registration module architecture

Pending Features

Notification System COMPLETE

  • Dynamic registration notification system implemented:
    • ECA (Event-Condition-Action) triggers on new user registration
    • Easy Email module sends notification to all users with registration_approver role
    • Recipient list managed via People View attachment display
    • Template-based email with new user details and approval link
    • Fully tested end-to-end
  • Forum digest emails (daily/weekly summaries) PENDING
  • User notification preferences page (/user/[uid]/notifications) PENDING
Modules Used:
drupal/eca
drupal/easy_email
drupal/symfony_mailer_lite

Email Template System PENDING

  • Easy Email and Symfony Mailer Lite not configured yet
  • Branded email templates needed:
    • Welcome email (currently basic text)
    • New sheet music notification
    • Director announcement
    • Deletion reminder
    • Password reset (styled)
    • Forum digest
  • ACWE branding and styling for all emails
  • Consistent footer with links and unsubscribe
Required Modules:
composer require drupal/symfony_mailer_lite
composer require drupal/easy_email
composer require drupal/mailsystem
drush en symfony_mailer_lite easy_email mailsystem -y

Contact Forms PENDING

  • Contact Storage module not installed
  • "Contact [Name]" button on member profiles
  • Email relay through Drupal (protects member privacy)
  • Rate limiting: 5 messages per hour per user
  • Logging of all contact form submissions
Required Module:
composer require drupal/contact_storage
drush en contact_storage -y

Forum Enhancements PENDING

  • First-post moderation queue
    • New users' first post requires approval
    • After approval, can post freely
  • "Report spam/abuse" button on forum posts
  • Automatic moderation queue after 3 reports
  • Admin dashboard showing moderation queue

Admin Tools PENDING

  • Admin dashboard widget showing pending items:
    • Pending registrations count
    • Posts in moderation queue
    • Spam reports
    • Recent activity stats
  • Activity monitoring and analytics
  • Detailed logging dashboard

Progressive Web App (Optional) OPTIONAL

  • PWA module for mobile app-like experience
  • Offline capability
  • Push notifications
  • Add to home screen

Implementation Priority

High Priority (Before Full Launch):

  • Email template system (branded welcome emails)
  • Notification system for approvers (know when registrations arrive)
  • Contact forms (member-to-member communication)

Medium Priority (First Month):

  • Forum enhancements (first-post moderation, reporting)
  • User notification preferences
  • Admin dashboard widgets

Low Priority (Future Enhancements):

  • Forum digest emails
  • PWA features
  • Advanced analytics

Installed Modules

Core Functionality

  • drupal/group (v3.3.5) - Section-based access control INSTALLED
  • drupal/gnode - Group Node integration INSTALLED
  • drupal/forum - Forum functionality (contrib for D11) INSTALLED

Anti-Spam & Security

  • drupal/recaptcha_v3 - Google reCAPTCHA v3 INSTALLED
  • drupal/honeypot - Hidden field spam trap INSTALLED
  • drupal/antibot - Advanced bot detection INSTALLED
  • drupal/flood_control - Rate limiting INSTALLED

User Management

  • drupal/pathauto - URL alias management INSTALLED
  • drupal/token - Token replacement system INSTALLED
  • drupal/legal - Terms of Use acceptance NOT INSTALLED
  • drupal/field_group - Field organization INSTALLED
  • drupal/contact_storage - Contact form storage INSTALLED

Automation and Notification

  • drupal/eca - Event-Condition-Action automation INSTALLED
  • drupal/message - Notification system INSTALLED
  • drupal/message_notify - Email notifications INSTALLED
  • drupal/symfony_mailer_lite - Email handling INSTALLED
  • drupal/easy_email - Email templates INSTALLED

Admin Tools

  • drupal/admin_toolbar - Enhanced admin menu INSTALLED
  • drupal/gin_toolbar - Enhanced admin theme menu INSTALLED

Custom Modules

  • acwe_registration - Registration & approval workflow INSTALLED

Pending Installation

  • drupal/mailsystem - Mail system configuration NOT USED
  • drupal/pwa - Progressive Web App (optional) PENDING
Modules NOT Used (Drupal 11 Incompatibility)
  • drupal/advanced_forum - No D11 support (using contrib Forum module instead)
  • drupal/mailhandler - Not supported for D11 (reply-to-forum via email not available)
  • drupal/message_subscribe - Not compatible with D11.2.7 (custom subscription logic instead)
  • drupal/subscribe - Not covered by security advisory for D11

Next Steps

Phase 1: Testing with Small Group (Current Phase)

  • Goal: Validate core workflow with 5-10 test users
  • Features Available: Registration → Approval → Groups → Forums → Directory
  • Testing Focus:
    • End-to-end registration workflow
    • Approval process from section leader perspective
    • Forum posting and access
    • Member directory functionality
    • Mobile responsiveness
  • Duration: 1-2 weeks
  • Status: READY TO START

Phase 2: Polish & High-Priority Features

  • Install and configure notification system
  • Set up email template system with ACWE branding
  • Configure approver email notifications (smart timing)
  • Add contact forms for member-to-member communication
  • Test notification workflows
  • Duration: 1-2 weeks
  • Status: PENDING

Phase 3: Broader Rollout

  • Announce to all section leaders
  • Link documentation in navigation
  • Training session for approvers
  • Gradual member onboarding (10-20 at a time)
  • Monitor for issues and user feedback
  • Duration: 2-4 weeks
  • Status: FUTURE

Phase 4: Freelists Migration

  • Parallel operation (both systems active)
  • Cross-post important announcements
  • Encourage migration through announcements
  • After 90% migration: Make Freelists read-only
  • Keep Freelists as historical archive
  • Duration: 3-6 months
  • Status: FUTURE

Immediate Action Items

  1. Set the rehearsal keyword via /admin/config/acwe/rehearsal-keyword
  2. Identify 5-10 test users from ensemble
  3. Brief test users on process (give them the keyword)
  4. Assign 2-3 section leaders the "Registration Approver" role
  5. Test full workflow: Register → Approve → Login → Post in Forum → View Directory
  6. Collect feedback on user experience
  7. Address any bugs or usability issues
  8. Proceed to Phase 2 once core workflow validated

System Architecture Summary

Environment
  • Drupal Version: 11.2.7
  • PHP Version: 8.3.27
  • Theme: acwe2025_bootstrap (custom)
  • Base Path: /var/www/acwe
Key Components
  • Custom Module: acwe_registration (registration & approval logic)
  • Groups: 11 Section Groups (IDs 1-11)
  • Forums: 3 containers, 15 forums total
  • Views: member_directory (table display at /members/directory)
  • Roles: registration_approver (section leaders & board)
  • Field: field_primary_section (list_string, 11 allowed values)
Security Configuration
  • reCAPTCHA v3: Site key 6LfDogcsAAAAABGXPMA6YKSsCSoWVAPAHrWuYdpq
  • Honeypot: 5-second time limit, all forms protected
  • Antibot: 6-second delay before form submission
  • Flood Control: Rate limiting enabled
  • Forum Access: Members-only via hook_node_access()
Data Storage
  • Keyword: Drupal state API (acwe.rehearsal_keyword)
  • Groups: Group module database tables
  • Forums: Taxonomy + Node entities
  • Member Data: User entity + custom field
  • Logs: Drupal logger + database logs