Access Gate
Access Gate turns pages, downloads, and member areas into controlled Capell surfaces without bespoke approval code per site.
What Access Gate provides
Access Gate turns pages, downloads, and member areas into controlled Capell surfaces without bespoke approval code per site.
Visitors can request access by email or host login, while admins approve, reject, grant, revoke, and audit access from Filament.
The package is built around fail-closed middleware, claim-token lifecycle handling, browser-bound guest access, and cache-safe protected output.
Developers get a package-owned access boundary that can pair with payments, customer portal, public actions, diagnostics, and HTML cache.
Use it when a Capell site needs preview protection, partner areas, paid resources, or membership-style gated content.
Install on your Capell site in three steps.
Each extension ships as a standard Composer package. Purchases unlock account access immediately before you install.
-
01
Require the package
composer require capell-app/access-gate -
02
Register the extension
php artisan capell:extension:enable capell-app-access-gate -
03
Clear schema cache
php artisan capell:admin:clear-schemas-cache
Related extensions
Browse the packages that usually pair with Access Gate or buy the suite it belongs to.
Operations Readiness Suite
Prepare Capell for controlled production work with access gates, publishing workflow, migration tooling, login audit, diagnostics, previews, and frontend authoring.
Package README Install impact, package shape, common pitfalls, and maintenance notes. Open
Access Gate
Gate any Capell page, download, or member area behind login, email approval, guest links, schedules, or paid checkout — with full request, grant, and audit management in the admin.
At A Glance
- Package:
capell-app/access-gate - Namespace:
Capell\AccessGate\ - Surfaces: admin, frontend, console
- Service providers:
packages/access-gate/src/Providers/AccessGateServiceProvider.php - Capell dependencies:
capell-app/core - Third-party dependencies:
laravel/framework,lorisleiva/laravel-actions
Why It Helps Your Capell Workflow
- Protect gated pages, downloads, or member-only areas without building a one-off approval system for each site.
- Keeps request, grant, claim-token, and approval state in package tables so operators can audit access decisions.
- Works well with public submission flows because access requests can stay separate from page rendering and cacheable public HTML.
Best Used With
What It Adds
- Access gating foundations for Capell CMS.
- Admin resources:
AccessAreaResource,AccessGateEventResource,BrowserTokenResource,ClaimTokenResource,GrantResource,RegistrationResource. - Package setup or maintenance commands.
- Public request, claim, status, and logout endpoints for gated access flows.
Code Map
| Area | Path | Purpose |
|---|---|---|
| Actions | packages/access-gate/src/Actions |
Domain operations. Test these directly where possible. |
| Data | packages/access-gate/src/Data |
Structured payloads, form state, view models, and integration data. |
| Enums | packages/access-gate/src/Enums |
Persisted states and Filament option values. |
| Models | packages/access-gate/src/Models |
Eloquent records owned by the package. |
| Filament | packages/access-gate/src/Filament |
Admin resources, pages, widgets, and settings UI. |
| HTTP | packages/access-gate/src/Http |
Controllers, middleware, and request handling. |
| Providers | packages/access-gate/src/Providers |
Registration, extension hooks, routes, migrations, and resources. |
| Resources | packages/access-gate/resources |
Views, translations, assets, and package resources. |
| Routes | packages/access-gate/routes |
Route files loaded by the service provider. |
| Config | packages/access-gate/config |
Package configuration and publishable config. |
| Database | packages/access-gate/database |
Migrations, seeders, and settings migrations. |
| Tests | packages/access-gate/tests |
Package-level Pest coverage. |
Admin Surface
- Resources:
AccessAreaResource,AccessGateEventResource,BrowserTokenResource,ClaimTokenResource,GrantResource,RegistrationResource. - Pages:
CreateAccessArea,EditAccessArea,ListAccessAreas,ListAccessGateEvents,ListBrowserTokens,ListClaimTokens,ListGrants,ListRegistrations.
Runtime Surface
- Controllers:
AccessGateStatusController,ClaimAccessGateTokenController,LogoutAccessGateController,ShowAccessRequestController,StoreAccessRequestController. - Routes:
packages/access-gate/routes/web.php.
Commands
capell:access-gate-doctor(packages/access-gate/src/Console/Commands/AccessGateDoctorCommand.php)capell:access-gate-install(packages/access-gate/src/Console/Commands/AccessGateInstallCommand.php)capell:access-gate-setup(packages/access-gate/src/Console/Commands/AccessGateSetupCommand.php)
Data And Persistence
- Models:
AccessGateModel,Area,BrowserToken,ClaimToken,Event,Grant,Registration. - Migrations:
2026_05_10_190838_01_create_access_gate_areas_table.php,2026_05_10_190838_02_create_access_gate_registrations_table.php,2026_05_10_190838_03_create_access_gate_grants_table.php,2026_05_10_190838_04_create_access_gate_claim_tokens_table.php,2026_05_10_190838_05_create_access_gate_browser_tokens_table.php,2026_05_10_190838_06_create_access_gate_events_table.php. - Config:
packages/access-gate/config/access-gate.php. - Data objects live in
src/Data/; use them for payloads, form state, and view models.
Extension Points
- Contracts:
AccessRequestMethod,RegistrationField. - Events:
RegistrationApproved. - Register Capell extension points, routes, migrations, settings, render hooks, and resources from service providers.
Install And Setup
- Install with
composer require capell-app/access-gatein the host Capell application. - Run migrations through the host application package install flow.
- In this repository, verify package changes with
vendor/bin/pest; do not usephp artisan.
Docs
Testing
Run package tests from the repository root:
vendor/bin/pest packages/access-gate/tests --configuration=phpunit.xml
Maintenance Notes
- Treat public routes as untrusted input and keep validation, permission checks, and side effects inside actions or dedicated services.
- Put behaviour changes in
src/Actions/; UI classes, commands, and controllers should call actions instead of owning domain logic. - Use package
Dataclasses at boundaries instead of passing anonymous arrays between layers. - Use backed enums for persisted values and enum labels for Filament options.
Overview A shorter package overview for marketplace and account review. Open
Access Gate
Status: Available, schema-owning · Kind: package · Tier: premium · Bundle: operations · Contexts: admin, frontend, console · Product group: Capell Operations
Access Gate adds gated access areas, request intake, claim-token flows, active grants, browser tokens, and audit events for protected Capell surfaces.
What This Package Adds
- Filament resources for access areas, registrations, grants, claim tokens, browser tokens, and access events.
- Public request, claim, logout, and optional status routes under the configured access route prefix.
- Access-gate middleware and frontend rule conditions for page/layout gating.
- Configurable registration fields, identity methods, approval strategies, token policies, and rate limits.
- Install, setup, and doctor commands for host application maintenance.
Install Flow
- Composer package:
capell-app/access-gate - Hard dependencies:
capell-app/core - Optional dependencies:
capell-app/public-actions - Run host migrations through the package install flow, then run
capell:extension-install capell-app/access-gate. - Run
capell:access-gate-doctorin the host app to verify middleware order, route registration, and package health.
Admin Surfaces
AccessAreaResource: list, create, and edit access areas.RegistrationResource: list requests and run approve, reject, resend claim, expire, and grant actions.GrantResource: list grants and revoke active grants.ClaimTokenResource: list claim-token status.BrowserTokenResource: list browser-token status and revoke active browser tokens.AccessGateEventResource: list audit events.
Frontend Surfaces
GET /access/request/{area}: access request form.POST /access/request/{area}: access request submission endpoint.GET /access/claim/{token}: claim-token endpoint.POST /access/logout/{area}: area logout endpoint.- Optional
GET /access/status/{area}endpoint when enabled in config. - Blade views render the request form, blocked message, and reusable request CTA.
Anonymous and non-admin public output must stay free of authoring markers, editor URLs, model IDs, and admin-only labels.
Screenshot Plan
- Access areas admin index.
- Create/edit access area form.
- Registrations admin index with approval actions.
- Grants admin index with revoke action.
- Claim tokens admin index.
- Browser tokens admin index.
- Access events admin index.
- Public access request form.
- Public gated message.
- Public request CTA component.
Known Risks
- The batch harness Composer install discovered the package and registered public routes, but
php artisan migrate --gracefulreported no migrations to run beforecapell:extension-install. Verify the package install flow publishes or runs all access-gate migrations in a fresh host app. - Screenshots need seeded access areas, registrations, grants, and tokens before final publication.
Feature Suggestions
- Add an admin “Access Area health” panel that previews request URL, status endpoint availability, registration policy, and middleware status for each area.
- Add a bulk registration triage workflow with filters for area, status, requested host, and one-click approve/reject notes.
- Add a safe public preview command that renders the request form and blocked message for a selected area without requiring a live protected page.
Downloads and releases
- Total downloads
- 0
- Last downloaded
- No downloads yet
Version history
1 release-
v1.0.0May 3, 2026
No approved reviews yet. Reviews from eligible customers appear here after marketplace review.
Payment and licences
How marketplace purchases work
Capell keeps payment, account ownership, package receipts, and install access separate so a failed step can be recovered without guessing where the licence lives.
Who takes the payment?
Paid marketplace checkouts are sent to Stripe. Capell does not collect card details inside your CMS; Stripe confirms the payment and Capell activates the matching marketplace licence for the Capell account that approved the install.
How is the licence attached?
The licence is created against the signed-in Capell account first. When the hosted install flow returns to your CMS, Capell binds that licence to the requesting site and sends back the install authorization needed to continue.
Where does Anystack fit?
Anystack can be the package commerce and distribution surface for marketplace products. Capell still records the account licence and installed receipt, then relays later Anystack product or licence events only to connected sites that already have the package installed.
What happens if checkout is cancelled or expires?
No licence is created until Stripe confirms payment. If checkout is cancelled, start it again from the same review screen. If the quote expires, return to the marketplace in your CMS and start a fresh install flow so pricing and package metadata are recalculated.
What should I do if something looks wrong?
Keep the support reference shown on the review screen or receipt, then contact support before retrying with a different account. For missing licences, failed returns, or Anystack receipt mismatches, Capell can reconcile the Stripe session, Capell account, package receipt, and connected site from that reference.