專案中需要開發邀請註冊的邏輯,發現了一個有趣的擴充套件包 https://github.com/junaidnasir/larainvite ,本文章為整合的日誌。
建立專案
composer create-project laravel/laravel blog --prefer-dist "5.3.*"
註冊登入
生成程式碼
$ php artisan make:auth
資料庫
$ php artisan migrate
邀請註冊
安裝
composer require junaidnasir/larainvite
app.php
的 ServiceProvider:
Junaidnasir\Larainvite\LaraInviteServiceProvider::class,
和 Facade
'Invite' => Junaidnasir\Larainvite\Facades\Invite::class
釋出資訊:
php artisan vendor:publish --provider="Junaidnasir\Larainvite\LaraInviteServiceProvider"
資料庫遷移
php artisan migrate
過期時間設定為一週,修改 /config/larainvite.php
:
'expires' => 168,
載入 larainviteTrait
,編輯 User
資料模型:
use Junaidnasir\Larainvite\InviteTrait;
class User ... {
use InviteTrait;
}
建立邀請:
php artisan tinker
>>> Invite::invite('jobslong@yousails.com', '1');
=> "190a4607ee79559da0952457d87bfbc9"
資料庫:
修改登錄檔單 /resources/views/auth/register.blade.php
:
<div class="form-group{{ $errors->has('code') ? ' has-error' : '' }}">
<label for="code" class="col-md-4 control-label">邀請碼</label>
<div class="col-md-6">
<input id="code" type="code" class="form-control" name="code" value="{{ old('code') }}" required>
@if ($errors->has('code'))
<span class="help-block">
<strong>{{ $errors->first('code') }}</strong>
</span>
@endif
</div>
</div>
定製註冊時的驗證資訊,修改 app/Http/Controllers/Auth/RegisterController.php
增加 code
:
'code' => 'exists:user_invitations,code,status,pending',
以上驗證邏輯為:
存在於
user_invitations
表中,唯一的欄位為code
,status
欄位的值為pending
。
新增新增註冊成功後的回撥:
protected function registered(Request $request, $user)
{
Invite::consume($request->code);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結