VOOZH about

URL: https://deepwiki.com/auth0/wordpress/3.4-configuration-management

⇱ Configuration Management | auth0/wordpress | DeepWiki


Loading...
Menu

Configuration Management

Purpose and Scope

This document explains how the Auth0 WordPress plugin manages its configuration settings through the WordPress admin interface. The Configuration system handles the declaration, rendering, validation, and persistence of all plugin settings.

For information about the specific configuration options available to users, see Configuration Options. For details about how configuration is consumed during plugin initialization, see Plugin Initialization and Bootstrap.

Sources: src/Actions/Configuration.php1-1700


Architectural Overview

The Configuration system uses a declarative architecture where all admin pages, settings sections, and individual fields are defined in a single data structure (PAGES constant), then processed by registration methods that integrate with WordPress's Settings API. This approach separates configuration structure from rendering logic and validation behavior.

Core Components

ComponentLocationPurpose
Configuration Action Classsrc/Actions/Configuration.php16Main class orchestrating configuration management
PAGES Constantsrc/Actions/Configuration.php21-438Declarative definition of all configuration structure
onMenu() Methodsrc/Actions/Configuration.php477-535Registers admin menu pages
onSetup() Methodsrc/Actions/Configuration.php537-686Registers settings with WordPress Settings API
onUpdate*() Methodssrc/Actions/Configuration.php688Validation and sanitization callbacks
Sanitize Utilitysrc/Utilities/Sanitize.php1-160Input sanitization functions
Plugin::importConfiguration()src/Plugin.php274-329Reads configuration and builds SDK config

Sources: src/Actions/Configuration.php1-1700 src/Plugin.php1-330


Configuration Lifecycle


Title: Configuration System Lifecycle from Declaration to SDK Initialization

Sources: src/Actions/Configuration.php537-686 src/Plugin.php274-329


The PAGES Constant Structure

The PAGES constant src/Actions/Configuration.php21-438 is a multi-dimensional array that declaratively defines the entire configuration interface structure. Each page contains sections, and each section contains fields with their properties.


Title: PAGES Constant Hierarchical Structure

Sources: src/Actions/Configuration.php21-438


Field Definition Schema

Each field in the PAGES structure follows a consistent schema:


Title: Field Configuration Properties

PropertyTypePurposeExample
titlestringDisplay label for field"Client ID"
typestringHTML input type"text", "password", "boolean"
sanitizerstringSanitization method name"string", "domain"
descriptionstring or arrayHelp text or callback['getOptionDescription', 'enable']
selectarray or stringDropdown options or method name['false' => 'Disabled', 'true' => 'Enabled']
enabledstringMethod returning boolean for enable condition"isPluginReady"

Sources: src/Actions/Configuration.php21-438


Admin Menu Registration

The onMenu() method src/Actions/Configuration.php477-535 registers the Auth0 menu structure in the WordPress admin sidebar using WordPress's add_menu_page() and add_submenu_page() functions.


Title: Admin Menu Registration and Callback Flow

The menu registration uses action callbacks that trigger custom actions (auth0_ui_*), which are then handled by corresponding render methods in the Configuration class. Priority values can be customized using constants like AUTH0_ADMIN_MENU_POSITION.

Sources: src/Actions/Configuration.php477-535 src/Actions/Configuration.php468-475


Settings Registration Process

The onSetup() method src/Actions/Configuration.php537-686 processes the PAGES constant and registers everything with WordPress's Settings API during the admin_init hook.


Title: Settings Registration Algorithm Flow

Dynamic Callback Resolution

The system supports dynamic callbacks for descriptions, placeholders, and select options src/Actions/Configuration.php610-640:


Title: Dynamic Callback Resolution Pattern

For example, 'description' => ['getOptionDescription', 'enable'] calls $this->getOptionDescription('enable') to generate dynamic help text.

Sources: src/Actions/Configuration.php537-686


Input Validation and Sanitization

Each section has a corresponding onUpdate*() method that validates and sanitizes user input before storage. These methods are registered as sanitize_callback in the Settings API src/Actions/Configuration.php564


Title: Input Validation and Sanitization Pipeline

Sanitization Methods

The Sanitize utility class src/Utilities/Sanitize.php1-160 provides specialized methods:

MethodPurposeExample Use
string()Basic text sanitizationClient ID, Client Secret
domain()URL/domain validationAuth0 Domain, Custom Domain
boolean()Normalize to 'true'/'false'Enable switches
integer()Range-bounded integersTTL values, expiration times
alphanumeric()Whitelist charactersAPI audiences, organizations
textarea()Multi-line textOrganizations list
arrayUnique()Deduplicate arraysAudience lists

Validation Example: Client Advanced Options

src/Actions/Configuration.php786-827 demonstrates complex validation:


