maize-tech / laravel-email-domain-rule
Laravel 邮件域名规则
3.2.0
2024-04-05 14:33 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.14.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- nunomaduro/collision: ^6.0|^7.10.0|^8.1.1
- orchestra/testbench: ^7.0|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.5
- vimeo/psalm: ^4.20|^5.22
README
Laravel 邮件域名规则
此包允许定义一组允许的电子邮件域名,并通过自定义规则验证任何用户注册表单。
安装
您可以通过 composer 安装此包
composer require maize-tech/laravel-email-domain-rule
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --provider="Maize\EmailDomainRule\EmailDomainRuleServiceProvider" --tag="email-domain-rule-migrations" php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Maize\EmailDomainRule\EmailDomainRuleServiceProvider" --tag="email-domain-rule-config"
这是已发布配置文件的内容
return [ /* |-------------------------------------------------------------------------- | Email Domain model |-------------------------------------------------------------------------- | | Here you may specify the fully qualified class name of the email domain model. | */ 'email_domain_model' => Maize\EmailDomainRule\Models\EmailDomain::class, /* |-------------------------------------------------------------------------- | Email Domain wildcard |-------------------------------------------------------------------------- | | Here you may specify the character used as wildcard for all email domains. | */ 'email_domain_wildcard' => '*', /* |-------------------------------------------------------------------------- | Validation message |-------------------------------------------------------------------------- | | Here you may specify the message thrown if the validation rule fails. | */ 'validation_message' => 'The selected :attribute does not have a valid domain.', ];
用法
基本用法
要使用此包,请运行迁移并填写应用程序接受的电子邮件域名列表。
然后,您只需添加自定义验证规则以进行验证,例如,用户注册表单。
use Maize\EmailDomainRule\EmailDomainRule; use Illuminate\Support\Facades\Validator; $email = 'my-email@example.com'; Validator::make([ 'email' => $email, ], [ 'email' => [ 'string', 'email', new EmailDomainRule, ], ])->validated();
就这样!如果验证失败,Laravel 将通过验证输入并抛出错误消息来处理剩余部分。
通配符域名
如果需要,您可以可选地向 email_domains
数据库表添加通配符域名:自定义规则将处理其余部分。
默认通配符字符是星号(*
),但您可以在 email_domain_wildcard
设置中自定义它。
use Maize\EmailDomainRule\EmailDomainRule; use Maize\EmailDomainRule\Models\EmailDomain; use Illuminate\Support\Facades\Validator; EmailDomain::create(['domain' => '*.example.com']); Validator::make([ 'email' => 'info@example.com', ], [ 'email' => ['string', 'email', new EmailDomainRule], ])->fails(); // returns true as the given domain is not in the list Validator::make([ 'email' => 'info@subdomain.example.com', ], [ 'email' => ['string', 'email', new EmailDomainRule], ])->fails(); // returns false as the given domain matches the wildcard domain
模型定制
您还可以通过更改 email_domain_model
设置来覆盖默认的 EmailDomain
模型,以添加任何额外的字段。
当在一个数据库系统中处理多租户场景时,这可能很有用:在这种情况下,您只需将 tenant_id
列添加到迁移和模型类中,并对自定义模型应用全局作用域。
use Maize\EmailDomainRule\EmailDomainRule as BaseEmailDomain; use Illuminate\Database\Eloquent\Builder; class EmailDomain extends BaseEmailDomain { protected $fillable = [ 'domain', 'tenant_id', ]; protected static function booted() { static::addGlobalScope('tenantAware', function (Builder $builder) { $builder->where('tenant_id', auth()->user()->tenant_id); }); } }
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全漏洞
请查阅 我们的安全策略 了解如何报告安全漏洞。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。