在Laravel中有1個權限與使用者管理的套件很好用:Entrust。這個套件可以一次解決使用者註冊與權限劃分等的問題,而這個套件通常會與Confide這個套件一起使用,這2個套件都是同一個作者開發的,所以在搭配運用上算是非常的完美,其實Confide主要就是負責以下東西:
- 使用者帳號確認
- 密碼重置功能
- 提供簡便的方法,快速生成登錄,註冊,和密碼重置的表單
- 快速生成登錄,註冊,密碼找回,郵箱驗證等..的路由
- 包含一些基本的用戶功能幫助方法
- 與Laravel自帶的驗證和提醒功能無縫兼容
- 登錄後自動跳轉到之前的頁面
- 註冊時候檢查用戶名和電子郵件字段的唯一
不過Confide也有個怪脾氣,就是如果需要修改「users」這張table中的值時,他會認為user是要修改密碼及email,所以這2個是必填,但其實我們只是要更改這張table中的某一個欄位,但會卡在驗證不過的問題而一直無法更改。解法是可以直接更新ConfideC中的驗證條件,如下:
把檔案打開後,看到rules那段就是了,可以選擇直接改變它:
不過這邊我是選擇了另一個新法,就是新增一個客製化的驗證器。首先先在models中新增一個驗證用的model:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php use Zizaco\Confide\UserValidator as ConfideUserValidator; use Zizaco\Confide\UserValidatorInterface; class UserValidator extends ConfideUserValidator implements UserValidatorInterface { public $rules = [ 'create' => [ // 'username' => 'required', // 'email' => 'required|email', // 'password' => 'required|min:4', ], 'update' => [ // 'username' => 'required', // 'email' => 'required|email', // 'password' => 'required|min:4', ] ]; } ?> |
接著在「app/start/global.php」中建立我們客製化的驗證:
1 |
App::bind('confide.user_validator', 'AccountValidator'); |
如此一路就能在users這張table上用自己的客製化驗證了