Paket ini menyediakan rute yang ditandatangani sementara yang masuk pengguna. Apa yang tidak disediakannya adalah cara untuk benar -benar mengirim tautan ke rute ke pengguna. Ini karena saya tidak ingin membuat asumsi tentang bagaimana Anda berkomunikasi dengan pengguna Anda.
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
}
Karena beberapa situs memiliki lebih dari satu model tipe pengguna (pengguna, admin, dll.), Anda dapat menggunakan sifat untuk mengatur konfigurasi default untuk setiap jenis pengguna. Metode di bawah ini disediakan oleh sifat, jadi Anda hanya perlu memasukkan yang Anda ingin menggunakan nilai yang berbeda.
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 ' );
}
}
Jika Anda menggunakan sifat tanpa kata sandi, Anda dapat menghasilkan tautan menggunakan default yang ditentukan dalam sifat dengan hanya memanggil createPasswordlessLoginLink()
pada pengguna yang ingin Anda masuk.
Kesalahan terbesar yang saya bisa melihat seseorang membuat dengan paket ini adalah membuat tautan login untuk satu pengguna dan mengirimkannya ke yang lain. Harap berhati -hati dan uji kode Anda. Saya tidak ingin ada orang yang marah pada saya karena kekonyolan orang lain.
Anda dapat mempublikasikan file konfigurasi atau hanya mengatur nilai yang ingin Anda gunakan di file .env Anda:
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
adalah model authenticatable yang Anda masuki (biasanya aplikasi pengguna)
LPL_REMEMBER_LOGIN
adalah apakah Anda ingin mengingat login (seperti pengecekan pengguna ingat saya)
LPL_LOGIN_ROUTE
adalah rute yang menunjuk ke fungsi login yang disediakan paket ini. Pastikan Anda tidak bertabrakan dengan salah satu rute Anda yang lain.
LPL_LOGIN_ROUTE_NAME
adalah nama LPL_LOGIN_ROUTE. Sekali lagi, pastikan itu tidak bertabrakan dengan nama rute Anda yang ada.
LPL_LOGIN_ROUTE_EXPIRES
adalah jumlah menit yang Anda inginkan untuk tautannya bagus. Saya sarankan Anda mengatur nilai terpendek yang masuk akal untuk kasus penggunaan Anda.
LPL_REDIRECT_ON_LOGIN
adalah tempat Anda ingin mengirim pengguna setelah mereka masuk dengan mengklik tautan ajaib mereka.
LPL_USE_ONCE
adalah apakah Anda ingin tautan berakhir setelah penggunaan pertama (menggunakan cache untuk menyimpan tautan yang digunakan)
LPL_INVALID_SIGNATURE_MESSAGE
adalah pesan khusus yang dikirim ketika kami membatalkan dengan status 401 pada tautan yang tidak valid atau kedaluwarsa. Anda juga dapat menambahkan beberapa logika khusus tentang cara menangani tautan yang tidak valid atau kedaluwarsa dengan menangani InvalidSignatureException
dan ExpiredSignatureException
di file Handler.php
Anda.
Untuk masalah keamanan, silakan email saya langsung di [email protected]. Untuk masalah lain, gunakan pelacak masalah di sini.
Saya menyambut bantuan komunitas dengan meningkatkan dan memelihara semua paket saya. Bersikaplah baik satu sama lain. Ingatlah kita semua hanya mencoba melakukan yang terbaik.