الفرق بين المراجعتين لصفحة: «Laravel/passwords»
أنشأ الصفحة ب' <noinclude>{{DISPLAYTITLE:إعادة تعيين كلمات المرور في Laravel}}</noinclude> == المقدمة == تريد أن تبدأ بسرعة؟ فقط نف...' |
إنشاء صفحة إعادة تعيين كلمات المرور في Laravel |
||
سطر 3: | سطر 3: | ||
== المقدمة == | == المقدمة == | ||
تريد أن تبدأ بسرعة؟ فقط نفذ الأمر php artisan make:auth في تطبيق Laravel جديد وانتقل بالمتصفح إلى الرابط <nowiki>http://your-app.test/register</nowiki> أو أي رابط URL آخر عيّن لتطبيقك. سيهتم هذا الأمر بنظام الاستيثاق بأكمله، بما في ذلك إعادة تعيين كلمات المرور! | تريد أن تبدأ بسرعة؟ فقط نفذ الأمر <code>php artisan make:auth</code> في تطبيق Laravel جديد وانتقل بالمتصفح إلى الرابط <nowiki>http://your-app.test/register</nowiki> أو أي رابط URL آخر عيّن لتطبيقك. سيهتم هذا الأمر بنظام الاستيثاق بأكمله، بما في ذلك إعادة تعيين كلمات المرور! | ||
توفر معظم تطبيقات الويب للمستخدمين طريقة لإعادة تعيين كلمات المرور المنسية. بدلًا من إجبارك على إعادة برمجة ذلك في كل تطبيق، يوفر Laravel طرقًا ملائمة لإرسال رسائل تذكير بكلمات المرور وإجراء عمليات إعادة تعيين كلمة المرور. | توفر معظم تطبيقات الويب للمستخدمين طريقة لإعادة تعيين كلمات المرور المنسية. بدلًا من إجبارك على إعادة برمجة ذلك في كل تطبيق، يوفر Laravel طرقًا ملائمة لإرسال رسائل تذكير بكلمات المرور وإجراء عمليات إعادة تعيين كلمة المرور. | ||
قبل استخدام ميزات إعادة تعيين كلمة المرور في Laravel، يجب على المستخدم استخدام السمة Illuminate\Notifications\Notifiable. | قبل استخدام ميزات إعادة تعيين كلمة المرور في Laravel، يجب على المستخدم استخدام السمة <code>Illuminate\Notifications\Notifiable</code>. | ||
== اعتبارات قاعدة البيانات == | == اعتبارات قاعدة البيانات == | ||
للبدء، تحقق من أن النموذج App\User الخاص بك ينفذ االسمة Illuminate\Contracts\Auth\CanResetPassword. بالطبع، فإن نموذج App\User المتضمن مع إطار العمل، ينفذ هذه الواجهة مسبقًا، ويستخدم عقد Illuminate\Auth\Passwords\CanResetPassword لتضمين الدوال اللازمة لتطبيق الواجهة. | للبدء، تحقق من أن النموذج App\User الخاص بك ينفذ االسمة <code>Illuminate\Contracts\Auth\CanResetPassword</code>. بالطبع، فإن نموذج App\User المتضمن مع إطار العمل، ينفذ هذه الواجهة مسبقًا، ويستخدم عقد <code>Illuminate\Auth\Passwords\CanResetPassword</code> لتضمين الدوال اللازمة لتطبيق الواجهة. | ||
=== توليد رمز إعادة تعيين جدول الترحيل === | === توليد رمز إعادة تعيين جدول الترحيل === | ||
بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن الترحيل لهذا الجدول مع Laravel افتراضيًا دون حاجة إلى تثبيت أي شيء، وتوجد في ملف database | بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن الترحيل لهذا الجدول مع Laravel افتراضيًا دون حاجة إلى تثبيت أي شيء، وتوجد في ملف database\migrations. لذا، كل ما عليك فعله هو تشغيل أمر ترحيل قاعدة البيانات : <syntaxhighlight lang="php"> | ||
php artisan migrate | php artisan migrate | ||
</syntaxhighlight> | |||
== تعيين المسار == | == تعيين المسار == | ||
يتضمن Laravel وحدتا التحكم Auth\ForgotPasswordController و Auth\ResetPasswordController اللتان تحتويان على المنطق الضروري لإرسال روابط إعادة تعيين كلمة المرور ولإعادة تعيينها من قبل المستخدم. كل المسارات التي تحتاج إليها لإعادة تعيين كلمات المرور يمكن إنشاؤها عن طريق الأمر: | يتضمن Laravel وحدتا التحكم <code>Auth\ForgotPasswordController</code> و <code>Auth\ResetPasswordController</code> اللتان تحتويان على المنطق الضروري لإرسال روابط إعادة تعيين كلمة المرور ولإعادة تعيينها من قبل المستخدم. كل المسارات التي تحتاج إليها لإعادة تعيين كلمات المرور يمكن إنشاؤها عن طريق الأمر:<syntaxhighlight lang="php"> | ||
php artisan make:auth | php artisan make:auth | ||
</syntaxhighlight> | |||
== الواجهات == | == الواجهات == | ||
مرة أخرى، ينشئ Laravel كل الواجهات الضرورية لإعادة تعيين كلمة المرور عند تنفيذ الأمر make:auth. توضع هذه الواجهات في resources/views/auth/passwords. أنت حر في تخصيصها حسب حاجة تطبيقك. | مرة أخرى، ينشئ Laravel كل الواجهات الضرورية لإعادة تعيين كلمة المرور عند تنفيذ الأمر <code>make:auth</code>. توضع هذه الواجهات في <code>resources/views/auth/passwords</code>. أنت حر في تخصيصها حسب حاجة تطبيقك. | ||
== بعد إعادة تعيين كلمات المرور == | == بعد إعادة تعيين كلمات المرور == | ||
بمجرد تحديد المسارات والواجهات لإعادة تعيين كلمات مرور المستخدم عبر المتصفح، يمكنك الوصول إلى المسار | بمجرد تحديد المسارات والواجهات لإعادة تعيين كلمات مرور المستخدم عبر المتصفح، يمكنك الوصول إلى المسار <code>password/reset</code>. | ||
تمتلك وحدة التحكم <code>ForgotPasswordController</code> المتضمنة مع إطار العمل، المنطق لإرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني، في حين تتضمن وحدة التحكم <code>ResetPasswordController</code> المنطق لإعادة تعيين كلمات مرور المستخدم. | |||
بعد إعادة تعيين كلمة المرور، سيسجل دخول المستخدم تلقائيًا إلى التطبيق ويعاد توجيهه إلى /home. يمكنك تخصيص موقع ما بعد إعادة تعيين كلمة المرور من خلال تحديد خاصية <code>redirectTo</code> في وحدة التحكم <code>ResetPasswordController</code> :<syntaxhighlight lang="php"> | |||
Protected $redirectTo = ‘/dashboard’; | Protected $redirectTo = ‘/dashboard’; | ||
</syntaxhighlight> | |||
تنتهي صلاحية رموز إعادة تعيين كلمة المرور تلقائيًا بعد ساعة. يمكنك التحكم في مدتها عن طريق خاصية انتهاء صلاحية إعادة تعيين كلمة المرور في الملف config/auth.php. | تنتهي صلاحية رموز إعادة تعيين كلمة المرور تلقائيًا بعد ساعة. يمكنك التحكم في مدتها عن طريق خاصية انتهاء صلاحية إعادة تعيين كلمة المرور في الملف config/auth.php. | ||
سطر 39: | سطر 39: | ||
=== تخصيص حارس الاستيثاق === | === تخصيص حارس الاستيثاق === | ||
في ملف الإعدادات auth.php، يمكنك إعداد العديد من "الحراس"، والذي يمكن استخدامهم لتحديد سلوك الاستيثاق للعديد من جداول المستخدم. يمكنك تخصيص وحدة التحكم ResetPasswordController المتضمنة، لاستخدام حارس من اختيارك عن طريق إعادة تعيين تابع الحارس في وحدة التحكم. يعيد هذا التابع امتدادًا لحارس: | في ملف الإعدادات auth.php، يمكنك إعداد العديد من "الحراس"، والذي يمكن استخدامهم لتحديد سلوك الاستيثاق للعديد من جداول المستخدم. يمكنك تخصيص وحدة التحكم <code>ResetPasswordController</code> المتضمنة، لاستخدام حارس من اختيارك عن طريق إعادة تعيين تابع الحارس في وحدة التحكم. يعيد هذا التابع امتدادًا لحارس:<syntaxhighlight lang="php"> | ||
use Illuminate\Support\Facades\Auth; | use Illuminate\Support\Facades\Auth; | ||
سطر 50: | سطر 49: | ||
} | } | ||
</syntaxhighlight> | |||
=== تخصيص وسيط كلمة المرور === | === تخصيص وسيط كلمة المرور === | ||
في ملف الإعدادات auth.php، يمكنك إعداد العديد من "وسائط" كلمة المرور، والتي يمكن أن تستخدم لإعادة تعيين كلمات المرور للعديد من جداول المستخدم. يمكنك تخصيص وحدتا التحكم ForgotPasswordController و ResetPasswordController لاستخدام وسيط من اختيارك عن طريق إعادة تعيين تابع الوسيط: | في ملف الإعدادات auth.php، يمكنك إعداد العديد من "وسائط" كلمة المرور، والتي يمكن أن تستخدم لإعادة تعيين كلمات المرور للعديد من جداول المستخدم. يمكنك تخصيص وحدتا التحكم <code>ForgotPasswordController</code> و <code>ResetPasswordController</code> لاستخدام وسيط من اختيارك عن طريق إعادة تعيين تابع الوسيط:<syntaxhighlight lang="php"> | ||
use Illuminate\Support\Facades\Password; | use Illuminate\Support\Facades\Password; | ||
/** | /** | ||
* يرجع الوسيط المستخدم في عملية إعادة تعيين كلمة المرور. | |||
* | |||
* @يعيد PasswordBroker | |||
*/ | |||
protected function broker() | protected function broker() | ||
سطر 73: | سطر 74: | ||
} | } | ||
</syntaxhighlight> | |||
=== تخصيص إعادة تعيين البريد الإلكتروني === | === تخصيص إعادة تعيين البريد الإلكتروني === | ||
يمكنك بسهولة تعديل صنف الإشعارات المستخدَم لإرسال رابط إعادة تعيين كلمة المرور إلى المستخدِم. بداية، أعد تعيين التابع sendPasswordResetNotification في نموذج المستخدم. ضمن هذا التابع، يمكنك إرسال الإشعار باستخدام أي صنف من الإشعارات تختاره. رمز إعادة تعيين كلمة المرور $token هو أول معامل للتابع: | يمكنك بسهولة تعديل صنف الإشعارات المستخدَم لإرسال رابط إعادة تعيين كلمة المرور إلى المستخدِم. بداية، أعد تعيين التابع <code>sendPasswordResetNotification</code> في نموذج المستخدم. ضمن هذا التابع، يمكنك إرسال الإشعار باستخدام أي صنف من الإشعارات تختاره. رمز إعادة تعيين كلمة المرور <code>$token</code> هو أول معامل للتابع:<syntaxhighlight lang="php"> | ||
/** | /** | ||
* إرسال إشعار بإعادة تعيين كلمة المرور. | |||
* | |||
* @المدخلات$token سلسلة حرفية | * @المدخلات$token سلسلة حرفية | ||
* @يعيد فراغ | |||
*/ | |||
public function sendPasswordResetNotification($token) | public function sendPasswordResetNotification($token) | ||
سطر 96: | سطر 99: | ||
} | } | ||
</syntaxhighlight> | |||
== مصادر == | == مصادر == | ||
* صفحة Resetting passwords في توثيق Laravel الرسمي. | * [https://laravel.com/docs/5.6/passwords صفحة Resetting passwords في توثيق Laravel الرسمي.] |
مراجعة 18:30، 30 سبتمبر 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));
}