mathewparet/laravelinvites

v1.0.0 2019-01-25 11:22 UTC

This package is auto-updated.

Last update: 2024-09-26 00:16:12 UTC


README

一个 Laravel 扩展包,帮助管理基于邀请的用户注册。

项目状态

master

Scrutinizer Code Quality Build Status Code Intelligence Status

develop

Scrutinizer Code Quality Build Status Code Intelligence Status

介绍

此包生成邀请码,您可以在注册表单中使用。

邀请码可以

  • 绑定到电子邮件地址。
  • 可多次使用(发布到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);

此方法返回 truefalse

如果与特定电子邮件地址关联的邀请码未使用正确的电子邮件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下自定义注册表单的路由名称。您还可以自定义emailcode字段的名称,使其与您的注册表单中的字段匹配,以便自动填充。

如果您想自定义邮件,可以发布邮件的Markdown格式。

php artisan vendor:publish --provider="mathewparet\LaravelInvites\LaravelInvitesServiceProvider" --tag=mail