raymondwilkinson/larainvite

Laravel 邀请包,现有用户可以通过电子邮件邀请他人

v0.3.2 2016-09-13 03:26 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:53:03 UTC


README

laravel 用户(注册)邀请包

GitHub license Total Downloads

larainvite 是一个 laravel 包,允许现有用户通过电子邮件邀请他人。

它生成推荐码并跟踪状态。

安装

首先通过 Composer 安装包。在您的终端运行以下命令

composer require raymondwilkinson/larainvite

config/app.php 中的 providers 数组中添加包服务提供者

Junaidnasir\Larainvite\LaraInviteServiceProvider::class

您可以在别名数组中添加 facade 访问

'Invite'  => Junaidnasir\Larainvite\Facades\Invite::class

发布迁移和配置文件

php artisan vendor:publish"

迁移以创建 user_invitation

php artisan migrate

编辑您的 User 模型以包含 larainviteTrait

use Junaidnasir\Larainvite\InviteTrait;
class user ... {
    use InviteTrait;
}

用法

您可以使用 外观访问器 来检索包控制器。示例

$user = Auth::user();
//Invite::invite(EMAIL, REFERRAL_ID); 
$refCode = Invite::invite('email@address.com', $user->id);
//or 
//Invite::invite(EMAIL, REFERRAL_ID, EXPIRATION); 
$refCode = Invite::invite('email@address.com', $user->id, '2016-12-31 10:00:00');

现在创建具有 refCode 的路由,当用户访问该路由时,您可以使用以下方法

// Get route
$code = Request::input('code');
if( Invite::isValid($code))
{
    $invitation = Invite::get($code); //retrieve invitation modal
    $invited_email = $invitation->email;
    $referral_user = $invitation->user;

    // show signup form
} else {
    $status = Invite::status($code);
    // show error or show simple signup form
}
// Post route
$code = Request::input('code');
$email = Request::input('signup_email');
if( Invite::isAllowed($code,$email) ){
    // Register this user
    Invite::consume($code);
} else {
    // either refCode is inavalid, or provided email was not invited against this refCode
}

借助新的特性,您可以访问用户发送的邀请

$user= User::find(1);
$invitations = $user->invitations;
$count = $user->invitations()->count();

事件

larainvite 触发几个 事件

  • 'junaidnasir.larainvite.invited'
  • 'junaidnasir.larainvite.consumed'
  • 'junaidnasir.larainvite.canceled'
  • 'junaidnasir.larainvite.expired'

所有这些事件都包含 invitation modal,因此您可以监听这些事件。在 EventServiceProvider.php 中包含监听器

protected $listen = [
    'junaidnasir.larainvite.invited' => [
        'App\Listeners\userInvite',
    ],
];

userInvite.php

public function handle($invitation)
{
    \Mail::queue('invitations.emailBody', $invitation, function ($m) use ($invitation) {
            $m->from('From Address', 'Your App Name');
            $m->to($invitation->email);
            $m->subject("You have been invited by ". $invitation->user->name);
        });
}

配置

config/larainvite.php 中,您可以设置从当前时间起的默认过期时间(以小时为单位)。

'expires' => 48

您还可以更改要使用的用户模型,在 larainvite.php

'UserModel' => 'App\User'