FastComments.com

Add Comments to Your Laravel App

์ด๊ฒƒ์€ FastComments์˜ ๊ณต์‹ Laravel ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ ๋Œ“๊ธ€, ์ฑ„ํŒ… ๋“ฑ ๊ธฐ๋Šฅ์„ Laravel ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์ €์žฅ์†Œ

GitHub์—์„œ ๋ณด๊ธฐ


์š”๊ตฌ ์‚ฌํ•ญ Internal Link


  • PHP 8.1+
  • Laravel 10, 11, ๋˜๋Š” 12

์„ค์น˜ Internal Link

composer require fastcomments/laravel

๊ตฌ์„ฑ ํŒŒ์ผ์„ ๊ฒŒ์‹œํ•˜์„ธ์š”:

php artisan vendor:publish --tag=fastcomments-config

์ž๊ฒฉ ์ฆ๋ช…์„ .env์— ์ถ”๊ฐ€ํ•˜์„ธ์š”:

FASTCOMMENTS_TENANT_ID=your-tenant-id
FASTCOMMENTS_API_KEY=your-api-key

EU ๋ฆฌ์ „์˜ ๊ฒฝ์šฐ:

FASTCOMMENTS_REGION=eu

Blade ์ปดํฌ๋„ŒํŠธ Internal Link

๋Œ“๊ธ€ ์œ„์ ฏ

<x-fastcomments />

{{-- ์˜ต์…˜ ํฌํ•จ --}}
<x-fastcomments
    url-id="my-page-id"
    url="https://example.com/my-page"
    locale="en_us"
    :has-dark-background="true"
    default-sort-direction="MR"
/>

๋ผ์ด๋ธŒ ์ฑ„ํŒ…

<x-fastcomments-live-chat url-id="chat-room-1" />

๋Œ“๊ธ€ ์ˆ˜

<x-fastcomments-comment-count url-id="my-page-id" />
<x-fastcomments-comment-count url-id="my-page-id" :number-only="true" />

SSO (์‹ฑ๊ธ€ ์‚ฌ์ธ์˜จ) Internal Link


๋‹น์‹ ์˜ .env์—์„œ SSO๋ฅผ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”:

FASTCOMMENTS_API_KEY=your-api-key
FASTCOMMENTS_SSO_ENABLED=true
FASTCOMMENTS_SSO_MODE=secure

๋ณด์•ˆ SSO์—๋Š” API ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค โ€” SSO ํŽ˜์ด๋กœ๋“œ๋ฅผ ์„œ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ๊ธฐ๋ฐ˜ ๋งคํ•‘

config/fastcomments.php์—์„œ FastComments ํ•„๋“œ๋ฅผ User ๋ชจ๋ธ ์†์„ฑ์— ๋งคํ•‘ํ•˜์„ธ์š”:

'sso' => [
    'enabled' => true,
    'mode' => 'secure',
    'user_map' => [
        'id' => 'id',
        'email' => 'email',
        'username' => 'name',
        'avatar' => 'profile.avatar_url', // ๋„ํŠธ ํ‘œ๊ธฐ๋ฒ• ์ง€์›
    ],
    'is_admin' => fn ($user) => $user->hasRole('admin'),
    'is_moderator' => fn ($user) => $user->hasRole('moderator'),
],

์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ๋งคํ•‘

๋” ์„ธ๋ฐ€ํ•œ ์ œ์–ด๋ฅผ ์œ„ํ•ด User ๋ชจ๋ธ์— MapsToFastCommentsUser ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”:

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'),
        ];
    }
}

์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉด ๊ตฌ์„ฑ ๊ธฐ๋ฐ˜ ๋งคํ•‘๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

Blade์—์„œ์˜ SSO

SSO๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด <x-fastcomments /> ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ SSO ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

API ์•ก์„ธ์Šค Internal Link

ํผ์‚ฌ๋“œ(Facade)๋ฅผ ํ†ตํ•œ ์‚ฌ์šฉ

use FastComments\Laravel\Facades\FastComments;

// ๊ด€๋ฆฌ์ž API (API ํ‚ค ํ•„์š”)
$comments = FastComments::admin()->getComments('tenant-id');

// ๊ณต๊ฐœ API
$comments = FastComments::publicApi()->getCommentsPublic('tenant-id', 'url-id');

// SSO
$ssoPayload = FastComments::sso()->forWidget();
$token = FastComments::sso()->tokenFor($user);

์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection)์„ ํ†ตํ•œ ์‚ฌ์šฉ

use FastComments\Laravel\FastCommentsManager;

class CommentController extends Controller
{
    public function index(FastCommentsManager $fc)
    {
        $comments = $fc->admin()->getComments($fc->tenantId());
        // ...
    }
}

SDK์— ์ง์ ‘ ์ ‘๊ทผ

use FastComments\Client\Api\DefaultApi;

class CommentController extends Controller
{
    public function index(DefaultApi $api)
    {
        $comments = $api->getComments('tenant-id');
        // ...
    }
}

์„ค์ • ์ฐธ์กฐ Internal Link


ํ‚ค ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
tenant_id FASTCOMMENTS_TENANT_ID '' ๊ท€ํ•˜์˜ FastComments ํ…Œ๋„ŒํŠธ ID
api_key FASTCOMMENTS_API_KEY '' ์„œ๋ฒ„ ์ธก ํ˜ธ์ถœ์šฉ API ํ‚ค
region FASTCOMMENTS_REGION null null (๋ฏธ๊ตญ) ๋˜๋Š” 'eu'
sso.enabled FASTCOMMENTS_SSO_ENABLED false SSO ํ™œ์„ฑํ™”
sso.mode FASTCOMMENTS_SSO_MODE 'secure' 'secure' ๋˜๋Š” 'simple'
sso.login_url FASTCOMMENTS_SSO_LOGIN_URL null ๋กœ๊ทธ์ธ URL (Laravel ๋ผ์šฐํŠธ๋กœ ๋Œ€์ฒด๋จ)
sso.logout_url FASTCOMMENTS_SSO_LOGOUT_URL null ๋กœ๊ทธ์•„์›ƒ URL (Laravel ๋ผ์šฐํŠธ๋กœ ๋Œ€์ฒด๋จ)
widget_defaults โ€” [] ๊ธฐ๋ณธ ์œ„์ ฏ ๊ตฌ์„ฑ ์˜ต์…˜
---

๋ทฐ ์‚ฌ์šฉ์žํ™” Internal Link


Blade ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๋ ค๋ฉด:

php artisan vendor:publish --tag=fastcomments-views

ํ…œํ”Œ๋ฆฟ์€ resources/views/vendor/fastcomments/์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”?

Laravel ํŒจํ‚ค์ง€์— ๊ด€ํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์งˆ๋ฌธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ์„ ์ด์šฉํ•ด ์ฃผ์„ธ์š”:

๊ธฐ์—ฌ

๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๊ธฐ์—ฌ ์ง€์นจ์€ GitHub ์ €์žฅ์†Œ๋ฅผ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.