Cross-Domain Authentication
The Extra Chill Artist Platform uses WordPress multisite native authentication for cross-domain user sessions.
Authentication Architecture
Primary: WordPress Multisite Authentication
Users remain authenticated across all .extrachill.com subdomains automatically through WordPress multisite’s native user session system. No custom session management required.
Coverage:
- Main site:
extrachill.com - Artist site:
artist.extrachill.com
Secondary: extrachill.link Domain Integration
The extrachill.link domain provides public access to artist link pages while maintaining cross-domain authentication for management operations.
Architecture:
- Backend: extrachill.link maps to artist.extrachill.com (blog ID 4)
- Frontend URLs: Link pages display as
extrachill.link/{artist-slug} - Authentication: WordPress cookies configured with
SameSite=None; Secureattributes for cross-domain access - Cookie Configuration: Managed by extrachill-users plugin (extrachill-users/inc/auth/extrachill-link-auth.php)
URL Parameter Detection:
- Join flow entry:
extrachill.link/join→ redirects toartist.extrachill.com/login/?from_join=truevia sunrise.php - Detected via
from_joinparameter in URL - Post-registration redirect: tracked via
join_flow_completion_{user_id}transients
Edit Icon System (CORS Authentication)
Client-side permission checking with cross-domain REST API requests to artist.extrachill.com:
Files:
- REST API Enqueuer:
inc/link-pages/live/ajax/edit-permission.php - JavaScript:
inc/link-pages/live/assets/js/link-page-edit-button.js - Styles:
assets/css/extrch-links.css(lines 243-264)
Flow:
- User views link page on
extrachill.link/{artist-slug} - JavaScript makes CORS request to
artist.extrachill.com/wp-json/extrachill/v1/edit-permission - Server validates user permission via
ec_can_manage_artist() - Edit button rendered if permission granted (JavaScript-only, no server HTML)
CORS Headers:
Access-Control-Allow-Origin: https://extrachill.link
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Content-Type
Security:
- Uses WordPress authentication cookies (SameSite=None; Secure)
- Permission validation via
ec_can_manage_artist()system - Credentials included via
fetch()withcredentials: 'include' - Hooked via
extrch_link_page_minimal_headaction (priority 10)