Doorman bietet eine Möglichkeit, den Zugriff auf Ihre Laravel-Anwendungen mithilfe von Einladungscodes einzuschränken.
Einladungscodes:
Laravel | Türsteher |
---|---|
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 |
Sie können das Paket mit Composer abrufen:
$ composer require " clarkeash/doorman=^9.0 "
Als nächstes migrieren Sie die Datenbank:
$ php artisan migrate
Erstellen Sie einen einzelnen generischen Einladungscode mit 1 Einlösung und ohne Ablaufdatum.
Doorman:: generate ()-> make ();
Erstellen Sie 5 generische Einladungscodes mit jeweils 1 Einlösung und ohne Ablaufdatum.
Doorman:: generate ()-> times ( 5 )-> make ();
Machen Sie eine Einladung mit 10 Einlösungen und ohne Ablaufdatum.
Doorman:: generate ()-> uses ( 10 )-> make ();
Erstellen Sie eine Einladung mit unbegrenzten Einlösungen und ohne Ablaufdatum.
Doorman:: generate ()-> unlimited ()-> make ();
Erstellen Sie eine Einladung, die an einem bestimmten Datum abläuft.
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();
Erstellen Sie eine Einladung, die in 14 Tagen abläuft.
Doorman:: generate ()-> expiresIn ( 14 )-> make ();
Machen Sie eine Einladung für eine bestimmte Person.
Doorman:: generate ()-> for ( ' [email protected] ' )-> make ();
Anstatt make()
aufzurufen, das eine Sammlung von Einladungen zurückgibt, können Sie alternativ once()
aufrufen, wenn Sie nur eine einzelne Einladung generieren möchten.
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code );
Sie können eine Einladung einlösen, indem Sie die redeem
aufrufen. Bereitstellung des Einladungscodes und optional einer E-Mail-Adresse.
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );
Wenn der Portier den Einladungscode einlösen kann, erhöht er die Anzahl der Einlösungen um 1, andernfalls wird eine Ausnahme ausgelöst.
InvalidInviteCode
wird ausgelöst, wenn der Code nicht in der Datenbank vorhanden ist.ExpiredInviteCode
wird ausgelöst, wenn ein Ablaufdatum festgelegt ist und dieses in der Vergangenheit liegt.MaxUsesReached
wird ausgelöst, wenn der Einladungscode bereits so oft wie möglich verwendet wurde.NotYourInviteCode
wird ausgelöst, wenn die E-Mail-Adresse für die Einladung mit der bei der Einlösung angegebenen E-Mail-Adresse übereinstimmt oder bei der Einlösung keine E-Mail-Adresse angegeben wurde. Alle oben genannten Ausnahmen erweitern DoormanException
, sodass Sie diese Ausnahme abfangen können, wenn Ihre Anwendung keine spezifischen Aktionen für die oben genannten Ausnahmen ausführen muss.
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
}
Sie können eine Einladung überprüfen, indem Sie die check
aufrufen. Bereitstellung des Einladungscodes und optional einer E-Mail-Adresse. (Sie hat die gleiche Signatur wie die redeem
-Methode, außer dass sie true
oder false
zurückgibt, anstatt eine Ausnahme auszulösen.
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );
Um die von Doorman zurückgegebene Fehlermeldung zu ändern, müssen wir die Sprachdateien wie folgt veröffentlichen:
$ php artisan vendor:publish --tag=doorman-translations
Die Sprachdateien befinden sich dann in /resources/lang/vendor/doorman/en
, wo Sie die Datei messages.php
bearbeiten können, und diese Nachrichten werden von Doorman verwendet. Sie können Unterstützung für andere Sprachen schaffen, indem Sie zusätzliche Ordner mit einer Datei messages.php
im Verzeichnis /resources/lang/vendor/doorman
erstellen, z. B. de
, in denen Sie Ihre deutschen Übersetzungen ablegen können. Weitere Informationen finden Sie in den Lokalisierungsdokumenten.
Wenn Sie einen Einladungscode lieber validieren möchten, bevor Sie versuchen, ihn einzulösen, oder wenn Sie Formularanfragen verwenden, können Sie ihn folgendermaßen validieren:
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.
}
Sie sollten die E-Mail-Adresse an den Konstruktor übergeben, um den Code anhand dieser E-Mail zu validieren. Wenn Sie wissen, dass der Code mit jeder E-Mail verwendet werden kann, können Sie den Parameter leer lassen.
Veröffentlichen Sie zunächst die Paketkonfiguration:
$ php artisan vendor:publish --tag=doorman-config
In config/doorman.php
sehen Sie:
return [
' invite_table_name ' => ' invites ' ,
];
Wenn Sie den Tabellennamen ändern und dann Ihre Migrationen ausführen, verwendet Doorman den neuen Tabellennamen.
Um gebrauchte und abgelaufene Einladungen zu entfernen, können Sie den Befehl cleanup
verwenden:
$ php artisan doorman:cleanup