Doorman предоставляет возможность ограничить доступ к вашим приложениям Laravel с помощью пригласительных кодов.
Пригласительные коды:
| Ларавел | Швейцар |
|---|---|
| 5.х | 3.х |
| 6.х | 4.х |
| 7.х | 5.х |
| 8.х | 6.х |
| 9.х | 7.х |
| 10.х | 8.х |
| 11.х | 9.х |
Вы можете загрузить пакет с помощью композитора:
$ 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 (); В качестве альтернативы вместо вызова make() , который вернет коллекцию приглашений, вы можете вызвать once() если вам нужно сгенерировать только одно приглашение.
$ 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 , и эти сообщения будут использоваться швейцаром. Вы можете обеспечить поддержку других языков, создав дополнительные папки с файлом messages.php в каталоге /resources/lang/vendor/doorman , например 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 ' ,
];Если вы измените имя таблицы, а затем запустите миграцию, Швейцар будет использовать новое имя таблицы.
Чтобы удалить использованные и просроченные приглашения, вы можете использовать команду cleanup :
$ php artisan doorman:cleanup