controlbit/reset-code 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

controlbit/reset-code

最新稳定版本:v0.1.1

Composer 安装命令:

composer require controlbit/reset-code

包简介

README 文档

README

The ResetCode Bundle provides a simple, database-backed way to generate and manage temporary reset codes (e.g., verification codes, one-time passwords, password reset tokens). It integrates with Doctrine DBAL and automatically manages schema creation via Doctrine schema events.

Features

🔑 Generate short-lived reset codes with configurable size and TTL.
🗄️ Multiple tables supported, each with its own configuration.
🎭 Aliases for services to easily access different code managers.
⚡ Automatic Doctrine schema updates via event listeners.

Installation

composer require controlbit/reset-code

Put in Bundles file of your Symfony project:

return [
    ControlBit\ResetCode\ResetCodeBundle::class => ['all' => true],
];

Configuration

# config/packages/reset_code.yaml
reset_code:
  enabled: true

  tables:
    - name: "password_reset"
      alias: "user_reset"
      connection_name: "default"
      code_size: 6
      ttl: 300
      timeout_to_clear_oldest_ms: 250
      allow_subject_duplicates: false

    - name: "phone_verification"
      alias: null
      connection_name: "readonly"
      code_size: 4
      ttl: 120
      timeout_to_clear_oldest_ms: 500
      allow_subject_duplicates: true

Usage

Each configured table automatically registers a ResetCodeManager service.
Service IDs are built as:

reset_code.{name}
reset_code.{alias} (if alias is set)
reset_code.default (first configured table, acts as fallback)

You can also type-hint ControlBit\ResetCode\Service\ResetCodeManager in your services — it will resolve to the default manager.

Example of generating a code:

use ControlBit\ResetCode\Service\ResetCodeManager;

class PasswordResetService
{
    public function __construct(private ResetCodeManager $resetCodeManager) {}

    public function requestReset(string $userId): string
    {
        return $this->resetCodeManager->generateCode($userId);
    }
}

If you configured multiple tables:

$phoneResetManager = $container->get('reset_code.phone_verification');
$code = $phoneResetManager->generateCode($phoneNumber);

Database migrations

Generate migration or do schema update:

php bin/console doctrine:schema:update --force

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: proprietary
  • 更新时间: 2025-09-14