good-system/laravel-email-verifiable

此包的最新版本(dev-master)没有提供许可证信息。

dev-master 2018-10-30 16:51 UTC

This package is auto-updated.

Last update: 2024-09-08 15:41:18 UTC


README

与Laravel 5.7内置的电子邮件验证注册类似,此包利用了一些内置功能,为其他模型添加类似的功能,主要是在表单提交中由访客用户和/或注销用户创建的模型。

示例用例

无需处理账户即可注册会员

一些用户可能觉得必须处理账户很麻烦,尤其是当组织不提供需要成员登录账户的服务时。

无需登录即可续订会员

同样,成员可能足够有动力续订会员,但如果没有在线会员账户,那么就没有其他用途。

无需登录即可捐款

(目前没有详细信息)

依赖项

  • good-system/theme

此包提供一组布局和样式。如果需要自定义主题或视图,不希望这样做,请在 /resources/views/vendor/good-system 下创建一组自定义视图,它们将分别覆盖 good-system/theme 中的对应视图。

安装

此包不太可能直接安装,更可能作为其他包的依赖项安装。

在安装之前,首先将其添加到 composer.json

"repositories": [
    ...
    {
        "type": "git",
        "url": "git@github.com:good-system/laravel-email-verifiable.git"
    }
    ...
]

(这可能在将来发生变化--使用composer包而不是使用git作为源)

然后

composer require good-system/laravel-email-verifiable:"*"

配置

要更改配置,首先发布配置文件,然后在其中进行更改。

php artisan vendor:publish --provider="GoodSystem\EmailVerifiable\EmailVerifiableServiceProvider" --tag="config"

目前允许两种配置。

路由前缀

此包提供了以下路由用于验证和重新发送签名URL

/email-verifiable/verify/{model}/{id} /email-verifiable/resend/{model}/{id}

默认情况下,没有路由前缀。在 config/email-verification.php 中的自定义前缀 routeBase 被识别。

中间件

将新的中间件组添加到 Http/Kernel.php

protected $middlewareGroups = [
    'web' => [...],
    'api' => [...],

    'email-verifiable.verified' => [
    
    ]
];

然后您可以将任何中间件放入此数组中,并将自定义逻辑与路由 /email-verifiable/verify/{model}/{id} 关联起来。

'email-verifiable.verified' => [
    YOUR-MIDDLE-WARE-CLASS-1,
    YOUR-MIDDLE-WARE-CLASS-1    
]

验证URL的默认过期时间

通过分钟数指定 default-expiration

使模型可验证

成为 email-verifiable 意味着一个模型有一个指示器,指示该模型是否已通过电子邮件验证过初始记录。这是通过向模型添加一对一的多态关系来实现的。

虽然此包没有规定如何使用此指示器,但添加此功能的动机如下述用例所示。

如何使模型可验证

在安装和配置后,将 trait CanEmailVerify 添加到模型中使其变为 email-verifiable,如下所示

<?php

namespace GoodSystem\Membership;

use GoodSystem\EmailVerifiable\CanEmailVerify;
use Illuminate\Database\Eloquent\Model;

class Membership extends Model
{
    use CanEmailVerify;

}

这将添加关系 verifiable,以及与 verifiable 模型(由本包提供)中的字段 verified_at 关联的属性 isVerified

UseEmailVerify

将 trait UseEmailVerify 添加到控制器或任何其他类中,以便添加以下方法

  • verify(Model $model)
  • getSignedUrl($modelType, $modelId, array $extra = [], $expiration = null)

待办:解释$extra的作用及其使用方法