alariva/laravel-email-domain-blacklist

用于添加电子邮件域名黑名单验证规则的 Laravel 扩展包

v1.0.3 2022-10-04 15:59 UTC

This package is auto-updated.

Last update: 2024-09-20 14:30:33 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 alariva/laravel-email-domain-blacklist

此包使用 AutoDiscovery

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

Alariva\EmailDomainBlacklist\EmailDomainBlacklistServiceProvider::class,

发布包配置

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

文档

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

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

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

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

如果不想运行命令,您可以选择在第一次验证时自动更新。

验证消息翻译支持英语和西班牙语;欢迎提交您的翻译。

Laravel 验证器

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

配置

source: 字符串|null

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

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

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

cache-key: 字符串|null

您可以更改源黑名单的缓存键。

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

auto-update: true|false

指定当缓存为空时是否应自动获取源。

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

默认值: false

append: 字符串|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 在此优秀帖子上的启发 https://medium.com/@mattkingshott/laravel-validation-rule-block-disposable-email-blacklisted-domains-949cab9c59fe

包的替代方案

许可证

MIT

FOSSA Status