04 Membership System
**Site relevance:** Anti-Christ.org
**Memory type:** docs archive
**Source path:** Wiki.FFTAC.org/raw/system-archives/anti-christ.org/docs-archive/2026-05-10/docs/04-membership-system.md
**Size:** 4.7 KB
Summary
The site uses a front-end membership system built on native WordPress users.
Source Headings
- Membership System
- What It Is
- Main Files
- Provisioned Pages
- Admin Settings
- Portal Views
- Request Handlers
- Security Controls
- Access Control
- Where To Change Things
- Practical Notes
Source Preview
This source file is short enough to preview directly on its source-memory page.
# Membership System
## What It Is
The site uses a front-end membership system built on native WordPress users.
It provides:
- membership portal
- login
- registration
- password recovery
- profile update
- logout
- protected members-only page
- member workflow guidance tied back to the public participation system
- account gating for the live AI Engine console
- signed-in AI output sharing into user-authored drafts, journal-review posts, or public profile posts
The current system is not a paid membership, plan, or subscription engine. Paid tiers would be a new layer.
## Main Files
- logic:
`wp-content/plugins/fftac-membership/inc/membership.php`
- portal template:
`wp-content/themes/antichrist-engine/template-membership-portal.php`
- protected area template:
`wp-content/themes/antichrist-engine/template-members-area.php`
- shared form security helpers:
`wp-content/plugins/fftac-foundation-core/inc/foundation.php`
- AI account-gate and output sharing helpers:
`wp-content/plugins/fftac-ai-engine/inc/ai-engine.php`
## Provisioned Pages
The `FFTAC Membership` plugin creates these pages automatically if needed:
- `membership`:
Membership Portal
- `members-area`:
Members Area
Provisioning lives in `antichrist_engine_membership_ensure_pages()`.
## Admin Settings
Use `Settings -> FFTAC Membership` to choose replacement WordPress pages for:
- the Membership Portal
- the Members Area
The plugin keeps the selected pages on the correct templates and uses those IDs for redirects and protected-area access control.
## Portal Views
The public portal uses the `view` query parameter.
Supported guest views:
- `login`
- `register`
- `recover`
Signed-in users see account/profile and workflow surfaces instead of the guest forms.
The current view is resolved by `antichrist_engine_membership_get_current_view()`.
## Request Handlers
Handlers in `wp-content/plugins/fftac-membership/inc/membership.php`:
- `antichrist_engine_membership_handle_login()`
- `antichrist_engine_membership_handle_register()`
- `antichrist_engine_membership_handle_recovery()`
- `antichrist_engine_membership_handle_profile_update()`
- `antichrist_engine_membership_handle_logout()`
These post through WordPress `admin-post.php`.
## Security Controls
Membership forms use WordPress primitives plus shared Foundation Core security helpers:
- nonces for login, registration, recovery, profile update, and logout
- safe redirect normalization before honoring `redirect_to`
- scalar-only POST reads so array payloads are ignored
- server-side length caps for public fields
- honeypot and timestamp fields on unauthenticated forms
- transient-backed rate limits for login, registration, and recovery
- logged-in and nonce gates for profile updates
- dashboard access restrictions for non-admin members
When adding new membership forms, keep nonce checks, `antichrist_engine_security_print_form_fields()`, scalar reads, length caps, and rate limits together.
## Access Control
Access control lives in code:
- guests are redirected away from the protected Members Area
- guests cannot use the live AI Engine form; they see a sign-in/register gate
- non-admin members are kept out of the WordPress dashboard
- login redirects can be normalized back into the front-end flow
- admin bar visibility is controlled for normal members
Main functions:
- `antichrist_engine_membership_protect_members_pages()`
- `antichrist_engine_membership_limit_dashboard_access()`
- `antichrist_engine_membership_login_redirect()`
- `antichrist_engine_membership_show_admin_bar()`
## Where To Change Things
- login, register, recovery, redirects, profile updates, logout, or protection:
`wp-content/plugins/fftac-membership/inc/membership.php`
- portal copy and layout:
`template-membership-portal.php`
- protected members-page shell:
`template-members-area.php`
- membership styling:
`assets/css/theme.css`
- form feedback, password reveal, character counters, and loading labels:
`assets/js/theme.js`
## Practical Notes
- The system uses WordPress users, not a separate membership database.
- The protected page body can still be edited in WordPress admin.
- Replacement membership pages can be selected in `Settings -> FFTAC Membership`.
- Program intake is public and separate from membership. It stores records in `fftac_program_interest`.
- Membership should read as a protected workflow layer for serious follow-up, not as a mystery tier or public social-proof metric.
- AI access is account-gated for quota, abuse control, personal API key storage, and conversation safety; do not reopen anonymous AI prompt submission without updating [11-user-ai-architecture.md](11-user-ai-architecture.md).