mathewparet / laravelinvites
:description
Requires
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~7.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-26 00:16:12 UTC
README
一个 Laravel 扩展包,帮助管理基于邀请的用户注册。
项目状态
master
develop
介绍
此包生成邀请码,您可以在注册表单中使用。
邀请码可以
- 绑定到电子邮件地址。
- 可多次使用(发布到FB!)。
- 定义使用次数限制。
- 可以有到期日期或无期。
- 可以有一个未来激活日期(在此之前无法使用)。
安装
您可以使用 composer 安装此包。
composer require mathewparet/laravelinvites
对于 Laravel 5.5 或之前版本,您需要添加
// config/app.php 'providers' => [ ... mathewparet\LaravelInvites\LaravelInvitesServiceProvider::class, ];
为了方便使用,您也可以定义别名
// config/app.php 'aliases' => [ ... 'LaravelInvites' => mathewparet\LaravelInvites\Facades\LaravelInvites::class ];
最后运行迁移
php artisan migrate
发布配置
如果您想自定义它,或者想更改将存储邀请的表的名称,您可能需要发布配置文件。
php artisan vendor:publish --provider="\mathewparet\LaravelInvites\LaravelInvitesServiceProvider" --tag=config
这会将配置文件(config/laravelinvites.php)复制到您的配置目录。
默认表名为 invites
。如果您想更改它,您可以在运行迁移之前在上面的配置文件中更改它。
用法
生成单个一次性使用邀请码
LaravelInvites::generate();
生成多个一次性使用邀请码
LaravelInvites::generate(10); // generates 10 different invitation codes
生成多用途邀请码
LaravelInvites::allow(25)->generate(); // generates a single code that can be used 25 times
覆盖配置中定义的到期日期,创建非到期代码
LaravelInvites::withoutExpiry()->generate();
如果您始终计划使用永不到期的邀请码,则可以在配置文件中进行更改。如果 config('laravelinvites.expiry.type')
= "never"
,则无需显式使用 withoutExpiry()
。
使用特定到期日期覆盖配置中定义的到期日期
$date = Carbon\Carbon::now()->addDays(5); LaravelInvites::setExpiry($date)->generate(); // generates an invitation code that expires in 5 days
设置活动/开始日期
$date = Carbon\Carbon::now()->addDays(5); LaravelInvites::notBefore($date)->generate(); // generates an invitation code that can be used only after 5 days
或者
$date = Carbon\Carbon::now()->addDays(5); LaravelInvites::validFrom($date)->generate(); // generates an invitation code that can be used only after 5 days
生成特定电子邮件ID的邀请码
LaravelInvites::for('john.doe@example.com')->generate(); // This code can be used only by john.doe@example.com
或者
LaravelInvites::generateFor('john.doe@example.com');
检查邀请码是否有效
LaravelInvites::isValid($code);
或者
LaravelInvites::isValid($code, $email);
此方法返回
true
或false
。
如果与特定电子邮件地址关联的邀请码未使用正确的电子邮件ID进行检查,则返回
false
。
如果邀请码未绑定到电子邮件ID,并且邀请码处于活动状态且正确,则无论电子邮件ID是否为null,此方法都会返回
true
。
带有异常的邀请码有效性检查
LaravelInvites::check($code, $email);
或者
LaravelInvites::check($code);
这与
isValid()
的工作方式相同,但在验证失败时抛出异常。
兑换邀请码
LaravelInvites::redeem($code, $email);
或者
LaravelInvites::redeem($code);
在调用此方法之前应调用
isValid()
,因为如果邀请码无效,它将抛出异常。
获取邀请码列表
LaravelInvites::get();
或者
LaravelInvites::for('john.doe@example.com')->get();
表单请求验证
验证通过表单提交的邀请码
public function store(Request $request) { $request->validate([ 'email' => 'required|email|unique:users', 'code' => 'required|valid_code:email', // here email is the field that holds the email id ]); // Add the user to the database. }
控制台
以下控制台命令可用。
php artisan invites:generate
php artisan invites:cleanup
php artisan invites:check
带有邀请码的电子邮件
当为特定电子邮件ID生成邀请码时(使用 php artisan invites:generate
或使用外观),将自动向该电子邮件ID发送邀请邮件。
您可以在配置文件中禁用或自定义此功能。
如果启用此功能,当用户点击邀请链接时,其电子邮件ID和邀请码将自动填写到您的注册表中。如果您使用Laravel内置的注册表单,则无需配置即可直接使用。否则,您可以在routes.register
下自定义注册表单的路由名称。您还可以自定义email
和code
字段的名称,使其与您的注册表单中的字段匹配,以便自动填充。
如果您想自定义邮件,可以发布邮件的Markdown格式。
php artisan vendor:publish --provider="mathewparet\LaravelInvites\LaravelInvitesServiceProvider" --tag=mail