Este paquete proporciona una ruta firmada temporal que inicia sesión en un usuario. Lo que no proporciona es una forma de enviar el enlace a la ruta al usuario. Esto se debe a que no quiero hacer ninguna suposición sobre cómo se comunica con sus usuarios.
composer require grosv/laravel-passwordless-login
use App User ;
use Grosv LaravelPasswordlessLogin LoginUrl ;
function sendLoginLink ()
{
$ user = User :: find ( 1 );
$ generator = new LoginUrl ( $ user );
$ generator -> setRedirectUrl ( ' /somewhere/else ' ); // Override the default url to redirect to after login
$ url = $ generator -> generate ();
//OR Use a Facade
$ url = PasswordlessLogin :: forUser ( $ user )-> generate ();
// Send $url in an email or text message to your user
}
Debido a que algunos sitios tienen más de un modelo de tipo de usuario (usuarios, administradores, etc.), puede usar un rasgo para configurar las configuraciones predeterminadas para cada tipo de usuario. Los métodos a continuación son proporcionados por el rasgo, por lo que solo necesita incluir los que desea usar un valor diferente.
use Grosv LaravelPasswordlessLogin Traits PasswordlessLogin ;
use Illuminate Foundation Auth User as Authenticatable ;
class User extends Authenticatable
{
use PasswordlessLogin ;
public function getGuardNameAttribute (): string
{
return config ( ' laravel-passwordless-login.user_guard ' );
}
public function getShouldRememberLoginAttribute (): bool
{
return config ( ' laravel-passwordless-login.remember_login ' );
}
public function getLoginRouteExpiresInAttribute (): int
{
return config ( ' laravel-passwordless-login.login_route_expires ' );
}
public function getRedirectUrlAttribute (): string
{
return config ( ' laravel-passwordless-login.redirect_on_success ' );
}
}
Si está utilizando el rasgo de PasswordLessLogin, puede generar un enlace utilizando los valores predeterminados definidos en el rasgo simplemente llamando createPasswordlessLoginLink()
en el usuario que desea iniciar sesión.
El mayor error que pude ver que alguien cometiera con este paquete es crear un enlace de inicio de sesión para un usuario y enviarlo a otro. Tenga cuidado y pruebe su código. No quiero que nadie se enoje conmigo por la tontería de otra persona.
Puede publicar el archivo de configuración o simplemente establecer los valores que desea usar en su archivo .env:
LPL_USER_MODEL = AppUser
LPL_REMEMBER_LOGIN = false
LPL_LOGIN_ROUTE = /magic-login
LPL_LOGIN_ROUTE_NAME = magic-login
LPL_LOGIN_ROUTE_EXPIRES = 30
LPL_REDIRECT_ON_LOGIN = /
LPL_USER_GUARD = web
LPL_USE_ONCE = false
LPL_INVALID_SIGNATURE_MESSAGE = " Expired or Invalid Link "
LPL_USER_MODEL
es el modelo autenticativo en el que está iniciando sesión (generalmente App User)
LPL_REMEMBER_LOGIN
es si desea recordar el inicio de sesión (como la verificación del usuario, recuerdeme)
LPL_LOGIN_ROUTE
es la ruta que apunta a la función de inicio de sesión que proporciona este paquete. Asegúrese de no chocar con una de sus otras rutas.
LPL_LOGIN_ROUTE_NAME
es el nombre del LPL_LOGIN_ROUTE. Una vez más, asegúrese de que no colisione con ninguno de sus nombres de ruta existentes.
LPL_LOGIN_ROUTE_EXPIRES
es la cantidad de minutos para el que desea que el enlace sea bueno. Le recomiendo que establezca el valor más corto que tiene sentido para su caso de uso.
LPL_REDIRECT_ON_LOGIN
es donde desea enviar al usuario después de haber iniciado sesión haciendo clic en su enlace mágico.
LPL_USE_ONCE
es si desea que un enlace expire después del primer uso (usa caché para almacenar enlaces usados)
LPL_INVALID_SIGNATURE_MESSAGE
es un mensaje personalizado enviado cuando abortamos con un estado 401 en un enlace no válido o caducado. También puede agregar una lógica personalizada sobre cómo lidiar con enlaces no válidos o caducados manejando InvalidSignatureException
y ExpiredSignatureException
en su archivo Handler.php
.
Para problemas de seguridad, envíeme un correo electrónico directamente a [email protected]. Para cualquier otro problema, use el rastreador de problemas aquí.
Agradezco la ayuda de la comunidad para mejorar y mantener todos mis paquetes. Solo sean amables el uno con el otro. Recuerde que todos estamos tratando de hacer nuestro mejor esfuerzo.