Este pacote fornece uma rota assinada temporária que registra um usuário. O que não fornece é uma maneira de realmente enviar o link para a rota para o usuário. Isso ocorre porque não quero fazer suposições sobre como você se comunica com seus usuários.
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
}
Como alguns sites têm mais de um modelo do tipo usuário (usuários, administradores etc.), você pode usar uma característica para configurar as configurações padrão para cada tipo de usuário. Os métodos abaixo são fornecidos pela característica, portanto, você só precisa incluir os para os quais deseja usar um 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 ' );
}
}
Se você estiver usando o traço de login de senha, poderá gerar um link usando os padrões definidos na característica, simplesmente chamando createPasswordlessLoginLink()
no usuário que deseja fazer login.
O maior erro que eu pude ver alguém cometendo com este pacote é criar um link de login para um usuário e enviá -lo para outro. Tenha cuidado e teste seu código. Não quero que ninguém fique bravo comigo pela bobagem de outra pessoa.
Você pode publicar o arquivo de configuração ou apenas definir os valores que deseja usar no seu arquivo .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
é o modelo autenticável que você está fazendo login (geralmente app user)
LPL_REMEMBER_LOGIN
é se você deseja se lembrar do login (como a verificação do usuário Lembre -se de mim)
LPL_LOGIN_ROUTE
é a rota que aponta para a função de login que este pacote fornece. Certifique -se de não colidir com uma de suas outras rotas.
LPL_LOGIN_ROUTE_NAME
é o nome do LPL_LOGIN_ROUTE. Novamente, verifique se não colide com nenhum dos nomes de rotas existentes.
LPL_LOGIN_ROUTE_EXPIRES
é o número de minutos para os quais você deseja que o link seja bom. Eu recomendo que você defina o valor mais curto que faz sentido para o seu caso de uso.
LPL_REDIRECT_ON_LOGIN
é para onde você deseja enviar o usuário depois que eles se conectaram clicando no link mágico.
LPL_USE_ONCE
é se você deseja que um link expire após o primeiro uso (usa o cache para armazenar links usados)
LPL_INVALID_SIGNATURE_MESSAGE
é uma mensagem personalizada enviada quando abortarmos com um status 401 em um link inválido ou expirado. Você também pode adicionar alguma lógica personalizada sobre como lidar com links inválidos ou expirados, manipulando InvalidSignatureException
e ExpiredSignatureException
em seu arquivo Handler.php
.
Para questões de segurança, envie -me um email diretamente para [email protected]. Para quaisquer outros problemas, use o rastreador de problemas aqui.
Congratulo -me com a ajuda da comunidade em melhorar e manter todos os meus pacotes. Apenas seja legal um com o outro. Lembre -se de que todos estamos apenas tentando fazer o nosso melhor.