توفر هذه الحزمة مسارًا مؤقتًا موقّعًا يسجل في المستخدم. ما لا يوفره هو وسيلة لإرسال الرابط إلى المسار إلى المستخدم فعليًا. هذا لأنني لا أرغب في وضع أي افتراضات حول كيفية التواصل مع المستخدمين.
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
}
نظرًا لأن بعض المواقع لديها أكثر من نموذج من نوع المستخدم (المستخدمون ، والمطربين ، وما إلى ذلك) ، يمكنك استخدام سمة لإعداد التكوينات الافتراضية لكل نوع مستخدم. يتم توفير الأساليب أدناه من خلال السمة ، لذلك تحتاج فقط إلى تضمين تلك التي تريد استخدام قيمة مختلفة.
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 ' );
}
}
إذا كنت تستخدم سمة PassworllessLogin ، فيمكنك إنشاء رابط باستخدام الإعدادات الافتراضية المحددة في السمة بمجرد استدعاء createPasswordlessLoginLink()
على المستخدم الذي تريد تسجيل الدخول.
أكبر خطأ يمكن أن أرى فيه شخصًا يصنع مع هذه الحزمة هو إنشاء رابط تسجيل الدخول لمستخدم واحد وإرساله إلى آخر. يرجى توخي الحذر واختبار الرمز الخاص بك. لا أريد أن يغضب أي شخص مني بسبب سخافة شخص آخر.
يمكنك نشر ملف التكوين أو فقط تعيين القيم التي تريد استخدامها في ملف .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
هو النموذج المصادق الذي تقوم بتسجيل الدخول إليه (عادةً ما يكون التطبيق user)
LPL_REMEMBER_LOGIN
هو ما إذا كنت تريد تذكر تسجيل الدخول (مثل التحقق من المستخدم تذكرني)
LPL_LOGIN_ROUTE
هو المسار الذي يشير إلى وظيفة تسجيل الدخول التي توفرها هذه الحزمة. تأكد من أنك لا تصطدم بأحد طرقك الأخرى.
LPL_LOGIN_ROUTE_NAME
هو اسم lpl_login_route. مرة أخرى ، تأكد من أنه لا يصطدم بأي من أسماء المسار الموجودة لديك.
LPL_LOGIN_ROUTE_EXPIRES
هو عدد الدقائق التي تريد أن يكون الرابط مفيدًا له. أوصيك بتعيين أقصر قيمة أمر منطقي لحالة الاستخدام الخاصة بك.
LPL_REDIRECT_ON_LOGIN
هو المكان الذي تريد إرساله للمستخدم بعد تسجيل الدخول من خلال النقر على الرابط السحري الخاص بهم.
LPL_USE_ONCE
هو ما إذا كنت تريد أن تنتهي صلاحية رابط بعد الاستخدام الأول (يستخدم ذاكرة التخزين المؤقت لتخزين الروابط المستخدمة)
LPL_INVALID_SIGNATURE_MESSAGE
هي رسالة مخصصة تم إرسالها عند الإجهاض مع حالة 401 على ارتباط غير صالح أو منتهية الصلاحية. يمكنك أيضًا إضافة بعض المنطق المخصص لكيفية التعامل مع الروابط غير الصالحة أو المنتهية من خلال التعامل مع InvalidSignatureException
و ExpiredSignatureException
في ملف Handler.php
الخاص بك.
لقضايا الأمان ، يرجى مراسلتي عبر البريد الإلكتروني مباشرة على [email protected]. لأي مشاكل أخرى ، استخدم متتبع القضية هنا.
أرحب بمساعدة المجتمع في تحسين جميع حزماتي والحفاظ عليها. فقط كن لطيفا مع بعضنا البعض. تذكر أننا جميعًا نحاول فقط بذل قصارى جهدنا.