raymondwilkinson / larainvite
Laravel 邀请包,现有用户可以通过电子邮件邀请他人
v0.3.2
2016-09-13 03:26 UTC
Requires
- php: >=5.5.9
- illuminate/database: ^5.1
- illuminate/events: ^5.1
- illuminate/support: ^5.1
Requires (Dev)
- phpunit/phpunit: ^5.2
README
laravel 用户(注册)邀请包
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'