fastcomments / laravel
Laravel integration for FastComments — Blade components, SSO, and API access
Requires
- php: ^8.1
- fastcomments/fastcomments-php: ^3.0
- fastcomments/sso: *
- illuminate/contracts: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- illuminate/view: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
A Laravel package that wraps the FastComments PHP SDK and SSO library, providing Blade components, SSO integration, and full API access.
AI coding agents
Give your coding agent the FastComments context it needs - widgets, configuration, Secure SSO, the REST API, and the SDKs:
npx skills add fastcomments/skills
Works with Claude Code, Codex, Cursor, Copilot, Gemini, and every other agent the skills CLI supports.
Requirements
- PHP 8.1+
- Laravel 10, 11, or 12
Installation
composer require fastcomments/laravel
Publish the configuration file:
php artisan vendor:publish --tag=fastcomments-config
Add your credentials to .env:
FASTCOMMENTS_TENANT_ID=your-tenant-id FASTCOMMENTS_API_KEY=your-api-key
For EU region:
FASTCOMMENTS_REGION=eu
Blade Components
Comment Widget
<x-fastcomments /> {{-- With options --}} <x-fastcomments url-id="my-page-id" url="https://example.com/my-page" locale="en_us" :has-dark-background="true" default-sort-direction="MR" />
Live Chat
<x-fastcomments-live-chat url-id="chat-room-1" />
Comment Count
<x-fastcomments-comment-count url-id="my-page-id" /> <x-fastcomments-comment-count url-id="my-page-id" :number-only="true" />
SSO
Enable SSO in your .env:
FASTCOMMENTS_API_KEY=your-api-key FASTCOMMENTS_SSO_ENABLED=true FASTCOMMENTS_SSO_MODE=secure
The API key is required for secure SSO — it is used to sign the SSO payload.
Config-Based Mapping
In config/fastcomments.php, map FastComments fields to your User model attributes:
'sso' => [ 'enabled' => true, 'mode' => 'secure', 'user_map' => [ 'id' => 'id', 'email' => 'email', 'username' => 'name', 'avatar' => 'profile.avatar_url', // dot notation supported ], 'is_admin' => fn ($user) => $user->hasRole('admin'), 'is_moderator' => fn ($user) => $user->hasRole('moderator'), ],
Interface-Based Mapping
For more control, implement the MapsToFastCommentsUser interface on your User model:
use FastComments\Laravel\SSO\Contracts\MapsToFastCommentsUser; class User extends Authenticatable implements MapsToFastCommentsUser { public function toFastCommentsUserData(): array { return [ 'id' => (string) $this->id, 'email' => $this->email, 'username' => $this->display_name, 'avatar' => $this->avatar_url, 'is_admin' => $this->hasRole('admin'), ]; } }
When the interface is implemented, it takes precedence over config-based mapping.
SSO in Blade
When SSO is enabled, the <x-fastcomments /> component automatically injects SSO data for the authenticated user.
API Access
Via Facade
use FastComments\Laravel\Facades\FastComments; // Admin API (requires API key) $comments = FastComments::admin()->getComments('tenant-id'); // Public API $comments = FastComments::publicApi()->getCommentsPublic('tenant-id', 'url-id'); // SSO $ssoPayload = FastComments::sso()->forWidget(); $token = FastComments::sso()->tokenFor($user);
Via Dependency Injection
use FastComments\Laravel\FastCommentsManager; class CommentController extends Controller { public function index(FastCommentsManager $fc) { $comments = $fc->admin()->getComments($fc->tenantId()); // ... } }
Direct SDK Access
use FastComments\Client\Api\DefaultApi; class CommentController extends Controller { public function index(DefaultApi $api) { $comments = $api->getComments('tenant-id'); // ... } }
Configuration Reference
| Key | Env Variable | Default | Description |
|---|---|---|---|
tenant_id |
FASTCOMMENTS_TENANT_ID |
'' |
Your FastComments tenant ID |
api_key |
FASTCOMMENTS_API_KEY |
'' |
API key for server-side calls |
region |
FASTCOMMENTS_REGION |
null |
null (US) or 'eu' |
sso.enabled |
FASTCOMMENTS_SSO_ENABLED |
false |
Enable SSO |
sso.mode |
FASTCOMMENTS_SSO_MODE |
'secure' |
'secure' or 'simple' |
sso.login_url |
FASTCOMMENTS_SSO_LOGIN_URL |
null |
Login URL (falls back to Laravel route) |
sso.logout_url |
FASTCOMMENTS_SSO_LOGOUT_URL |
null |
Logout URL (falls back to Laravel route) |
widget_defaults |
— | [] |
Default widget config options |
Customizing Views
To customize the Blade template:
php artisan vendor:publish --tag=fastcomments-views
Templates will be published to resources/views/vendor/fastcomments/.
License
MIT