Doorman fournit un moyen de limiter l'accès à vos applications Laravel en utilisant des codes d'invitation.
Codes d'invitation :
Laravel | Portier |
---|---|
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 |
Vous pouvez extraire le package en utilisant composer :
$ composer require " clarkeash/doorman=^9.0 "
Ensuite, migrez la base de données :
$ php artisan migrate
Créez un seul code d'invitation générique avec 1 échange et sans expiration.
Doorman:: generate ()-> make ();
Créez 5 codes d'invitation génériques avec 1 échange chacun et sans expiration.
Doorman:: generate ()-> times ( 5 )-> make ();
Faites une invitation avec 10 échanges et sans expiration.
Doorman:: generate ()-> uses ( 10 )-> make ();
Faites une invitation avec des échanges illimités et sans expiration.
Doorman:: generate ()-> unlimited ()-> make ();
Créez une invitation qui expire à une date précise.
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();
Créez une invitation qui expire dans 14 jours.
Doorman:: generate ()-> expiresIn ( 14 )-> make ();
Faites une invitation pour une personne spécifique.
Doorman:: generate ()-> for ( ' [email protected] ' )-> make ();
Alternativement, au lieu d'appeler make()
qui renverra une collection d'invitations, vous pouvez appeler once()
si vous souhaitez qu'une seule invitation soit générée.
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code );
Vous pouvez utiliser une invitation en appelant la méthode redeem
. Fournir le code d'invitation et éventuellement une adresse e-mail.
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );
Si le portier parvient à utiliser le code d'invitation, il incrémentera le nombre d'échanges de 1, sinon il lèvera une exception.
InvalidInviteCode
est renvoyé si le code n'existe pas dans la base de données.ExpiredInviteCode
est lancé si une date d'expiration est définie et qu'elle se situe dans le passé.MaxUsesReached
est lancé si le code d'invitation a déjà été utilisé le nombre maximum de fois.NotYourInviteCode
est émis si l'adresse e-mail de l'invitation correspond à celle fournie lors de l'échange, ou si aucune n'a été fournie lors de l'échange. Toutes les exceptions ci-dessus étendent DoormanException
afin que vous puissiez intercepter cette exception si votre application n'a pas besoin de faire quelque chose de spécifique pour les exceptions ci-dessus.
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
}
Vous pouvez vérifier une invitation en appelant la méthode check
. Fournir le code d'invitation et éventuellement une adresse e-mail. (Elle a la même signature que la méthode redeem
, sauf qu'elle renverra true
ou false
au lieu de lever une exception.
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );
Afin de modifier le message d'erreur renvoyé par le portier, nous devons publier les fichiers de langue comme ceci :
$ php artisan vendor:publish --tag=doorman-translations
Les fichiers de langue seront alors dans /resources/lang/vendor/doorman/en
où vous pourrez éditer le fichier messages.php
, et ces messages seront utilisés par le portier. Vous pouvez créer un support pour d'autres langues en créant des dossiers supplémentaires avec un fichier messages.php
dans le répertoire /resources/lang/vendor/doorman
, tel que de
, où vous pourrez placer vos traductions allemandes. Lisez les documents de localisation pour plus d'informations.
Si vous préférez valider un code d'invitation avant d'essayer de l'utiliser ou si vous utilisez des demandes de formulaire, vous pouvez le valider comme suit :
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.
}
Vous devez transmettre l'adresse e-mail au constructeur pour valider le code par rapport à cet e-mail. Si vous savez que le code peut être utilisé avec n'importe quel e-mail, vous pouvez laisser le paramètre vide.
Publiez d’abord la configuration du package :
$ php artisan vendor:publish --tag=doorman-config
Dans config/doorman.php
vous verrez :
return [
' invite_table_name ' => ' invites ' ,
];
Si vous modifiez le nom de la table puis exécutez vos migrations, Doorman utilisera alors le nouveau nom de la table.
Pour supprimer les invitations utilisées et expirées, vous pouvez utiliser la commande cleanup
:
$ php artisan doorman:cleanup