kikwik / debounce-bundle
与 https://debounce.io/ 集成,适用于 Symfony 4.4
v1.0.6
2023-04-28 16:11 UTC
Requires
- php: ^7.1.3
- doctrine/orm: ^2.7
- symfony/framework-bundle: ^4.4|^5.0
- symfony/http-client: ^4.4|^5.0
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