Doorman fornece uma maneira de limitar o acesso aos seus aplicativos Laravel usando códigos de convite.
Códigos de convite:
Laravel | Porteiro |
---|---|
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 |
Você pode extrair o pacote usando o compositor:
$ composer require " clarkeash/doorman=^9.0 "
Em seguida, migre o banco de dados:
$ php artisan migrate
Faça um único código de convite genérico com 1 resgate e sem expiração.
Doorman:: generate ()-> make ();
Faça 5 códigos de convite genéricos com 1 resgate cada e sem validade.
Doorman:: generate ()-> times ( 5 )-> make ();
Faça um convite com 10 resgates e sem prazo de validade.
Doorman:: generate ()-> uses ( 10 )-> make ();
Faça um convite com resgates ilimitados e sem prazo de validade.
Doorman:: generate ()-> unlimited ()-> make ();
Faça um convite que expire em uma data específica.
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();
Faça um convite que expira em 14 dias.
Doorman:: generate ()-> expiresIn ( 14 )-> make ();
Faça um convite para uma pessoa específica.
Doorman:: generate ()-> for ( ' [email protected] ' )-> make ();
Alternativamente, em vez de chamar make()
que retornará uma coleção de convites, você pode chamar once()
se desejar gerar apenas um único convite.
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code );
Você pode resgatar um convite chamando o método redeem
. Fornecendo o código de convite e, opcionalmente, um endereço de e-mail.
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );
Se o porteiro conseguir resgatar o código de convite, ele aumentará o número de resgates em 1, caso contrário, lançará uma exceção.
InvalidInviteCode
será lançado se o código não existir no banco de dados.ExpiredInviteCode
será lançado se uma data de expiração for definida e estiver no passado.MaxUsesReached
será lançado se o código de convite já tiver sido usado o número máximo de vezes.NotYourInviteCode
será lançado se o endereço de e-mail do convite corresponder ao fornecido durante o resgate ou se não tiver sido fornecido durante o resgate. Todas as exceções acima estendem DoormanException
para que você possa capturar essa exceção se seu aplicativo não precisar fazer nada específico para as exceções acima.
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
}
Você pode verificar um convite chamando o método check
. Fornecendo o código de convite e, opcionalmente, um endereço de e-mail. (Ele tem a mesma assinatura do método redeem
, exceto que retornará true
ou false
em vez de lançar uma exceção.
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );
Para alterar a mensagem de erro retornada pelo porteiro, precisamos publicar os arquivos de idioma assim:
$ php artisan vendor:publish --tag=doorman-translations
Os arquivos de idioma estarão então em /resources/lang/vendor/doorman/en
onde você pode editar o arquivo messages.php
, e essas mensagens serão usadas pelo porteiro. Você pode criar suporte para outros idiomas criando pastas extras com um arquivo messages.php
no diretório /resources/lang/vendor/doorman
como de
, onde você pode colocar suas traduções em alemão. Leia a documentação de localização para obter mais informações.
Se preferir validar um código de convite antes de tentar resgatá-lo ou se estiver usando solicitações de formulário, você pode validá-lo da seguinte forma:
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.
}
Você deve passar o endereço de e-mail para o construtor para validar o código nesse e-mail. Se você sabe que o código pode ser usado com qualquer e-mail, deixe o parâmetro vazio.
Primeiro publique a configuração do pacote:
$ php artisan vendor:publish --tag=doorman-config
Em config/doorman.php
você verá:
return [
' invite_table_name ' => ' invites ' ,
];
Se você alterar o nome da tabela e executar suas migrações, o Doorman usará o novo nome da tabela.
Para remover convites usados e expirados você pode usar o comando cleanup
:
$ php artisan doorman:cleanup