الفرق بين المراجعتين لصفحة: «Laravel/passwords»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
(5 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:إعادة تعيين كلمات المرور (Password Reset) في Laravel}}</noinclude> | |||
<noinclude>{{DISPLAYTITLE:إعادة تعيين كلمات المرور في Laravel}}</noinclude> | |||
== مقدمة == | == مقدمة == | ||
تريد أن تبدأ بسرعة؟ فقط نفذ الأمر <code>php artisan make:auth</code> في تطبيق [[Laravel]] جديد وانتقل بالمتصفح إلى الرابط <nowiki>http://your-app.test/register</nowiki> أو أي رابط URL آخر عيّن لتطبيقك. سيهتم هذا الأمر بنظام الاستيثاق بأكمله، بما في ذلك إعادة تعيين كلمات المرور! | تريد أن تبدأ بسرعة؟ فقط نفذ الأمر <code>php artisan make:auth</code> في تطبيق [[Laravel]] جديد وانتقل بالمتصفح إلى الرابط <nowiki>http://your-app.test/register</nowiki> أو أي رابط URL آخر عيّن لتطبيقك. سيهتم هذا الأمر بنظام الاستيثاق بأكمله، بما في ذلك إعادة تعيين كلمات المرور! | ||
سطر 12: | سطر 10: | ||
للبدء، تحقق من أن النموذج <code>App\User</code> الخاص بك ينفذ االسمة <code>Illuminate\Contracts\Auth\CanResetPassword</code>. بالطبع، فإن نموذج <code>App\User</code> المتضمن مع إطار العمل، ينفذ هذه الواجهة مسبقًا، ويستخدم عقد <code>Illuminate\Auth\Passwords\CanResetPassword</code> لتضمين الدوال اللازمة لتطبيق الواجهة. | للبدء، تحقق من أن النموذج <code>App\User</code> الخاص بك ينفذ االسمة <code>Illuminate\Contracts\Auth\CanResetPassword</code>. بالطبع، فإن نموذج <code>App\User</code> المتضمن مع إطار العمل، ينفذ هذه الواجهة مسبقًا، ويستخدم عقد <code>Illuminate\Auth\Passwords\CanResetPassword</code> لتضمين الدوال اللازمة لتطبيق الواجهة. | ||
=== توليد رمز إعادة تعيين جدول | === توليد رمز إعادة تعيين جدول التهجير === | ||
بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن | بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن التهجير لهذا الجدول مع Laravel افتراضيًا دون حاجة إلى تثبيت أي شيء، وتوجد في ملف <code>database\migrations</code>. لذا، كل ما عليك فعله هو تشغيل أمر تهجير قاعدة البيانات : <syntaxhighlight lang="php"> | ||
php artisan migrate | php artisan migrate | ||
</syntaxhighlight> | </syntaxhighlight> | ||
سطر 39: | سطر 37: | ||
=== تخصيص حارس الاستيثاق === | === تخصيص حارس الاستيثاق === | ||
في ملف الإعدادات auth. | في ملف الإعدادات <code>auth.php</code>، يمكنك إعداد العديد من "الحراس"، والذي يمكن استخدامهم لتحديد سلوك الاستيثاق للعديد من جداول المستخدم. يمكنك تخصيص وحدة التحكم <code>ResetPasswordController</code> المتضمنة، لاستخدام حارس من اختيارك عن طريق إعادة تعيين تابع الحارس في وحدة التحكم. يعيد هذا التابع امتدادًا لحارس:<syntaxhighlight lang="php"> | ||
use Illuminate\Support\Facades\Auth; | use Illuminate\Support\Facades\Auth; | ||
سطر 45: | سطر 43: | ||
{ | { | ||
return Auth::guard('guard-name'); | return Auth::guard('guard-name'); | ||
} | } | ||
سطر 54: | سطر 50: | ||
=== تخصيص وسيط كلمة المرور === | === تخصيص وسيط كلمة المرور === | ||
في ملف الإعدادات auth. | في ملف الإعدادات <code>auth.php</code>، يمكنك إعداد العديد من "وسائط" كلمة المرور، والتي يمكن أن تستخدم لإعادة تعيين كلمات المرور للعديد من جداول المستخدم. يمكنك تخصيص وحدتا التحكم <code>ForgotPasswordController</code> و <code>ResetPasswordController</code> لاستخدام وسيط من اختيارك عن طريق إعادة تعيين تابع الوسيط:<syntaxhighlight lang="php"> | ||
use Illuminate\Support\Facades\Password; | use Illuminate\Support\Facades\Password; | ||
/** | /** | ||
* يرجع الوسيط المستخدم في عملية إعادة تعيين كلمة المرور. | * يرجع الوسيط المستخدم في عملية إعادة تعيين كلمة المرور. | ||
* @يعيد PasswordBroker | * @يعيد PasswordBroker | ||
*/ | */ | ||
سطر 70: | سطر 61: | ||
{ | { | ||
return Password::broker('name'); | return Password::broker('name'); | ||
} | } | ||
سطر 83: | سطر 72: | ||
* إرسال إشعار بإعادة تعيين كلمة المرور. | * إرسال إشعار بإعادة تعيين كلمة المرور. | ||
* @المدخلات$token سلسلة حرفية | * @المدخلات$token سلسلة حرفية | ||
* @يعيد فراغ | * @يعيد فراغ | ||
سطر 95: | سطر 80: | ||
{ | { | ||
$this->notify(new ResetPasswordNotification($token)); | $this->notify(new ResetPasswordNotification($token)); | ||
} | } | ||
سطر 105: | سطر 88: | ||
== مصادر == | == مصادر == | ||
* [https://laravel.com/docs/5.6/passwords صفحة Resetting passwords في توثيق Laravel الرسمي.] | * [https://laravel.com/docs/5.6/passwords صفحة Resetting passwords في توثيق Laravel الرسمي.] | ||
[[تصنيف:Laravel|{{SUBPAGENAME}}]] | |||
[[تصنيف:Laravel Security|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 14:00، 24 أكتوبر 2018
مقدمة
تريد أن تبدأ بسرعة؟ فقط نفذ الأمر 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));
}