kikwik/debounce-bundle

与 https://debounce.io/ 集成,适用于 Symfony 4.4

安装: 30

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

v1.0.6 2023-04-28 16:11 UTC

This package is auto-updated.

Last update: 2024-09-30 01:30:49 UTC


README

symfony 4 的 https://debounce.io/ 集成

安装

打开命令行,进入您的项目目录,然后执行以下命令以下载此包的最新稳定版本

$ composer require kikwik/debounce-bundle

配置

创建 config/packages/kikwik_debounce.yaml 配置文件,设置 api_key 参数,并定义您认为对应用程序安全返回码(默认为 [4,5,7,8])的数组

kikwik_debounce:
    api_key: '%env(DEBOUNCE_API_KEY)%'
    safe_codes: [4,5,7,8]

https://app.debounce.io/api 创建 api 并将其复制到您的 .env 文件中

DEBOUNCE_API_KEY=xxxxxxxxxxx

用法

在控制器中自动装配 Kikwik\DebounceBundle\Service\DebounceInterface 服务并调用 check 方法

namespace App\Controller;

use Kikwik\DebounceBundle\Service\DebounceInterface;

class HomeController extends AbstractController
{
    /**
     * @Route("/debounce/{email}", name="app_debounce")
     */
    public function debounce($email, DebounceInterface $debounce)
    {
        $message = '';
        $result = $debounce->check($email);
        if($result['success']==1)
        {
            switch($result['debounce']['code'])
            {
                case '1':
                    $message = 'Syntax, Not an email, Not safe';
                    break;
                case '2':
                    $message = 'Spam Trap, Spam-trap by ESPs, Not safe';
                    break;
                case '3':
                    $message = 'Disposable, A temporary, disposable address, Not safe';
                    break;
                case '4':
                    $message = 'Accept-All, A domain-wide setting, Maybe safe';
                    break;
                case '5':
                    $message = 'Deliverable, Verified as real address, Safe';
                    break;
                case '6':
                    $message = 'Invalid, Verified as invalid (Bounce), Not safe';
                    break;
                case '7':
                    $message = 'Unknown, The server cannot be reached, Not safe';
                    break;
                case '8':
                    $message = 'Role, Role accounts such as info, support, etc, Maybe safe';
                    break;
            }
        }
        else
        {
            $message = $result['debounce']['error'];
        }
        return new Response($message);
    }
}

或使用 Kikwik\DebounceBundle\Model\DebounceTrait 生成实体中的一些字段

namespace App\Entity;

use Kikwik\DebounceBundle\Model\DebounceTrait;

/**
 * @ORM\Entity(repositoryClass=UserRepository::class)
 * @ORM\Table(name="`user`")
 */
class User implements UserInterface
{
    use DebounceTrait;
}

别忘了进行迁移并更新您的数据库

$ php bin/console make:migration
$ php bin/console doctrine:migrations:migrate

最后,调用 $user->setDebounceResponse($debounce->check($email)); 将 debounce 结果保存到实体中

namespace App\Controller;

use Kikwik\DebounceBundle\Service\DebounceInterface;

class HomeController extends AbstractController
{
    /**
     * @Route("/debounce/{email}", name="app_debounce")
     */
    public function debounce($email, DebounceInterface $debounce, UserRepository $userRepository, EntityManagerInterface $entityManager)
    {
        $user = $userRepository->findOneByEmail($email);
        if(!$user)
        {
            return $this->createNotFoundException();
        }

        $user->setDebounceResponse($debounce->check($email));
        $entityManager->flush();
        
        if($user->getIsDebounceSafe())
        {
            // safe email!!!
            $debounceCode = $user->getDebounceResponseCode();
            // ...  
        }

        return $this->redirectToRoute('app_home');
    }
}

配置开发/测试环境

config/routes/kikwik_debounce.yaml 中添加 dev/test fake_debounce_server 路由

when@dev:
    kikwik_debounce_bundle:
        resource: '@KikwikDebounceBundle/Resources/config/routes_dev_test.xml'
        prefix: '/'

when@test:
    kikwik_debounce_bundle:
        resource: '@KikwikDebounceBundle/Resources/config/routes_dev_test.xml'
        prefix: '/'

config/packages/kikwik_debounce.yaml 中添加 dev/test 配置

when@dev:
    kikwik_debounce:
        api_url: http://your-dev-machine.local/_fake_debounce_server
        api_key: xxxxx
        
when@test:
    kikwik_debounce:
        api_url: http://your-dev-machine.local/_fake_debounce_server
        api_key: xxxxx