الفرق بين المراجعتين ل"Laravel/passwords"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب' <noinclude>{{DISPLAYTITLE:إعادة تعيين كلمات المرور في Laravel}}</noinclude> == المقدمة == تريد أن تبدأ بسرعة؟ فقط نف...')
 
 
(7 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 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 آخر عيّن لتطبيقك. سيهتم هذا الأمر بنظام الاستيثاق بأكمله، بما في ذلك إعادة تعيين كلمات المرور!
== المقدمة ==
 
تريد أن تبدأ بسرعة؟ فقط نفذ الأمر php artisan make:auth في تطبيق 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 لتضمين الدوال اللازمة لتطبيق الواجهة.
+
للبدء، تحقق من أن النموذج <code>App\User</code> الخاص بك ينفذ االسمة <code>Illuminate\Contracts\Auth\CanResetPassword</code>. بالطبع، فإن نموذج <code>App\User</code> المتضمن مع إطار العمل، ينفذ هذه الواجهة مسبقًا، ويستخدم عقد <code>Illuminate\Auth\Passwords\CanResetPassword</code> لتضمين الدوال اللازمة لتطبيق الواجهة.
 
 
=== توليد رمز إعادة تعيين جدول الترحيل ===
 
بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن الترحيل لهذا الجدول مع Laravel افتراضيًا دون حاجة إلى تثبيت أي شيء، وتوجد في ملف database/\migrations. لذا، كل ما عليك فعله هو تشغيل أمر ترحيل قاعدة البيانات:
 
  
 +
=== توليد رمز إعادة تعيين جدول التهجير ===
 +
بعد ذلك، يجب إنشاء جدول لتخزين الرموز المميزة لإعادة تعيين كلمة المرور. يضمن التهجير لهذا الجدول مع Laravel افتراضيًا دون حاجة إلى تثبيت أي شيء، وتوجد في ملف <code>database\migrations</code>. لذا، كل ما عليك فعله هو تشغيل أمر تهجير قاعدة البيانات : <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. أنت حر في تخصيصها حسب حاجة تطبيقك.
+
مرة أخرى، ينشئ  <nowiki/>[[Laravel]] كل الواجهات الضرورية لإعادة تعيين كلمة المرور عند تنفيذ الأمر <code>make:auth</code>. توضع هذه الواجهات في <code>resources/views/auth/passwords</code>. أنت حر في تخصيصها حسب حاجة تطبيقك.
  
 
== بعد إعادة تعيين كلمات المرور ==
 
== بعد إعادة تعيين كلمات المرور ==
بمجرد تحديد المسارات والواجهات لإعادة تعيين كلمات مرور المستخدم عبر المتصفح، يمكنك الوصول إلى المسار ‎/password/reset.
+
بمجرد تحديد المسارات والواجهات لإعادة تعيين كلمات مرور المستخدم عبر المتصفح، يمكنك الوصول إلى المسار <code>password/reset</code>.
  
تمتلك وحدة التحكم ForgotPasswordController المتضمنة مع إطار العمل، المنطق لإرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني، في حين تتضمن وحدة التحكم ResetPasswordController المنطق لإعادة تعيين كلمات مرور المستخدم.
+
تمتلك وحدة التحكم <code>ForgotPasswordController</code> المتضمنة مع إطار العمل، المنطق لإرسال رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني، في حين تتضمن وحدة التحكم <code>ResetPasswordController</code> المنطق لإعادة تعيين كلمات مرور المستخدم.
 
 
بعد إعادة تعيين كلمة المرور، سيسجل دخول المستخدم تلقائيًا إلى التطبيق ويعاد توجيهه إلى ‎/home. يمكنك تخصيص موقع ما بعد إعادة تعيين كلمة المرور من خلال تحديد خاصية redirectTo في وحدة التحكم ResetPasswordController :
 
  
 +
بعد إعادة تعيين كلمة المرور، سيسجل دخول المستخدم تلقائيًا إلى التطبيق ويعاد توجيهه إلى ‎/home. يمكنك تخصيص موقع ما بعد إعادة تعيين كلمة المرور من خلال تحديد خاصية <code>redirectTo</code> في وحدة التحكم <code>ResetPasswordController</code> :<syntaxhighlight lang="php">
 
Protected $redirectTo = ‘/dashboard’;
 
Protected $redirectTo = ‘/dashboard’;
 +
</syntaxhighlight>
  
 
تنتهي صلاحية رموز إعادة تعيين كلمة المرور تلقائيًا بعد ساعة. يمكنك التحكم في مدتها عن طريق خاصية انتهاء صلاحية إعادة تعيين كلمة المرور في الملف config/auth.php.
 
تنتهي صلاحية رموز إعادة تعيين كلمة المرور تلقائيًا بعد ساعة. يمكنك التحكم في مدتها عن طريق خاصية انتهاء صلاحية إعادة تعيين كلمة المرور في الملف config/auth.php.
سطر 39: سطر 37:
  
 
=== تخصيص حارس الاستيثاق ===
 
=== تخصيص حارس الاستيثاق ===
في ملف الإعدادات auth.php، يمكنك إعداد العديد من "الحراس"، والذي يمكن استخدامهم لتحديد سلوك الاستيثاق للعديد من جداول المستخدم. يمكنك تخصيص وحدة التحكم ResetPasswordController المتضمنة، لاستخدام حارس من اختيارك عن طريق إعادة تعيين تابع الحارس في وحدة التحكم. يعيد هذا التابع امتدادًا لحارس:
+
في ملف الإعدادات <code>auth.php</code>، يمكنك إعداد العديد من "الحراس"، والذي يمكن استخدامهم لتحديد سلوك الاستيثاق للعديد من جداول المستخدم. يمكنك تخصيص وحدة التحكم <code>ResetPasswordController</code> المتضمنة، لاستخدام حارس من اختيارك عن طريق إعادة تعيين تابع الحارس في وحدة التحكم. يعيد هذا التابع امتدادًا لحارس:<syntaxhighlight lang="php">
 
 
 
use Illuminate\Support\Facades\Auth;
 
use Illuminate\Support\Facades\Auth;
  
سطر 46: سطر 43:
  
 
{
 
{
 +
   return Auth::guard('guard-name');
 +
}
  
   return Auth::guard('guard-name');
 
  
}
+
</syntaxhighlight>
  
 
=== تخصيص وسيط كلمة المرور ===
 
=== تخصيص وسيط كلمة المرور ===
في ملف الإعدادات auth.php، يمكنك إعداد العديد من "وسائط" كلمة المرور، والتي يمكن أن تستخدم لإعادة تعيين كلمات المرور للعديد من جداول المستخدم. يمكنك تخصيص وحدتا التحكم ForgotPasswordController و ResetPasswordController لاستخدام وسيط من اختيارك عن طريق إعادة تعيين تابع الوسيط:
+
في ملف الإعدادات <code>auth.php</code>، يمكنك إعداد العديد من "وسائط" كلمة المرور، والتي يمكن أن تستخدم لإعادة تعيين كلمات المرور للعديد من جداول المستخدم. يمكنك تخصيص وحدتا التحكم <code>ForgotPasswordController</code> و <code>ResetPasswordController</code> لاستخدام وسيط من اختيارك عن طريق إعادة تعيين تابع الوسيط:<syntaxhighlight lang="php">
 
 
 
use Illuminate\Support\Facades\Password;
 
use Illuminate\Support\Facades\Password;
  
 
/**
 
/**
 
+
* يرجع الوسيط المستخدم في عملية إعادة تعيين كلمة المرور.
<nowiki>*</nowiki> يرجع الوسيط المستخدم في عملية إعادة تعيين كلمة المرور.
+
* @يعيد PasswordBroker
 
+
*/
<nowiki>*</nowiki>
 
 
 
<nowiki>*</nowiki> @يعيد PasswordBroker
 
 
 
<nowiki>*</nowiki>/
 
  
 
protected function broker()
 
protected function broker()
  
 
{
 
{
 +
   return Password::broker('name');
 +
}
  
   return Password::broker('name');
 
  
}
+
</syntaxhighlight>
  
 
=== تخصيص إعادة تعيين البريد الإلكتروني ===
 
=== تخصيص إعادة تعيين البريد الإلكتروني ===
يمكنك بسهولة تعديل صنف الإشعارات المستخدَم لإرسال رابط إعادة تعيين كلمة المرور إلى المستخدِم. بداية، أعد تعيين التابع sendPasswordResetNotification في نموذج المستخدم. ضمن هذا التابع، يمكنك إرسال الإشعار باستخدام أي صنف من الإشعارات تختاره. رمز إعادة تعيين كلمة المرور ‎$token هو أول معامل للتابع:
+
يمكنك بسهولة تعديل صنف الإشعارات المستخدَم لإرسال رابط إعادة تعيين كلمة المرور إلى المستخدِم. بداية، أعد تعيين التابع <code>sendPasswordResetNotification</code> في نموذج المستخدم. ضمن هذا التابع، يمكنك إرسال الإشعار باستخدام أي صنف من الإشعارات تختاره. رمز إعادة تعيين كلمة المرور ‎<code>$token</code> هو أول معامل للتابع:<syntaxhighlight lang="php">
 
 
 
/**
 
/**
  
<nowiki>*</nowiki> إرسال إشعار بإعادة تعيين كلمة المرور.
+
* إرسال إشعار بإعادة تعيين كلمة المرور.
 
 
<nowiki>*</nowiki>
 
 
 
 
‎* @المدخلات$token سلسلة حرفية
 
‎* @المدخلات$token سلسلة حرفية
 +
* @يعيد فراغ
  
<nowiki>*</nowiki> @يعيد فراغ
+
*/
 
 
<nowiki>*</nowiki>/
 
  
 
public function sendPasswordResetNotification($token)
 
public function sendPasswordResetNotification($token)
  
 
{
 
{
 +
   $this->notify(new ResetPasswordNotification($token));
 +
}
  
   $this->notify(new ResetPasswordNotification($token));
 
  
}
+
</syntaxhighlight>
  
 
== مصادر ==
 
== مصادر ==
* صفحة 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));
}

مصادر