Doorman 提供了一種使用邀請碼來限制對 Laravel 應用程式的存取的方法。
邀請碼:
拉維爾 | 門衛 |
---|---|
5.x | 3.x |
6.x | 4.x |
7.x | 5.x |
8.x | 6.x |
9.x | 7.x |
10.x | 8.x |
11.x | 9.x |
您可以使用 Composer 拉取該套件:
$ composer require " clarkeash/doorman=^9.0 "
接下來,遷移資料庫:
$ php artisan migrate
製作一個通用邀請碼,可兌換 1 次,且不會過期。
Doorman:: generate ()-> make ();
製作 5 個通用邀請碼,每個邀請碼可兌換 1 次,且無有效期限。
Doorman:: generate ()-> times ( 5 )-> make ();
發出邀請,可兌換 10 次且無過期日期。
Doorman:: generate ()-> uses ( 10 )-> make ();
發出邀請,可無限次兌換且無有效期限。
Doorman:: generate ()-> unlimited ()-> make ();
發出在特定日期到期的邀請。
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();
發出 14 天後過期的邀請。
Doorman:: generate ()-> expiresIn ( 14 )-> make ();
為特定的人發出邀請。
Doorman:: generate ()-> for ( ' [email protected] ' )-> make ();
或者,如果您只想產生一個邀請,則可以呼叫once()
而不是呼叫將傳回邀請集合的make()
。
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code );
您可以透過呼叫redeem
方法來兌換邀請。提供邀請碼和可選的電子郵件地址。
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );
如果門衛能夠兌換邀請碼,則會將兌換次數加 1,否則會拋出異常。
InvalidInviteCode
。ExpiredInviteCode
。MaxUsesReached
。NotYourInviteCode
。上述所有異常都擴展了DoormanException
因此如果您的應用程式不需要針對上述異常執行任何特定操作,您就可以捕獲該異常。
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
}
您可以透過呼叫check
方法來檢查邀請。提供邀請碼和可選的電子郵件地址。 (它與redeem
方法具有相同的簽名,除了它會傳回true
或false
而不是拋出異常。
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );
為了更改門衛返回的錯誤訊息,我們需要發布語言文件,如下所示:
$ php artisan vendor:publish --tag=doorman-translations
然後,語言檔案將位於/resources/lang/vendor/doorman/en
中,您可以在其中編輯messages.php
文件,這些訊息將由 Doorman 使用。您可以透過在/resources/lang/vendor/doorman
目錄中建立帶有messages.php
檔案的額外資料夾來建立對其他語言的支持,例如de
,您可以在其中放置德語翻譯。閱讀本地化文件以獲取更多資訊。
如果您希望在嘗試兌換邀請碼之前驗證邀請碼或您正在使用表單請求,那麼您可以像這樣驗證它:
public function store ( Request $ request )
{
$ this -> validate ( $ request , [
' email ' => ' required|email|unique:users ' ,
' code ' => [ ' required ' , new DoormanRule ( $ request -> get ( ' email ' ))],
]);
// Add the user to the database.
}
您應該將電子郵件地址傳遞到建構函數中,以根據該電子郵件驗證程式碼。如果您知道程式碼可用於任何電子郵件,則可以將該參數留空。
首先發布包配置:
$ php artisan vendor:publish --tag=doorman-config
在config/doorman.php
中你將會看到:
return [
' invite_table_name ' => ' invites ' ,
];
如果您變更表名稱,然後執行遷移,Doorman 將使用新的表名稱。
若要刪除已使用且過期的邀請,您可以使用cleanup
指令:
$ php artisan doorman:cleanup