使用 larainvite 為 Laravel 5.3 應用新增邀請註冊功能

Summer發表於2017-01-27

專案中需要開發邀請註冊的邏輯,發現了一個有趣的擴充套件包 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"

資料庫:

file

修改登錄檔單 /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 表中,唯一的欄位為 codestatus 欄位的值為 pending

新增新增註冊成功後的回撥:

    protected function registered(Request $request, $user)
    {
        Invite::consume($request->code);
    }

file

本作品採用《CC 協議》,轉載必須註明作者和本文連結

擯棄世俗浮躁,追求技術精湛

相關文章