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 中的 providers 数组中

Lucenarenato\EmailDomainBlacklist\EmailDomainBlacklistServiceProvider::class,

发布包配置

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

文档

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

您可以传递包含所有黑名单电子邮件域的本地或远程JSON文件,通常是可丢弃的电子邮件服务。

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

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

如果您不想运行命令,希望首次验证时自动更新,则提供自动更新选项。

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

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