Skip to content
wiki.fftac.org

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).