<?php

declare(strict_types=1);

namespace Acms\Services\Security;

use Acms\Contracts\ServiceProvider;
use Acms\Services\Container;

/**
 * Security サービスを DI コンテナに登録する
 *
 * Container エイリアス:
 *   - security.csrf              : CsrfTokenManager（CSRF トークン発行・検証、Ajax 許可判定）
 *   - security.post-rate-limiter : PostRateLimiter（POST 連投防止のレート制限）
 *
 * 呼び出し例:
 *   $csrf = App::make('security.csrf');
 *   $csrf->createCsrfToken();
 */
class SecurityServiceProvider extends ServiceProvider
{
    /**
     * register service
     *
     * @param \Acms\Services\Container $container
     *
     * @return void
     */
    public function register(Container $container)
    {
        $container->singleton('security.csrf', function () {
            return new CsrfTokenManager();
        });
        $container->singleton('security.post-rate-limiter', function () {
            return new PostRateLimiter();
        });
    }

    /**
     * initialize service
     *
     * @return void
     */
    public function init()
    {
    }
}