Title: Advanced Validation for API Audiences and Organizations

Sources: src/Actions/Configuration.php688-1700 src/Utilities/Sanitize.php1-160


Storage in wp_options

Configuration data is stored in WordPress's wp_options table using prefixed option names. Each section becomes a separate option with an array of field values.

Option Naming Convention

SectionOption NameExample Keys
accountsauth0_accountsmatching, missing, default_role, passwordless
authenticationauth0_authenticationpair_sessions, allow_fallback, fallback_secret
backchannel_logoutauth0_backchannel_logoutenabled, secret, ttl
clientauth0_clientid, secret, domain
client_advancedauth0_client_advancedcustom_domain, apis, organizations
cookiesauth0_cookiessecret, domain, path, secure, samesite, ttl
sessionsauth0_sessionsmethod, session_ttl, rolling_sessions, refresh_tokens
stateauth0_stateenable
syncauth0_syncdatabase, schedule, push
sync_eventsauth0_sync_eventsuser_creation, user_deletion, user_updates
tokensauth0_tokenscaching

Storage Format

Each option is stored as a serialized PHP array:


Sources: src/Actions/Configuration.php21-438 src/Actions/Configuration.php537-686


Configuration Import and SDK Initialization

The Plugin::importConfiguration() method src/Plugin.php274-329 reads stored configuration from the database and builds an SdkConfiguration object for the Auth0 SDK.


Title: Configuration Import and SDK Initialization Sequence

Configuration Mapping

The following table maps configuration options to SdkConfiguration parameters:

Option PathSdkConfiguration ParameterProcessing
client.domaindomainDirect string
client.idclientIdDirect string
client.secretclientSecretDirect string
client_advanced.custom_domaincustomDomainDirect string or NULL
client_advanced.apisaudienceSpace-separated → array
client_advanced.organizationsorganizationSpace-separated → array
cookies.secretcookieSecretDirect string
cookies.domaincookieDomainDirect string or NULL
cookies.pathcookiePathDefault: /
cookies.ttlcookieExpiresInteger
cookies.securecookieSecureBoolean or is_ssl()
cookies.samesitecookieSameSiteString

Special Cases

WP_Cron Context src/Plugin.php285-298: When DOING_CRON is defined, the SDK is initialized with STRATEGY_NONE to avoid session handling during background tasks.

Caching src/Plugin.php322-326: If token caching is not disabled, a WpObjectCachePool instance is configured for JWKS and back-channel logout token caching.

Sources: src/Plugin.php274-329 src/Plugin.php113-159


Reading Configuration Values

The Plugin class provides helper methods for reading configuration:


Title: Configuration Value Accessor Methods

Usage Examples

Throughout the codebase, configuration values are accessed using these methods:


Sources: src/Plugin.php113-159 src/Actions/Authentication.php1-726 src/Actions/Sync.php1-283


Page Constants and Registry

The Configuration class defines constants for page identification and a registry for hook mappings:


Title: Configuration Class Constants and Hook Registry

The registry array src/Actions/Configuration.php468-475 maps WordPress hooks to Configuration class methods, which are automatically registered when the plugin initializes via Base::register() src/Actions/Base.php89-96

Sources: src/Actions/Configuration.php440-475 src/Actions/Base.php1-122


Extensibility and Customization

Priority Constants

The Configuration system supports customization through environment-defined constants for hook priorities src/Actions/Base.php57-70:


The getPriority() method checks for these constants before using defaults.

Conditional Field Enabling

Fields can be conditionally enabled/disabled based on plugin state src/Actions/Configuration.php630-634:

  • 'enabled' => 'isPluginReady': Field only enabled when plugin has minimum viable configuration
  • Methods like isPluginReady() src/Actions/Base.php83-87 check Plugin::isReady() which validates that Client ID, Client Secret, Domain, and Cookie Secret are all configured

Dynamic Option Generation

Some fields use method callbacks to generate options dynamically src/Actions/Configuration.php636-640:

  • 'select' => 'getRoleOptions': Calls method to fetch WordPress roles for the default role dropdown
  • 'description' => ['getOptionDescription', 'enable']: Generates context-sensitive help text

Sources: src/Actions/Configuration.php537-686 src/Actions/Base.php57-87


Relationship to Other Systems


Title: Configuration System Relationships

The Configuration system sits at the foundation of the plugin architecture:

  1. Configuration Action manages the admin UI and stores settings to wp_options
  2. Plugin class reads those settings and builds SdkConfiguration
  3. Auth0 SDK is initialized with the configuration
  4. Other action classes (Authentication, Sync) access configuration through Plugin methods and use the initialized SDK

Sources: src/Actions/Configuration.php1-1700 src/Plugin.php1-330 src/Actions/Authentication.php1-726 src/Actions/Sync.php1-283