Doorman proporciona una manera de limitar el acceso a sus aplicaciones Laravel mediante el uso de códigos de invitación.
Códigos de invitación:
Laravel | Portero |
---|---|
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 |
Puedes introducir el paquete usando el compositor:
$ composer require " clarkeash/doorman=^9.0 "
A continuación, migre la base de datos:
$ php artisan migrate
Cree un único código de invitación genérico con 1 canje y sin vencimiento.
Doorman:: generate ()-> make ();
Cree 5 códigos de invitación genéricos con 1 canje cada uno y sin vencimiento.
Doorman:: generate ()-> times ( 5 )-> make ();
Haz una invitación con 10 canjes y sin vencimiento.
Doorman:: generate ()-> uses ( 10 )-> make ();
Haz una invitación con canjes ilimitados y sin vencimiento.
Doorman:: generate ()-> unlimited ()-> make ();
Haz una invitación que caduque en una fecha específica.
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();
Haz una invitación que caduque en 14 días.
Doorman:: generate ()-> expiresIn ( 14 )-> make ();
Haz una invitación para una persona específica.
Doorman:: generate ()-> for ( ' [email protected] ' )-> make ();
Alternativamente, en lugar de llamar make()
, que devolverá una colección de invitaciones, puede llamar once()
si solo desea que se genere una única invitación.
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code );
Puede canjear una invitación llamando al método redeem
. Proporcionando el código de invitación y opcionalmente una dirección de correo electrónico.
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );
Si el portero puede canjear el código de invitación, incrementará el número de canjes en 1; de lo contrario, generará una excepción.
InvalidInviteCode
si el código no existe en la base de datos.ExpiredInviteCode
se genera si se establece una fecha de vencimiento y ya pasó.MaxUsesReached
se lanza si el código de invitación ya se ha utilizado la cantidad máxima de veces.NotYourInviteCode
se genera si la dirección de correo electrónico de la invitación coincide con la proporcionada durante el canje, o si no se proporcionó ninguna durante el canje. Todas las excepciones anteriores amplían DoormanException
para que pueda detectar esa excepción si su aplicación no necesita hacer nada específico para las excepciones anteriores.
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
}
Puede verificar una invitación llamando al método check
. Proporcionando el código de invitación y opcionalmente una dirección de correo electrónico. (Tiene la misma firma que el método redeem
, excepto que devolverá true
o false
en lugar de generar una excepción.
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );
Para cambiar el mensaje de error devuelto por el portero, necesitamos publicar los archivos de idioma de esta manera:
$ php artisan vendor:publish --tag=doorman-translations
Los archivos de idioma estarán entonces en /resources/lang/vendor/doorman/en
donde podrá editar el archivo messages.php
, y Doorman utilizará estos mensajes. Puede crear soporte para otros idiomas creando carpetas adicionales con un archivo messages.php
en el directorio /resources/lang/vendor/doorman
, como de
ejemplo donde podría colocar sus traducciones al alemán. Lea los documentos de localización para obtener más información.
Si prefiere validar un código de invitación antes de intentar canjearlo o está utilizando Solicitudes de formulario, puede validarlo de esta manera:
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.
}
Debe pasar la dirección de correo electrónico al constructor para validar el código con ese correo electrónico. Si sabe que el código se puede utilizar con cualquier correo electrónico, puede dejar el parámetro vacío.
Primero publique la configuración del paquete:
$ php artisan vendor:publish --tag=doorman-config
En config/doorman.php
verás:
return [
' invite_table_name ' => ' invites ' ,
];
Si cambia el nombre de la tabla y luego ejecuta las migraciones, Doorman utilizará el nuevo nombre de la tabla.
Para eliminar invitaciones usadas y vencidas, puedes usar el comando cleanup
:
$ php artisan doorman:cleanup