إعادة تعيين كلمات المرور في Laravel
مقدمة
تريد أن تبدأ بسرعة؟ فقط نفذ الأمر php artisan make:auth
في تطبيق Laravel جديد وانتقل بالمتصفح إلى الرابط http://your-app.test/register أو أي رابط URL آخر عيّن لتطبيقك. سيهتم هذا الأمر بنظام الاستيثاق بأكمله، بما في ذلك إعادة تعيين كلمات المرور!
توفر معظم تطبيقات الويب للمستخدمين طريقة لإعادة تعيين كلمات المرور المنسية. بدلًا من إجبارك على إعادة برمجة ذلك في كل تطبيق، يوفر Laravel طرقًا ملائمة لإرسال رسائل تذكير بكلمات المرور وإجراء عمليات إعادة تعيين كلمة المرور.
قبل استخدام ميزات إعادة تعيين كلمة المرور في Laravel، يجب على المستخدم استخدام السمة Illuminate\Notifications\Notifiable
.
اعتبارات قاعدة البيانات
للبدء، تحقق من أن النموذج App\User
الخاص بك ينفذ االسمة Illuminate\Contracts\Auth\CanResetPassword
. بالطبع، فإن نموذج App\User
المتضمن مع إطار العمل، ينفذ هذه الواجهة مسبقًا، ويستخدم عقد Illuminate\Auth\Passwords\CanResetPassword
لتضمين الدوال اللازمة لتطبيق الواجهة.
توليد رمز إعادة تعيين جدول الترحيل
بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن الترحيل لهذا الجدول مع Laravel افتراضيًا دون حاجة إلى تثبيت أي شيء، وتوجد في ملف database\migrations
. لذا، كل ما عليك فعله هو تشغيل أمر ترحيل قاعدة البيانات :
php artisan migrate
تعيين المسار
يتضمن Laravel وحدتا التحكم Auth\ForgotPasswordController
و Auth\ResetPasswordController
اللتان تحتويان على المنطق الضروري لإرسال روابط إعادة تعيين كلمة المرور ولإعادة تعيينها من قبل المستخدم. كل المسارات التي تحتاج إليها لإعادة تعيين كلمات المرور يمكن إنشاؤها عن طريق الأمر:
php artisan make:auth
الواجهات
مرة أخرى، ينشئ Laravel كل الواجهات الضرورية لإعادة تعيين كلمة المرور عند تنفيذ الأمر make:auth
. توضع هذه الواجهات في resources/views/auth/passwords
. أنت حر في تخصيصها حسب حاجة تطبيقك.
بعد إعادة تعيين كلمات المرور
بمجرد تحديد المسارات والواجهات لإعادة تعيين كلمات مرور المستخدم عبر المتصفح، يمكنك الوصول إلى المسار password/reset
.
تمتلك وحدة التحكم ForgotPasswordController
المتضمنة مع إطار العمل، المنطق لإرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني، في حين تتضمن وحدة التحكم ResetPasswordController
المنطق لإعادة تعيين كلمات مرور المستخدم.
بعد إعادة تعيين كلمة المرور، سيسجل دخول المستخدم تلقائيًا إلى التطبيق ويعاد توجيهه إلى /home. يمكنك تخصيص موقع ما بعد إعادة تعيين كلمة المرور من خلال تحديد خاصية redirectTo
في وحدة التحكم ResetPasswordController
:
Protected $redirectTo = ‘/dashboard’;
تنتهي صلاحية رموز إعادة تعيين كلمة المرور تلقائيًا بعد ساعة. يمكنك التحكم في مدتها عن طريق خاصية انتهاء صلاحية إعادة تعيين كلمة المرور في الملف config/auth.php.
التخصيص
تخصيص حارس الاستيثاق
في ملف الإعدادات auth.php
، يمكنك إعداد العديد من "الحراس"، والذي يمكن استخدامهم لتحديد سلوك الاستيثاق للعديد من جداول المستخدم. يمكنك تخصيص وحدة التحكم ResetPasswordController
المتضمنة، لاستخدام حارس من اختيارك عن طريق إعادة تعيين تابع الحارس في وحدة التحكم. يعيد هذا التابع امتدادًا لحارس:
use Illuminate\Support\Facades\Auth;
protected function guard()
{
return Auth::guard('guard-name');
}
تخصيص وسيط كلمة المرور
في ملف الإعدادات auth.php
، يمكنك إعداد العديد من "وسائط" كلمة المرور، والتي يمكن أن تستخدم لإعادة تعيين كلمات المرور للعديد من جداول المستخدم. يمكنك تخصيص وحدتا التحكم ForgotPasswordController
و ResetPasswordController
لاستخدام وسيط من اختيارك عن طريق إعادة تعيين تابع الوسيط:
use Illuminate\Support\Facades\Password;
/**
* يرجع الوسيط المستخدم في عملية إعادة تعيين كلمة المرور.
* @يعيد PasswordBroker
*/
protected function broker()
{
return Password::broker('name');
}
تخصيص إعادة تعيين البريد الإلكتروني
يمكنك بسهولة تعديل صنف الإشعارات المستخدَم لإرسال رابط إعادة تعيين كلمة المرور إلى المستخدِم. بداية، أعد تعيين التابع sendPasswordResetNotification
في نموذج المستخدم. ضمن هذا التابع، يمكنك إرسال الإشعار باستخدام أي صنف من الإشعارات تختاره. رمز إعادة تعيين كلمة المرور $token
هو أول معامل للتابع:
/**
* إرسال إشعار بإعادة تعيين كلمة المرور.
* @المدخلات$token سلسلة حرفية
* @يعيد فراغ
*/
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}