Validate Allowed Email Domains in Laravel
Published on by Paul Redmond
The Email Domain Rule package for Laravel can define a subset of allowed email domains you can use within a validator. The email domains are stored in the database, and the accompanying validation rule uses the database to verify an email field:
use HFarm\EmailDomainRule\EmailDomainRule;use Illuminate\Support\Facades\Validator; $email = 'my-email@example.com'; Validator::make([ 'email' => $email,], [ 'email' => [ 'string', 'email', new EmailDomainRule, ],])->validated();
This package also has wildcard support, which can come in handy in a multi-tenant application where you’d like to constraint which domain(s) a user can register within a given tenant. The package readme illustrates model customizations you can use to make this package support validation for multiple tenants:
use HFarm\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); }); }}
You can learn more about this package, get full installation instructions, and view the source code on GitHub.
This package was submitted to our Laravel News Links section. Links is a place the community can post packages and tutorials around the Laravel ecosystem. Follow along on Twitter @LaravelLinks