lucenarenato/laravel-email-domain-blacklist

为Laravel添加邮件域名黑名单验证规则的包

v1.0.1 2023-04-26 20:51 UTC

This package is auto-updated.

Last update: 2024-09-26 23:48:06 UTC


README

Build Status Maintainability Test Coverage Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads composer.lock FOSSA Status

验证电子邮件输入是否未被指定域名列入黑名单。

用法

blacklist添加到验证规则字符串中。

  public function store(Request $request) {

      $this->validate($request,
        ['email' => 'required|email|blacklist']
      );

  }

安装

使用composer要求此包

composer require Lucenarenato/laravel-email-domain-blacklist

此包使用AutoDiscovery

如果您使用Laravel <= 5.4,请手动将服务提供者添加到config/app.php中的提供者数组中

Lucenarenato\EmailDomainBlacklist\EmailDomainBlacklistServiceProvider::class,

发布包配置

php artisan vendor:publish --provider="Lucenarenato\EmailDomainBlacklist\EmailDomainBlacklistServiceProvider" --tag=config

文档

Laravel Email Domain Blacklist是一个轻量级的包,它通过blacklist扩展了您的验证规则。

您可以通过传递包含所有黑名单电子邮件域的本地或远程JSON文件来实现,通常是一次性电子邮件服务。

如果您使用第三方远程列表,您还可以添加您自己的电子邮件域。

您可以使用控制台命令(手动或计划)更新缓存的列表。

如果不想运行命令并希望在第一次验证时自动更新,则可用自动更新选项。

验证消息翻译可用英语和西班牙语;欢迎PR您的翻译。

Laravel验证器

public function store(Request $request) {
    $this->validate($request,
      ['email' => 'required|email|blacklist']
    );
}

配置

source: string|null

您可以选择用于更新黑名单的首选URL或文件路径。

如果您不想使用远程源,则保持null

默认值:https://raw.githubusercontent.com/ivolo/disposable-email-domains/master/index.json

cache-key: string|null

您可以通过更改缓存键来更改来源黑名单。

如果您想使用默认值,则保持null

auto-update: true|false

指定是否在缓存为空时自动获取来源。

建议:这可能会在验证时第一次请求减慢。

默认值:false

append: string|null

您可以使用用管道符号|分隔的域名列表字符串。

如果您不想附加自定义域名,则保持null

示例: example.com|example.net|foobar.com

使用命令更新黑名单

手动更新缓存的黑名单

php artisan blacklist:update-email-domains

在部署后运行此命令并每周/每月刷新一次是可以的。

计划缓存的黑名单更新(示例)

    // app/Console/Kernel.php @schedule

    // ...
    $schedule->command('blacklist:update-email-domains')
             ->monthly()
             ->sundays()
             ->at('05:00')
             ->withoutOverlapping()
             ->sendOutputTo(storage_path('logs/email-domains-blacklist.txt'));
    // ...

覆盖翻译

将JSON翻译键添加到您的项目核心翻译中,这将覆盖包的验证消息。

有关覆盖翻译的更多信息

测试

vendor/bin/phpunit

使用此包的项目

我创建了这个包来卸载我的应用程序中的部分代码Fimedi NET,这是一个为营养师和患者设计的临床营养控制应用程序。

待办事项

  • 更新项目词汇表以避免使用冒犯性术语。

贡献

请尽量遵循psr-2编码风格指南。http://www.php-fig.org/psr/psr-2/

鸣谢

本包受Matt Kingshott的这篇优秀文章的启发

包替代方案

许可证

MIT

FOSSA Status